From fd06c94f01c7aa6aaa5eab26ac604ddb3d893302 Mon Sep 17 00:00:00 2001 From: Gaudenz Alder <gaudenz@jgraph.com> Date: Wed, 12 Feb 2020 12:55:20 +0100 Subject: [PATCH] 12.6.8 release --- ChangeLog | 6 + VERSION | 2 +- etc/build/build.xml | 18 +- etc/mxgraph/mxClient.js | 12 +- src/main/webapp/cache.manifest | 2 +- .../webapp/images/sidebar-leanmapping.png | Bin 11235 -> 12682 bytes src/main/webapp/index.html | 4 +- src/main/webapp/js/PreConfig.js | 5 +- src/main/webapp/js/app.min.js | 1392 +++++++++-------- src/main/webapp/js/diagramly/App.js | 4 +- src/main/webapp/js/diagramly/Devel.js | 11 +- src/main/webapp/js/diagramly/DrawioFile.js | 2 +- src/main/webapp/js/diagramly/Editor.js | 30 +- src/main/webapp/js/diagramly/EditorUi.js | 69 +- src/main/webapp/js/diagramly/GitHubClient.js | 13 +- src/main/webapp/js/diagramly/GitLabClient.js | 9 +- src/main/webapp/js/diagramly/Init.js | 3 +- src/main/webapp/js/diagramly/Menus.js | 129 +- .../diagramly/sidebar/Sidebar-LeanMapping.js | 2 +- .../webapp/js/diagramly/sidebar/Sidebar.js | 7 +- src/main/webapp/js/orgchart.min.js | 33 + .../webapp/js/orgchart/mxOrgChartLayout.js | 82 +- src/main/webapp/js/viewer.min.js | 1175 +++++++------- src/main/webapp/resources/dia.txt | 11 + src/main/webapp/resources/dia_am.txt | 11 + src/main/webapp/resources/dia_ar.txt | 11 + src/main/webapp/resources/dia_bg.txt | 11 + src/main/webapp/resources/dia_bn.txt | 11 + src/main/webapp/resources/dia_bs.txt | 11 + src/main/webapp/resources/dia_ca.txt | 35 +- src/main/webapp/resources/dia_cs.txt | 11 + src/main/webapp/resources/dia_da.txt | 11 + src/main/webapp/resources/dia_de.txt | 11 + src/main/webapp/resources/dia_el.txt | 11 + src/main/webapp/resources/dia_eo.txt | 11 + src/main/webapp/resources/dia_es.txt | 11 + src/main/webapp/resources/dia_et.txt | 11 + src/main/webapp/resources/dia_fa.txt | 11 + src/main/webapp/resources/dia_fi.txt | 11 + src/main/webapp/resources/dia_fil.txt | 11 + src/main/webapp/resources/dia_fr.txt | 11 + src/main/webapp/resources/dia_gl.txt | 11 + src/main/webapp/resources/dia_gu.txt | 11 + src/main/webapp/resources/dia_he.txt | 11 + src/main/webapp/resources/dia_hi.txt | 11 + src/main/webapp/resources/dia_hr.txt | 11 + src/main/webapp/resources/dia_hu.txt | 11 + src/main/webapp/resources/dia_i18n.txt | 11 + src/main/webapp/resources/dia_id.txt | 11 + src/main/webapp/resources/dia_it.txt | 11 + src/main/webapp/resources/dia_ja.txt | 11 + src/main/webapp/resources/dia_kn.txt | 11 + src/main/webapp/resources/dia_ko.txt | 11 + src/main/webapp/resources/dia_lt.txt | 11 + src/main/webapp/resources/dia_lv.txt | 11 + src/main/webapp/resources/dia_ml.txt | 11 + src/main/webapp/resources/dia_mr.txt | 11 + src/main/webapp/resources/dia_ms.txt | 11 + src/main/webapp/resources/dia_my.txt | 11 + src/main/webapp/resources/dia_nl.txt | 11 + src/main/webapp/resources/dia_no.txt | 11 + src/main/webapp/resources/dia_pl.txt | 11 + src/main/webapp/resources/dia_pt-br.txt | 11 + src/main/webapp/resources/dia_pt.txt | 11 + src/main/webapp/resources/dia_ro.txt | 11 + src/main/webapp/resources/dia_ru.txt | 11 + src/main/webapp/resources/dia_si.txt | 11 + src/main/webapp/resources/dia_sk.txt | 11 + src/main/webapp/resources/dia_sl.txt | 11 + src/main/webapp/resources/dia_sr.txt | 11 + src/main/webapp/resources/dia_sv.txt | 11 + src/main/webapp/resources/dia_sw.txt | 11 + src/main/webapp/resources/dia_ta.txt | 11 + src/main/webapp/resources/dia_te.txt | 11 + src/main/webapp/resources/dia_th.txt | 11 + src/main/webapp/resources/dia_tr.txt | 11 + src/main/webapp/resources/dia_uk.txt | 11 + src/main/webapp/resources/dia_vi.txt | 11 + src/main/webapp/resources/dia_zh-tw.txt | 11 + src/main/webapp/resources/dia_zh.txt | 11 + src/main/webapp/service-worker.js | 6 +- 81 files changed, 2292 insertions(+), 1375 deletions(-) create mode 100644 src/main/webapp/js/orgchart.min.js diff --git a/ChangeLog b/ChangeLog index 1abb4a58c..caa85a112 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +12-FEB-2020: 12.6.8 + +- Ignores drafts with mode parameter +- Fixes GitLab authentication +- Uses mxGraph 4.1.1 beta 8 + 10-FEB-2020: 12.6.7 - Fixes clipping for edge labels in PDF output diff --git a/VERSION b/VERSION index 83d13bc7c..a6b3d4f74 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -12.6.7 \ No newline at end of file +12.6.8 \ No newline at end of file diff --git a/etc/build/build.xml b/etc/build/build.xml index b3749801c..5148861b5 100644 --- a/etc/build/build.xml +++ b/etc/build/build.xml @@ -317,8 +317,22 @@ </sources> </jscomp> <concat destfile="${war.dir}/js/extensions.min.js" fixlastline="yes" append="yes"> - <fileset dir="${war.dir}/js/jszip" includes="**/*.min.js"/> - </concat> + <fileset dir="${war.dir}/js/jszip" includes="**/*.min.js"/> + </concat> + + <delete file="${war.dir}/js/orgchart.min.js"/> + <concat destfile="${war.dir}/js/orgchart.min.js" fixlastline="yes" append="no"> + <filelist dir="${war.dir}/js/orgchart" files="bridge.min.js,bridge.collections.min.js,OrgChart.Layout.min.js"/> + </concat> + <jscomp compilationLevel="simple" debug="false" forceRecompile="true" output="${basedir}/.tmp3.js"> + <sources dir="${war.dir}/js/orgchart"> + <file name="mxOrgChartLayout.js" /> + </sources> + </jscomp> + <concat destfile="${war.dir}/js/orgchart.min.js" fixlastline="yes" append="yes"> + <filelist dir="${basedir}" files=".tmp3.js"/> + </concat> + <delete file="${basedir}/.tmp3.js"/> <delete file="${basedir}/.tmp1.js"/> diff --git a/etc/mxgraph/mxClient.js b/etc/mxgraph/mxClient.js index 96670b833..0155c79ee 100644 --- a/etc/mxgraph/mxClient.js +++ b/etc/mxgraph/mxClient.js @@ -926,10 +926,10 @@ mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon);mxCellRenderer mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape);mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel);mxCellRenderer.prototype.initializeShape=function(a){a.shape.dialect=a.view.graph.dialect;this.configureShape(a);a.shape.init(a.view.getDrawPane())};mxCellRenderer.prototype.createShape=function(a){var b=null;null!=a.style&&(b=mxStencilRegistry.getStencil(a.style[mxConstants.STYLE_SHAPE]),b=null!=b?new mxShape(b):new (this.getShapeConstructor(a)));return b}; mxCellRenderer.prototype.createIndicatorShape=function(a){a.shape.indicatorShape=this.getShape(a.view.graph.getIndicatorShape(a))};mxCellRenderer.prototype.getShape=function(a){return null!=a?mxCellRenderer.defaultShapes[a]:null};mxCellRenderer.prototype.getShapeConstructor=function(a){var b=this.getShape(a.style[mxConstants.STYLE_SHAPE]);null==b&&(b=a.view.graph.getModel().isEdge(a.cell)?this.defaultEdgeShape:this.defaultVertexShape);return b}; mxCellRenderer.prototype.configureShape=function(a){a.shape.apply(a);a.shape.image=a.view.graph.getImage(a);a.shape.indicatorColor=a.view.graph.getIndicatorColor(a);a.shape.indicatorStrokeColor=a.style[mxConstants.STYLE_INDICATOR_STROKECOLOR];a.shape.indicatorGradientColor=a.view.graph.getIndicatorGradientColor(a);a.shape.indicatorDirection=a.style[mxConstants.STYLE_INDICATOR_DIRECTION];a.shape.indicatorImage=a.view.graph.getIndicatorImage(a);this.postConfigureShape(a)}; -mxCellRenderer.prototype.postConfigureShape=function(a){null!=a.shape&&(this.resolveColor(a,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(a,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(a,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(a,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(a,"gradient",mxConstants.STYLE_GRADIENTCOLOR))}; -mxCellRenderer.prototype.checkPlaceholderStyles=function(a){if(null!=a.style)for(var b=["inherit","swimlane","indicated"],c=[mxConstants.STYLE_FILLCOLOR,mxConstants.STYLE_STROKECOLOR,mxConstants.STYLE_GRADIENTCOLOR],d=0;d<c.length;d++)if(0<=mxUtils.indexOf(b,a.style[c[d]]))return!0;return!1}; -mxCellRenderer.prototype.resolveColor=function(a,b,c){var d=a.shape[b],e=a.view.graph,f=null;"inherit"==d?f=e.model.getParent(a.cell):"swimlane"==d?(a.shape[b]=c==mxConstants.STYLE_STROKECOLOR?"#000000":"#ffffff",f=null!=e.model.getTerminal(a.cell,!1)?e.model.getTerminal(a.cell,!1):a.cell,f=e.getSwimlane(f),c=e.swimlaneIndicatorColorAttribute):"indicated"==d&&(a.shape[b]=a.shape.indicatorColor);null!=f&&(d=e.getView().getState(f),a.shape[b]=null,null!=d&&(a.shape[b]=null!=d.shape&&"indicatorColor"!= -b?d.shape[b]:d.style[c]))};mxCellRenderer.prototype.getLabelValue=function(a){return a.view.graph.getLabel(a.cell)}; +mxCellRenderer.prototype.postConfigureShape=function(a){null!=a.shape&&(this.resolveColor(a,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(a,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(a,"gradient",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(a,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(a,"fill",mxConstants.STYLE_FILLCOLOR))}; +mxCellRenderer.prototype.checkPlaceholderStyles=function(a){if(null!=a.style)for(var b=["inherit","swimlane","indicated"],c=[mxConstants.STYLE_FILLCOLOR,mxConstants.STYLE_STROKECOLOR,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.STYLE_FONTCOLOR],d=0;d<c.length;d++)if(0<=mxUtils.indexOf(b,a.style[c[d]]))return!0;return!1}; +mxCellRenderer.prototype.resolveColor=function(a,b,c){var d=c==mxConstants.STYLE_FONTCOLOR?a.text:a.shape;if(null!=d){var e=a.view.graph,f=d[b],g=null;"inherit"==f?g=e.model.getParent(a.cell):"swimlane"==f?(d[b]=c==mxConstants.STYLE_STROKECOLOR||c==mxConstants.STYLE_FONTCOLOR?"#000000":"#ffffff",g=null!=e.model.getTerminal(a.cell,!1)?e.model.getTerminal(a.cell,!1):a.cell,g=e.getSwimlane(g),c=e.swimlaneIndicatorColorAttribute):"indicated"==f&&null!=a.shape&&(d[b]=a.shape.indicatorColor);null!=g&&(a= +e.getView().getState(g),d[b]=null,null!=a&&(e=c==mxConstants.STYLE_FONTCOLOR?a.text:a.shape,d[b]=null!=e&&"indicatorColor"!=b?e[b]:a.style[c]))}};mxCellRenderer.prototype.getLabelValue=function(a){return a.view.graph.getLabel(a.cell)}; mxCellRenderer.prototype.createLabel=function(a,b){var c=a.view.graph;c.getModel().isEdge(a.cell);if(0<a.style[mxConstants.STYLE_FONTSIZE]||null==a.style[mxConstants.STYLE_FONTSIZE]){var d=c.isHtmlLabel(a.cell)||null!=b&&mxUtils.isNode(b);a.text=new this.defaultTextShape(b,new mxRectangle,a.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,c.getVerticalAlign(a),a.style[mxConstants.STYLE_FONTCOLOR],a.style[mxConstants.STYLE_FONTFAMILY],a.style[mxConstants.STYLE_FONTSIZE],a.style[mxConstants.STYLE_FONTSTYLE], a.style[mxConstants.STYLE_SPACING],a.style[mxConstants.STYLE_SPACING_TOP],a.style[mxConstants.STYLE_SPACING_RIGHT],a.style[mxConstants.STYLE_SPACING_BOTTOM],a.style[mxConstants.STYLE_SPACING_LEFT],a.style[mxConstants.STYLE_HORIZONTAL],a.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],a.style[mxConstants.STYLE_LABEL_BORDERCOLOR],c.isWrapping(a.cell)&&c.isHtmlLabel(a.cell),c.isLabelClipped(a.cell),a.style[mxConstants.STYLE_OVERFLOW],a.style[mxConstants.STYLE_LABEL_PADDING],mxUtils.getValue(a.style,mxConstants.STYLE_TEXT_DIRECTION, mxConstants.DEFAULT_TEXT_DIRECTION));a.text.opacity=mxUtils.getValue(a.style,mxConstants.STYLE_TEXT_OPACITY,100);a.text.dialect=d?mxConstants.DIALECT_STRICTHTML:a.view.graph.dialect;a.text.style=a.style;a.text.state=a;this.initializeLabel(a,a.text);var e=!1,f=function(b){var d=a;if(mxClient.IS_TOUCH||e)d=mxEvent.getClientX(b),b=mxEvent.getClientY(b),b=mxUtils.convertPoint(c.container,d,b),d=c.view.getState(c.getCellAt(b.x,b.y));return d};mxEvent.addGestureListeners(a.text.node,mxUtils.bind(this,function(b){this.isLabelEvent(a, @@ -946,8 +946,8 @@ mxCellRenderer.prototype.isShapeEvent=function(a,b){return!0};mxCellRenderer.pro mxCellRenderer.prototype.installListeners=function(a){var b=a.view.graph,c=function(c){var d=a;if(b.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(c).nodeName||mxClient.IS_TOUCH)d=mxEvent.getClientX(c),c=mxEvent.getClientY(c),c=mxUtils.convertPoint(b.container,d,c),d=b.view.getState(b.getCellAt(c.x,c.y));return d};mxEvent.addGestureListeners(a.shape.node,mxUtils.bind(this,function(c){this.isShapeEvent(a,c)&&b.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(c,a))}),mxUtils.bind(this, function(d){this.isShapeEvent(a,d)&&b.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(d,c(d)))}),mxUtils.bind(this,function(d){this.isShapeEvent(a,d)&&b.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(d,c(d)))}));b.nativeDblClickEnabled&&mxEvent.addListener(a.shape.node,"dblclick",mxUtils.bind(this,function(c){this.isShapeEvent(a,c)&&(b.dblClick(c,a.cell),mxEvent.consume(c))}))}; mxCellRenderer.prototype.redrawLabel=function(a,b){var c=a.view.graph,d=this.getLabelValue(a),e=c.isWrapping(a.cell),f=c.isLabelClipped(a.cell),g=a.view.graph.isHtmlLabel(a.cell)||null!=d&&mxUtils.isNode(d)?mxConstants.DIALECT_STRICTHTML:a.view.graph.dialect,k=a.style[mxConstants.STYLE_OVERFLOW]||"visible";null==a.text||a.text.wrap==e&&a.text.clipped==f&&a.text.overflow==k&&a.text.dialect==g||(a.text.destroy(),a.text=null);null==a.text&&null!=d&&(mxUtils.isNode(d)||0<d.length)?this.createLabel(a, -d):null==a.text||null!=d&&0!=d.length||(a.text.destroy(),a.text=null);if(null!=a.text){b&&(null!=a.text.lastValue&&this.isTextShapeInvalid(a,a.text)&&(a.text.lastValue=null),a.text.resetStyles(),a.text.apply(a),a.text.valign=c.getVerticalAlign(a));var c=this.getLabelBounds(a),l=this.getTextScale(a);if(b||a.text.value!=d||a.text.isWrapping!=e||a.text.overflow!=k||a.text.isClipping!=f||a.text.scale!=l||a.text.dialect!=g||null==a.text.bounds||!a.text.bounds.equals(c))a.text.dialect=g,a.text.value=d, -a.text.bounds=c,a.text.scale=l,a.text.wrap=e,a.text.clipped=f,a.text.overflow=k,d=a.text.node.style.visibility,this.redrawLabelShape(a.text),a.text.node.style.visibility=d}}; +d):null==a.text||null!=d&&0!=d.length||(a.text.destroy(),a.text=null);if(null!=a.text){b&&(null!=a.text.lastValue&&this.isTextShapeInvalid(a,a.text)&&(a.text.lastValue=null),a.text.resetStyles(),a.text.apply(a),a.text.valign=c.getVerticalAlign(a));var c=this.getLabelBounds(a),l=this.getTextScale(a);this.resolveColor(a,"color",mxConstants.STYLE_FONTCOLOR);if(b||a.text.value!=d||a.text.isWrapping!=e||a.text.overflow!=k||a.text.isClipping!=f||a.text.scale!=l||a.text.dialect!=g||null==a.text.bounds|| +!a.text.bounds.equals(c))a.text.dialect=g,a.text.value=d,a.text.bounds=c,a.text.scale=l,a.text.wrap=e,a.text.clipped=f,a.text.overflow=k,d=a.text.node.style.visibility,this.redrawLabelShape(a.text),a.text.node.style.visibility=d}}; mxCellRenderer.prototype.isTextShapeInvalid=function(a,b){function c(c,e,f){return"spacingTop"==e||"spacingRight"==e||"spacingBottom"==e||"spacingLeft"==e?parseFloat(b[c])-parseFloat(b.spacing)!=(a.style[e]||f):b[c]!=(a.style[e]||f)}return c("fontStyle",mxConstants.STYLE_FONTSTYLE,mxConstants.DEFAULT_FONTSTYLE)||c("family",mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)||c("size",mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)||c("color",mxConstants.STYLE_FONTCOLOR,"black")|| c("align",mxConstants.STYLE_ALIGN,"")||c("valign",mxConstants.STYLE_VERTICAL_ALIGN,"")||c("spacing",mxConstants.STYLE_SPACING,2)||c("spacingTop",mxConstants.STYLE_SPACING_TOP,0)||c("spacingRight",mxConstants.STYLE_SPACING_RIGHT,0)||c("spacingBottom",mxConstants.STYLE_SPACING_BOTTOM,0)||c("spacingLeft",mxConstants.STYLE_SPACING_LEFT,0)||c("horizontal",mxConstants.STYLE_HORIZONTAL,!0)||c("background",mxConstants.STYLE_LABEL_BACKGROUNDCOLOR)||c("border",mxConstants.STYLE_LABEL_BORDERCOLOR)||c("opacity", mxConstants.STYLE_TEXT_OPACITY,100)||c("textDirection",mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION)};mxCellRenderer.prototype.redrawLabelShape=function(a){a.redraw()};mxCellRenderer.prototype.getTextScale=function(a){return a.view.scale}; diff --git a/src/main/webapp/cache.manifest b/src/main/webapp/cache.manifest index 7d4df2b44..ebe714ead 100644 --- a/src/main/webapp/cache.manifest +++ b/src/main/webapp/cache.manifest @@ -1,7 +1,7 @@ CACHE MANIFEST # THIS FILE WAS GENERATED. DO NOT MODIFY! -# 02/10/2020 01:55 PM +# 02/12/2020 12:41 PM app.html index.html?offline=1 diff --git a/src/main/webapp/images/sidebar-leanmapping.png b/src/main/webapp/images/sidebar-leanmapping.png index 29a4c3703872a51df458996436aad02485e54da6..7f5eb126a44408109d1d94d974ff366bbfe2ef3a 100644 GIT binary patch literal 12682 zcmZX51yCGa)aBrAgF6iF8Z5XD65N9`cnIzm+-1<<Hh6F+Sb`01!7U^>!3j=SzN+1S zw`xyy*Smf0xwpHz@2mH!`*p0Qx)Kg11ttIhz)=RvYXblX@YnqT9qE;6ndA(9ZB8`R zbQNA+US7@e@^Wl!?7qIf{{DU`DXEZ<kh8NhJUqO@!a^P%p6TgnO-)U6bMvjOEm~UI zl$4bE`g#u!4>UA17Z;bCo15Rif3K{p`1<<3fB*jC;sOH$BQP-V<m7~cf}**(IWsd; zOH0ei$w^O7@A>)p@$qqge?K}px~8Va%F4>s)m2<voP~v@p`jr>JX}ppEiEmLh=^!z zZmy)HL|IvRU|?WjVPSN1^y}BJ@$vD)!^1W<Hp0Tfhlhuglao0)IqU1|t*x#6{QQcF ziuw8ZcXxM*iHY|1_J)RrS65eFUS90%?3I<3IyyR5?)|6$0I#94yo|2z>YpVir&S9; z)OPewFk27D`x*N|?KI&kG<yP7E1gE;hAZipmn|bTJ?3Lv=e`fWd+_<JXr$K9OPV;x z|L^t>Z$V3MZr)yZDPHm7NblnAUg+I5YV9m*+D@`!Z?L1}jZM&cinKPSQx7`ate(FZ z|4!^Mc(ITiiBucM{rLw@dy^zLlKIix4;R^Brh~tT%$FEj`22d`dE_>6MqYhpvpOFt z#U~$XZgy3{_1<NUwOok|gh5&kVGI(SS-of{@d~x>&Co5gztI|V))3VAE|PF3;SSN! z@XAIk@;NO<aNR~AU%vmhrLI%Q>3lj0)%Mo6o#AhJ$jqGkTo!`3HybwV!YfdJ*jdnV z$;s-GE82Y!U3JH}x|Xk|Ff?rqRpx;GbTHWz(@m?zNB@<T64b1ljMI5@l`bxt-gIgI z<^zsk#SYxRng178UAM&-issT3q{|&(TBRme4Ng;5X)BJO_ZY-9@*dQ&zy{6nH4r{e z`R++NS9Z$JAT=>CIfPw}3t168<%SfjhjpoOYg1n4BMuW(9W8yN6;q;@W1jqWV^!m| zf=i!wDjS?>5@t(Sm*JhotCd!8YRHZdLfSNvUBv~zz1sBzriyjU2|Sy^1@vUntW=>m z_mTo8-&vf|*V5$Rom0GF!Mdz9FbCBOiS-lN8yHSarKX$345wVMR^-8B3c0DR0{l6U zTsum`27W9D_anc|QyOii-wJATFJ-%1jW&UfeXE?VT1-xk#YAW}^pfksx>tBmdsi*4 zj>Ns-C$U55Y91jzF(8X$FQS>eCYUTMv@&RLV;@uxIMu^D^jwL&F7hQ4jo9#TTs8jW zP{&)#w!>lr$6iOU94{5cN|rM_k#)piQGgGK?|Mpk$5lw`CdqDwH%fVLIxBt#<C0|s zlQ&rw#cPQpXW9@A31Fs0?Sz^~{jf&2{ep%hs%DNQ%BV?j$%{vczBlw2f|7s73ac~t z04lHvlJ22!;wf0vGZrpi4XC!AH;h~y`j<AkzSWyhGg>$`;MvnNLZ8*Q*!U%N=&uJ2 z<oU1ni`rO<l&gic1=n%C-FGbKzu$|4Q}PreTBE*%n1lY`E`ZCj?_cV$iwA4!ZM0?) zk44g=>fe%ndy-Cr#L+I)G6Slkr0>9N`icm(=IMPISy_$vlVs68Z~Ou2McyigI=S#_ zZ}RO2MhL*%omCz^&wU1toZ&}*RouIm9<E5Q04k(wrZvut^$godi2Du0cA-Tfr_=ff zZf~j7HK-YCl*MFK=j{$^z@=k|ByAErOd?70Y<a6K4U|_0rXXq~NLO^HgqI8Ch9OHh z1%|01!S?DM=t2pb9=2`8gQKV>G*Z|;tz$ZVCIp(?2IWvQkTUeN8!}|1h&{iz+^TRQ zz7A?;wj{-Oi6*#*i;njVQ8+|At?gPoo6_MpPxCNA^Hq3M(T6q;|21DMftg_PFFlbF z>Zc}8F5H)vy;5v{i2eeZR#m}~DVN77t)uqjgiUX=Ka)p2`2eNIUBsOvUPAQBVCcYL zEg2{`7AGuD%ZS7*`hy7xR)%lNJkR1^Yj1jDkU$}ANlO!?Uv`X^Kp#OId?SHGhu(y> z6&>{4J6nY#OgVq_W8+58De!M2kfsT3UZGLIe2vSf{mk~bqWCs&{yj5cO3TEbDLL6O zAiJ+ICj_dA@+ndmoeKe3ZZ&s&ueDjIhIVNq=g#w1u#1HGZw700boXh?<ilOt?nn2Y zv8MrN_1l7azi|jcsst&MzchT#Ll1>SyGTAYG?IvSwU@Mmp}1<mcE#C=*m~2Y_H^ji z?a1Q3QUNuFW?}7VQ6DhNiou}kZvknKO%ovYZ$56O%i?NJ{#Px!#C<tDL$I7&7ec@E zSeLn;oNOCK{%rT`i+Ag3$iUx+YG(sKdYltS%jLwz<(a+BD>;{JZ0X+aw@2wdi^jrd z?oTOAJG2qlJ8g6PDGGhns4`7e9RO9deoqSr|2FQIzXMgiw5p%R@LulAvLkJk2Hxt> zOc@=c!0|HQ?1byGY5@$vk#}c&DYBuWt&#H*smdw2QKELWwb8jN7X2ty4|*AqM410% z;L>AabJ)vhe#{C}dx2jSO)s_gga0mpDPiijKa8i0YAD-QEbB?JAu?B^%e3+gx`1W8 zScd&25+Fgsg_q>maYc*F>9KP|!G|TsyJ(u+lWlm3bB&{H*<Ur36fDLu4hdCqm^{)c z1BMJHI4X;c<Q8WR2Ta6IyVB@d&_vz&@=s$NW5SpmJBbm4d<ANP`sVGgk3S+_ivz8X zGGsBw77kBxv{;Js4kwI)?fwj+=xZtWS5owjumH37fZbERRTRr7BLWq?BMxyPMVfOd zh9Rw45~y%PQ>Pp{^FF>K!F5{sR%5_xVJM^0TYJ?yg#B>s?`HWy3(<OZF#fH$0DP+> z9G)`!bx|;5k&X)|I=p4|Xu$ss%@lWVGUs>#qTd#Bvk>yZ6m#0B1VE$&dQtbcKSeB2 z+sg>9>cG7sT$+1WEliFLl4+xu+Al5_Go;3TFaRv{F3`BjEQ*H+onk+I-U1#O&m)ts z&ss?Q3Avf`q7qhbz8VS!{C2qb85`(~NEGlhVYhXotJy_T$~59ri-A`zan1Epk7P%P zcv#(Eya2nedCd5c+s#of1SFISd|K8E)yj-Qt2yO^!)*?^f}JnpY%$*RiV>hOS-)VB z@rcn8$pLrYW{;nZ(`lo<)%uI~TBXybl}1yM5E0s`kMZ}7l83=dNHJdq42?fFuwB)r z`PAY)J^fPcvzyEvXw#;_PVo1y(eJAWHd#%BUm9JNAZ67T%@>3xibnabtvK`19@B1L z2hl+<2i(IaZ7?3Lem~GHedRF8nRKg3<0#n3Hz{j(%#i<fcKkSMtnsM%yc6?*re#h1 zlk05PXR)tbAE0Pa2%+*x?&CN@)`WF?*6$&>A}b$)on`vWKe-9?=y7o0n>D)G)ZUJ7 zkQDV*%iu#bPGo#KzbU?vydeQm4ujiiM)rzKT~<Ik?^_?Xko>3unsmNm{<~{jwLr4D zjj+V|i3>Q@F>7^KNvRg<B-nTydx5s1`l;)>hAI5xF>(rBW4@;+bgvB`$j#1?hO$)} z$Chfgjmql=Tum*M!h~1k<J1Bds((5!n)A~WTc=W*hwv`fCwtH3h(KfOjZqk#bqJss zhZ*|@>l;4StP)9zqlDRa)fpr71zO!q8(v+poZdk5R!pl<oG8PwYW=txeGC*uB5h9o zDm{*`vcJOxAX)I0UVY<geGKPNR=Y>zsw!h9Mj7;VbBRP%C#xELEB=TPbcLqkS$z<m zN3mZIFgD5mh939oUW^+$2mvQU<JM6PXQY<HhA#uCXhfB^B`Muv8JP!sCn(N(=}@7T z?|{ihXf_Y>z_f1?wzUmC3haMW7h@&@^4ieS2CWz81H<7K5_LW5YvIbj_?*<w636Oy zho1cN+X7zQH<<`=^vppLw)OEv6c`R)q}oRQ^w6d=6azlopbMY%XXXB3vLpY$NT+K? z_=H^S-xtBQ;K~ZXC({2Vnm{G5J`0IKs3(0xZ99ujs0j;XU;U>-@w@*jF9`N$%jT4B zFQLX8I~@py^;@Se>G~$I?-DHb7wX1-DZ!jk#)kq){Jc(HvgJ8LX&r!7rHWVwgXWCk z1U$ZdnI-6wFlCsf-pm`#*m^JxvF^Ddij+2^dz9_@g@9&kGPsydMH-JUz6JYJZYk9a z+!o3|%&#fm4T_Hz1AN9Qf+m9W_;>*C204HR-^!nEkTl`UP}u_h<cm0}p4!lG#>G%c zvUIxS#<(v%)S=_kz?l(LD3uqDHSxWx`korf(K$&Kef3dZhr*FPItMdRIbs1w4~lja zqqTz<pWvW|BCfC}T9hmzpUU}DSg;(?3{)0#hV;Posano%PiVpbAv4?o?c?$F>jm<c z^An!~vkmC9{rx^oGdCP8I)BCkoEAMC4tG_U!E#YJi(du!<bIZm&Fs}S-+vBzQtqvF zgg3qEEDv!Q(&H}|cy*7m;WvV7Z{G<xEnasw+kckg#rEI>Ty?AVfLXBU{zwt0_?oA; zg7g@bxGo<`c;Ad{DWx5jSpFNe|6z{388YkN63=J^pl{NZ<__awn#y`IhEhaTDyS#d z=v>7E&eTb9uI!qPhRE~sHoQB>`$14Nr3O`+DIeb}%bD!1=CTZ(Pb%(86UIqC{tDIh z=selt3QU*y7vDe1V^*T;HXWBONMWI;W1_z-Zotd6)?>jK2>E}EVId^=ti%>GeIDhf z(u^9`)r7g=@lUPmR1yy{JC-u@5{{o#2P8h!was;W_}a^Fuhb5wqAkFD2g>KPkYG+y zXEZV|C5rW1&S57laLSSYbu{k$h^>qQB2ZpjvR441ww1rX$D&3@B(MIXiX12JSi>o8 z`$2F}1f7vM2K*Y#MqtFKkgtSR3W_EGiaIlC%ZG%sbt#D%eY*907Ee@rl~m!gvB~e~ z?TR8z{T-%PuqLZw+{<1t2k}jB6Uaf~2K%|?@iLA-Km?f#gly3yY%x>>M)w|yB<4^B zb+ePtrV?L%A&R4M5b4#jQ+&*;8`aSTjjpN;5Z}l52y8p8MIqh=49?oTPkpDh=J`77 zNr`H?URTsuv_83cmYVt_QWPQ93p9zme{sT`jej>oyE4}dQi6LZ@cSrI>^eS>P<`gI zA&KqI#&YH5;b`cF7aKd<u|ycNrhn$(&uQN2lG^M7U-Xx_?cj9+(6E{j|0>+H4G`l= znP9fk$rq=wq{iPDP6l^yRiCY<<98g8>Sc{${vdTos^-u@|3OGzf=0F%qkCXO^Bt+K zZY#+e3je*?^ZiI{K3)MRw#}h_Fq4j}ey75c@~hM_2-=J1H8Ur;rv}C4z6*DIJ~mxW zFPX=St8qF$+~0Mt-K*^Khw93`Q4@}YQ$cCiKSyHC<JWszLg6B$nuez1)5NY5T3$n- zcaa9NZj3)l8I>3<IxJ|yemKZjXw9wfAYRrSKOQ!LqL13RIgbI=1K%z2p!>1c&-cuM zzlF{RTMv&$Z1=i9WxOWx?1=O74pW1sN>c|`MNAMLTJpX}_%4p2DHEd(h0~1gJn}TS z6D2jlY6I&4*6kfr>M_{WmdqqOu@U`nkB+>;m8q5pS*T!INFrQs57Avg=pF-cnvGE! zj)<bGL`M{h90$YVD@abAG$7cXD8U+c<EAr**%Z>bHYuo>I^FTHT!u}QV3^oUYJI&J z2=!yc%(X=~xsI<HhoA)i13F^KSBDvM{p*0|PE!8)PPC_aRGHw#@*(HQ(jCF3`dCfQ zi-G_{n`en`d%bG<=YISTJQai2M<b}w2#&O>LdCHDGCie1>fnwLxnMKeg}8DyVN%J8 z^P6C&!L0d!=8{EWp*2vyh#orew>ae&G1{UIM4wxFhAdW4<{R<i7mfyL7<u=;cK5G- z<G6_l6#2oQHV_otB6gfu<T0!bqW9*iP&86aV89|VoB*S#MLAg&ZcDB3FVuye_O*y` zW$Tn{#Dy3yt!XhEcsVTO7ljXZd`;w_%G^bOSN}ao1{4Wm-TRMvKp?WT)Gv}|L{}%< z`363Xt2<`7Y#v3?l|N^HFT@EH7dA-$S%)V2B_BMjk(bjQ+=a30V9dxn)(SUjE0Ezn zX1=849tg0fVrar=(n32L`6XS-`J>|_Xo;ACACK7K+F^;P;p5MeBqE~OxG!?gqHl*H zv>Cc0^0bc#2bW9G5}Rk&;E<Q3c$1Z$#tC9eWvfcppB1j_MxVS?2U=VH57t4B)=@8q z`Jc{^uY6vd&yWMLd|@A3f-etVvcX+8R1?W<prr`?9qM9YKP7vGO#)-6&wq!OLGsm! zOd{ONBM&T`i%L7F-j4IfL?_lKgd|RkP0df!=E1Zp=*pF0RLjY;`mi7n(=EefPu@y> zjB&qsE%;b|>|}6zX#}%rMPciL_4NBIH!hFq>Av*wdanO#64F%*s1|tWmJ`rtwg>zy zjXp6K*P;qJVyjSA%(LOiU5jf`fvJh_3XaYk2)vuiayW?+C^waI-a@nrYdMx*&kop) z7GX>4B?h(Qo@Ih9#chO?hf1?ouj!a%p%I=Xszu)9pLU)E9k!_QcQVA;-tL+(+fXQ! z7<y!Mi#N&am_P5Iou$IBk+bI+O@)td?CFPZW^9nHm7%}DRw0O@GLwvsiK&M$H4$ZU z1FcK<@9R6e2P<@!1Tj8n;s3VIkFUm+8UoHOoH&;ZA^u?#4ygnN+2fP0<np)xU#*`A z4ZJ{XX%wx`=~_7*apSsFKrQ&MCOVaI#L*KGrQi;#KObn3)&qjChrR~79pd28GaYb^ zxvg^WOUO{j`d=ZF+io@Dv;BxzrN6vdVR03swStCxKb-R2zY4<8xpC7<nm2|b<~w3# zu?ejqt@;~6Yg?irq43g*=YJRHn?rz8uZJL!dwv=+XdmbDqA`@F;teTx8ikdll>&_% zc6&*)$7IiBG=NtGxsv7bgm&L{O&F=;*Fg{t^h{}gwEVW_33m_K$l8tb*Aj3=8I4ar zHt>!D`;C0?RvDV>&;_oV=!#e!x4Yna5B5*Uxn1j)jJrOsJZZxxfSxH76NyqjxC`%( zM0Y0|TeyrVR8GXbec0WTu3ZsrAU|l?m-yjv<AghCMXKZFaddO-62ub{S(?1zynhjT z2qul^l$231jEJ^0g(7AUgLvr35T5~Tr44o94Jk4SDw<R3j}ckXc5khhPac%&SA1PB zZCuZ;*J`emb``n+(rv@x^i-_#&?!=*z_9Bp{hOVZOmKjIEicW}nq8I)O~T7c9Bt|O zsM`h!#<?cV$+wGPvVuX-;W1ygKUw_K?R@>?){jTDU4<LsZt?*U$(AvLa)x{k_kYNv zT^n`PO-&WDS_Y6$6PQqqq({mZlcZizT9)K(NlpgflsYb|Zt!|BTG!*6GHujGTK>Op zHIAU^Tik2fi}FUWt=OC&XkX_GGGU8FnZXUw!2<DNaf9s6{cT_HbMVblc>Y%E$idqA z*=`i==pLu2EmA*8|E$*2Zsp~<wd?1PV$W@cu>M3S8b(49Hu)z)H(@R<w+IJX_jBcE zvl=I*xu=HG{-6unvmLEVvdGd&FDfN}iKG}4e$Cat6I~v-{Z;B9(wyBwspI$`bC^&A zNwmWOO^u!V_jjR>Ot-~t%<mq=OGA6v?x+P(X;`<r#_~_*!2e_~9U{JMNVeE&n(u5I zJlu1bxFNCyj|P2ECknm?2>age?5?4l4WQ@V__po8r|}!>5lnSSwQM-e&(DYpq(tcc z=h=3<HgK_owsAsw*wNGtPfPnZJ_1_V8~3$4yUz-@3-84a`FhuomOeE5EivfxP5Sqb zU(CAR5*7p6`JZOub$6}W;Xa6fAHsL;A=qdk$rZoHE<w?S-sZRMsm@X1)YUh*JR#K1 zcl&m4r&F64a~hL7o6~vomlD8f7zle47YC$vG&Ks|OjM^mcQ_?kqj1Z-B#z|q`0MQz z^%u*o$*JZ50&&{>KMB^*5GEUCL2KG8JqHRieOM!rsaxWEE}#(4$TTkAKXGbCP&Ch+ z+pd`dG$0mU>zS(yYi8jwGkdz?<QgYY-uVK=jY@zYrR_;}hJ)t$etWX|Lwf7QN#1PH z28%tVx6(G(stN=UtUxo&hpoiB;z1$9B0y?h)+<hyREgHpd3^=RvNT*{D91{4CuJwp zfQavlRkad_JJaL&o>w+%D)ng8xO5W0!c#>8z^opLsOd(Ibgr(E)&#|7wy6NIl~$Mn zV#XmHm-@K16XN5sWP25I!+42MpEuOngg+*fmJ~*rZ9r-ja$_}zDe??rweW?QALOPv zB{ARBG;Nm%(=m`zsKQ5)cVQE%EUfd#7-N<u!=1LH<7-n>aq_9?*kR%H45^8<*)4#X zgk)^=IyLwFjXStBhx;24id}YR-XHjp!!(owh>>Hv<K6^XuvZY`niCYa%`sJkft=`@ z+WE#ymA(z*ncOs$J}$;0-#%Dn=v%<!iJD13$!`UIMwsoRN|@kpw5c;PnDAPZ((;H^ zXM+_MWp}XEE3&F7nw}~b3WwuFx?&`e<bq+J-w=+9iIkCMB;*WuIN!YGSdIQxic9uU zF<7jf+kJh&>ATA8?<wF1gXNL@4!+si_(5`rOv{iN6nDy13*Xs@5SqVUx#4uTGUXhv zD>BePw`x@nJ}3$$k$=xgLVi8bm`41cg)!h{VEG#72<6Oa>);h$_5bqiJ`7_Fse@S7 zZ<bs;lhQf4#*55a=<Uqw$B_RGZRkf-O#N`Xn_B^k4HVzj+r7|M3)Fv2h(m1ODD4Zq z$ptYy+z1e>f%tj-Whgqt*!P7l?wT^rim`I)mAr+M`s&yj+$GGRVNn)!HFT6(3y{iA zY;u5aXnZdsB_BwD#q-SB#YKk|tCYf&f*n4L0ihzD0o*%%LWgN0#6nlHe!Fu}mJwu& zzAH584d}*TDmEc)6VU)&(1k0CQ=|b^esA%zXnhKT#3HNLD|}>r86&U&FlkEOR(tXx zsvK4xFI;zYE8h>SC3ZyS7pOsXm+<eauW64WvC1^lxKUXK-}QpO6)_eF(PZ&CkPMuu z2RLrRuuh#G>!cxZ5Z3DWzzEG$Nm&dk(pK!1R$W@HCU=_7@i?F9@$4VK{`na33uSyh zfW>-mCrLI)rfWf=cL1RBO)zr?tm)62Jd@YNBtg*)N-OXC`Bmj!{NywaHq6>yr)(Rq zd!S3wIXj@EUtK1_MWPH9$zB-i5u-WIy-r(lh2oB}A^>C&J_j{(H7Ouo)WrW0$r&fu z`Hn2pX~dX%Z^9V^<{mpR${vm76Gp^G$F~<c!2llb`Sai(7FBZt=@thusH=uBXu0*a zS9Cj9#~o@aBHhPw8L_dkj_C(=Mi~IZrbp^3tO(<VbikG`^!$n_b3=p7WhIoQU3?d5 z4&PY>H%hv!qj~EqiW5dsH%heIQ?N0L4`*WW?N;mCu|3_@FEbQ!h;Zq-DbVSew{;j( ziINb8#z?eq8Z{xz2w^syK#aUaQU_NmJ+C4V)}sJ|e+}^P2SKNPw0==n5`0%F@4Mlc z+hh)bL)RI*C>&obEZsgxo}Wlc0hUyRKkOg}qCa62h-EAh1i|INu1jT06bxQhpmE$* zq$vs@+vs5Kv;|`6=g)ffrftOe-K8p5ATMMl3vqieES&v5d9u(Q=9Rxl1^t<}rw~<H zgbn?u2<gJkk+pGT@|!yOnv%gVC$rE2RxTpK%#V`yCj)>b!Y~-VQ(JI{E))x8{_IEq zyV^8^YIb;oRz86RJ`huEjLt0Is#W;C`Cw5Y)T7P@MKl@!QA0FwkAy&T6X@s2Wr7gE z#4gPbyT9!PJR}%7LY&&^H*^hrP`VV~Jq#a-4r1t$KLs*|fUSx&X2u(N?ac=8QKryL z5%?UvOQ!wUOKHvoXxa$=Hu(!cV89!{Z<R1T=R>7WI(qjzN?u?6GppxVykDzS_j+Jo zf-lS5XNx_LIzyQJQ7C44mi62wk;g!l^%eq2*QzR4^C+qo3Y0EjGLDfTy(|nIM_9nM z5*BXW-=GcMJDsCRE;qIDAO^p?GMw<)UUiSy#DP|P70uh0Aq4rHt1#AbUT%0pKjXzb zlh*SPY}v&=9Xg>ieznP)!h<1Q*VWVDTk)qEWTM1Tx>Sv{UmctX(_a$z@|B*%fu<!% zVmk--0j@v3@hrx9p6}I0$E+3lBV)Vd`60qsKlYYQq3&F?K;>$_U&R?jPvFS(iu2%m zMEGL!z5I%71-)3GnLMtx6^jJ^ODxGfGeeBzvoKXPVng|EgEF?5>3t&9cJ|`7$B4}I zQ{LM(3_aMa0h{HaEQtO74lD-T1n;rRwf)5V2b(?7+z6**Q2?r|#tEXDbvMQsp-!>= z1|+H|JT%EdpKjDDP?rx31bKoM9N)5QQ)dJx>HgTa8rozKj<r7o80f`aXH=>~fLn35 zf}WK-2UXhP?f2|z-`0sb1BATdxFs86JHzN!uQq@6VJbYZf4Qb1Pn<aBMfVu{s-hTW zN*>U|S)2wkc;O#WAo)gSKGOMa0<+(&77_e9Vn=TGW%80G>%|B{9o}Y!hcHP#pbpVV z^!KCUF=gAZDE#|soAkgbkEtxt>;1(l(>oLgum5Te6tsImS=W!_T&)X<(7b_#;)qj( zn@O>Ku5R<|xGpv&V!QCe?{j2F#H*bCNBQ;hZWg?Q)h$_&W;YMl_2RcL3qgTO{m7J4 zcsL>1cX?#{+%gA=aoji<5ACIG!pYUNDmXp{diIji5@e_i6Qr@@PKEu9YcDNeP&QRl zk4~k#`JT?-q9L4VO5``wSX(o;rSr^@Y5Q4FV;70GD*Zt)lhsRWhaYuIj<s)awI=?V z-)dbAeSN<hXJ39U9!CHIE(uee)DfiZfj{QAZ|A|$?S2gOf`)~o(?<{_{Gqo4qR^I- zMXu>pA0Aq|YK1Ol_o`+c`x-~bw(rlC`u0hnG!oGS(;XD|<w_Gq>g}E3ojaUVL}!YI zEu)-L@F6|DPh<QJ&x+|(4XJWXzJ~2Mf5b#RXOTlcO^%=vG*o4M&Gq!>OwKo-mjc5( z`d<U%E0Vv>Un7eHF-<ueeiy-MeUc|%z{U6n@IjHco8ZuxEs6j^7U&){I$%og%2n(2 zWt2Ib&a1LWgfz?p*Vnlad)y6t1$3bCgYB>Pf>{*iwudja1hG}+bFZY)sb_g7)xjP_ zY<j%-N9)7zP;iSeSCJQ~$;%*>!ra5!h6ZFGFe<_)X~brZ)ep(lX5qlJ{ZK9y0FUV_ z8|aqF5<WCbEsyrVcetxlA04h1D;8IAnZO@viD0MDK7(XTZ_fLu3?ka|yJpDucuhk- zr-2{hT>aeL-F<{h+`vu{qh1R;#E`-2v<x2?{U}Cu3XImr)S)MZxvQeT)5(HKY2#BX zsb%b7J(??}c{C}dEq;bUq_lo@R0D!Z4cPYc+EhDV>g|$#0wjLaQT&0uoASOR+9<F@ zPo0>)!7onmgIU$HOMB2$qfaPaeQYH#t=MWPinHLB^A{C+=hso)^KFzr3iq81Rb*T5 zA^SZYpB|dJnx8WoeWoRu*J#D^&+U6GW`DPU*6u|CCl&{eYJAwW;nesnx@5$uiS9m| zTYYV}5|P{&S;BT9ntECZ7b0aY+h%p#*atanKJ6|l4ce_F<VH}Ntcbc7?~f(RKxU4M zO6Xq5X6M*f?1?YST>=+0zPgCypv_o&;F&D36T3z$vyJ8qgB*W3%B}2Do0UZJW{N;m zuP#EN3PCJc99I5qqisFFzKCfu5;>=QiefoFN^xrU2ofXBSp18CT$>n+-YP@eA#h{w z`Fp`z*_fStIJ(H~ClP$Lx%C-v&b^^T&PU<xX^ef$9~H%<XgP{0**Ke-f=s<6pdE7Q z34w^urE=Ep*pUpxTr8%Z+?!SZ13!8Ap6`>&>Srl!tZ$uYzIj;1rm7<os8JXPuOyGw zcQ>p85z#*LR`8>~Pyl84?cPfsgV<>{VOV1f+)gc~U}?EWv{E#N(<wESouB;82z@-Y zD~<`RTTnnPr&V;;KLZYT|1|6_P#T4G%qZ?}MS}vX(*x~}Y6W$d)MEa$Mlzqpv<%lv zKsE8t)tw<K`Aq)Nq8k2e)@%+Ll4U?eM9aj-aGsCI<I=Z6qtbfW=_>oA*9|{MSlv%K zx+C*@Es6qiAw^?qIXQ20x6A|I2HL3a<;hq7R4xH+cx$<&58-}mXw%A2)<Jbb$<LxO z^L}^Pzjtx7eQ>5G`*Wj~+{?h=Wm<-jsl)C^&V1B~NrBB%s^}BOzG?e}7$gcZ6Z##W zeFlQQy=m2v9b+Ok4*u6LK9y|TKIL6>c%S{LJgphYI<<Ixtbs6)sbuLT9~fESEPBzP zw6~2*Ln(B)4y?|O2~1R^5^nfvq5?Y%_-a7$!17d9Z2nW@>aknMU*mp5AUpOzjO$o9 zH%o$}uhhe}W8n%pXkUVX{Vs)~kb(3RZ-XU&qr<osj#Oe$vCPIamr(N7a4BYXdCs0X z?OtNwv+)%`{za;rg^8ggVVZBoP=W<`v2oil`%N1cMZ#Kh0(ltgUObzHzqHw01;)2H z%*G@#9I!fU4hil{<#7MymO7nmhFH-C0Z?`wGDSAs_WIv_+D~~m?SGn*xf3To9ZW$s zks?%%V~rhFfKV$TMlpH2(}Ex*$##BUv=6L#4UFau@&K08#zoVb-114}-pj30Lk)P$ zOc3iw`zKN|*M=(_IWTzyy$|JnAJ3c_xUX8cKh4&zJtMR=J1V2v54yKVtv<qZxk;zl z5SC%Ze}4@`pRGZ;98oCKoHj;AhG~LEWS&wzS1K16Q3?j$`UTx#>2r>L@~w1)5qn#2 z^;mmzkUF3)0720S`G~%SZ;%2RDJWZ4(+~@V0Vd3ukWX5_IF@;R=9j-oxa;&ojG&7` z35`rG=NSi0k<K~z|0&;3Yb@4|e!8<w*<l4#NFIiHD(9HNB$me95Z)nTu2Qrbx5XQ! zArR<px)VPBtZuNck@~3m5TpVf-VsU?yvC3`AV_19&ncCL*`TX^l-0tEJpYKe4(mT$ z=u_|7A;X45>ZLfDvN36!`;b|ZBZ$s@L&GdVJKMjRuX&$%k(I{^$I{n_)#BuiJ_*S~ zjMywxQNhyM$p93L36@$tu7WoYQu(!COnSi1Z$^0)P{`l&_g`~FhOy3PIYC984c}!F zv1M>K@JmZ$m&|-`$W0bwx;*HJ4-V>n+ILH4G7fHDThVYp1hI3>tws&OVvWZcQOHWd zKq#0D>qKn73I(PZ#LbTi^Sb|5c|e<p14}8jMXxMaw#@D;7x3v@>#=`Ygp)>Yho4Ps z0PiEauH_3fvs``RW4zDb;@H1Q9U*D8jSxo+kOghk)z^>r!lzfprK&EV{8Mf!NS_uJ zjeFp!T24k#>;fecEBV(<ogaTh-}Zy>l=fiAUDpcU_sox|?XI2z`;pu(D;?5h4or=x zZ#fJ{H-)$DK2ok1u5Sn$0Z@73tR*k|LASFu^Vjf%Uijpng*lQb|1LLwr>XJyVK6Hq zIlJRPQj$Zl!s;oM)P;?Kyi2L%ZQGFv#ypZ@v*NrgUab%`cRBNYMPlIrY7518epp8I z*M>@0XjncybU&Qo1n{S)1i`)b<lsT-^euPOkU-rc4SVy|(Y(w1YqE~p^L0gjU&~5f z`WYZO&tl%Y*-lvmsE6uo@vOa#U>yRl_#@PmtaoSZPc+9Z{1Q~7k&}B5N45;3E%@7U z4Lsw|^%TrPZbQpz@i~MC?l8m};|Syp^YeZVYGbD_R^;(x$Xd6sl-K8N{IG~AC6{86 z{P*q`#u?XFOON$3FLq@vcW+e*wN2PUm|r5n;w6u>_PY@F3H6@4v7orWNB*L)D<VQ8 z9!;9~n05QoBDlgjzia)5Ar{#m&%ae89kKgnUmHoZcNjMG_a}NrsiDaprN>sY>4I<W z-%qd1Z}^*$EGb5HkwqZsGHUy4w2G_hh|MVe_yBScs>1jB#^@8C|3gi2neF{|&NoaG z%ZORL9<q$ibPQ!yKNL_#a2)V9QDaFOWQex|H0mby|EAphbk;;}LDq}h(WpEB7y=Hs z6FMM^sT7lymZ;KR?xCLy6=EIYBQEDwFO-6b&Y)_Qv50*B4Z7A5<^Dw$V`3jJNM0@3 zU$$}`ka0$G56B`KQEzd}eE^qT%H>cxPhe)_(z<7IYs19iykUv2D<uDa1OO#ChJUl- zyhQj#De~oU;h5{x?P!|T!JQqUSh8I1GL;J4;1<IS@Je13ilOVN%Bu}0(rG|{&uB_M zSN%YPI8S#l+iVXq+F&4+gY^rx95!yBxkAoiB=<4Vi{QcY2wP5Pj_Eg0r^%}OLx<Qv zQaTc-=)XxmXa|~;r(D>jcsY*u#uOP0avos~qV=?IjlaG}&!GX#ljG1o4H1p<;jpb( z;LEk}g`|}WP<Va`Tsnm&p}oZxOeiQG1*1dPM<q5+68K|hGvg^*r;rP;REJz<ngvG@ zcL>V`6KL5NlGY!w0+)+3GAIq~Y_*Tb5K7nN6Zk||$t8S^yOs&-)-H2P<!$<+hXv2s zh8K`^-)Q@OYA<C_g%ip~_Lj;SFX{(JYZteLv^|XAJ$8&q3rO>S3l&id9AjCHB{+yH z+%kro=Zfx_Co*5dU)H`pR+L+cB>gTtJIH}K%-ix4<LM4Y-*ZZakNvpXzW(v@GEG2L z%3m%x%K9$z7H?BsbmKluXmU<4`&|X&)o_Z93Q6q5Q%9F3yc+~$%RN2FI*?6aHGDyC z&eT10|CgX*wK0sTE-E_tq7&71d40U19oNkUQ5Vu98Ci&wCE-`*XNuh+Fsq9J(+G@X z0tcSHD8;iqZiUE<{kzD(c;ic}a$bHG{^i#sozv(JGGt1{u!0$lT9QnqM0Ov3X256{ ze0>f1c_hGCA9a#wJig<b<0|WpD0*dcecCyY<Ww!bidqR0)BeJNf+QY2_~~+y8JTP{ zDqHX!oyN7G#|l9uP0ZfaaBbCxsEdSmlwNqist@Oqbx9*VPLSDw<KGv}dm6_Yxb$|x zS3>}9n>5vdY?UBi(<(NXsM%7_IXp{jqnpPdQM@LpcmHsz9=y89A#9kzM~??kIgX^1 z?g*z&AdIG%dnpyXh_+~(@)ye*toS$?{>A!5Eb&daJU3)mBiy7DveAaK^ZmDxjFr{B zUAGPnTKYmXqYhkMeb!9@#I>xp>jsVv*&^c4h-i*E4y&9|Nr8y=4_^0EU^4c<;h4+5 z^azI}Y$yCOqA#c1)BE6WfrIA$aUV5Sf2>kmyg?BjzG>dSrqLccdt*hXvjT)vAJy>4 z!QF}Ib`CJjQczEuhot$3XB0)5038;*Q9D*a5^C@OU2be3R~ch}v&wfWpq0c-A$(Kc z5+i$xaV=~Iq?(Rj-4Z(Zs7Zf6ABqDRRgdzX(|u<b@XMkiYH*_>&d)2^=8aJXA-x@) zR*FH&E<idW56N$o2TUjH?V`M^M!+vSRo}jv+tO;*XTPk!L}w7N=zNds=d;`J_wR$k ze4Q88<!PMU68<qJ<O`AlTskf#l!zY5p-L%_o>(cb(U6lQe#q*7nm^sYm9Ips^11jn z`o8xxZP}@nAq|pXR;AfG7{Gfs_f-#z*xx;`%62_6CHg%ir7&sb;2LEzio^g1yCdWk zF_kXR54m>uMk7=P#Ur2I^V1J@M@E!?cu=9+<6_K8wFYASglgxHVa{z34E(3uN&-hW zB;x&~!uvS!0sHXOw{T%ioMNO|;~FPv*Fe9IzCn$CgPItM7!mc(F*2rLpz04AfitKf z;gxMpNIw}&Vl46M(3=hZ76h<(jYo&TIA5CFBlU@?0>IZu#WuLFIq8(w#~S^8!%<yT z=hO6FXa-g>;6_SxHJsFE=Q#U^W!RJm;vSnga~q9QV+3_LV1~g2IwaSLNGT1A6EcWr zUan6{zWa_gs?UZc5;^tPTmslg64hfF$WTcDoJ@@dNJl@b9>AS5A3^L-LG%_3zg{5V z&s9T4&Le=;Csku^&SK9QD2=7)_|DgGr<}aKG<~L4?^#(M${+C|@K#Kz6>FNE3jH3< z_oqwXduf))!LQw*p&6Gqd|@Bv2`CNMD0^N+Hn|E1%JD9L^_bn<5zq516(oo}b~HzS z5(sPYXo*@6eACtW{II_?;+^s#H)u1k%`eFF@P2h%xHPfhjDr8aM18$Y7poN;OSJU~ zCv+i_WVhT6`T4V(s|S<gv$n3|o`2|_sq!D(k4bLG{(SYKe0;vQIboNbLT@rvs%!6~ zWnGVQCKVRu!6gfLb6+k!LoU;H<U8_wl_Z<agd#~`fwEHlTh302$-PqAz`H}{VOIo3 z#T3~E>c^Pl7)jul=87*RhxsJgbZ{W%(Mh=HeQBCg{cVqWn9E>Jqa*-tqv9}7;?6vk zG-i0U$2*KqKhR6KMSRJedcApsBSi+|T*&-l-ogxE9;!Eyy<`@rLbW+<p3QAXL5zOU z)N<xr!aB0tuPe#aGCw@dM0i@|mcyEpwl{_B+#NpzHzg#QjuN|HB(bhj7iWG1_5Wvg z>>PDK(rV%(zffm6H7sXS(U)2qxJUdaC3rnmS){b1N=d1MX+#9j&r^I0I2W`g$W+Nx zTIyz+=cHE>leAB+Ve(6awSYF<kz8sp@wFFit*lG7m2b4Ty#7%EP*zZvuamV1`(HNk BKEeP1 literal 11235 zcmZvC1yCF?^Do5;6nCc-Dems>?i}uLa7fVt#kFX0FK)*H1rB#B?s`azySu-BPySEl zWp;Lx->hV^$z&&!Xbm-a3^Y<SI5;>AMFklxIJkE(I5>C)6oh}sLlg}6AK<2;q9gnE z_Vy1E6%`E%3L+pN(9qCeVq!AT*O!-*b9Q#Nva;&!?HwK-X>Dz-tgQ6$@hL1U%*e<{ zh);-&jNIDVT3lSLtE-!to<2G{T3uZ|e|uYdeS3I#xW2wVJ3HIo+kbnze0$p(Jbz9a zI(93ceLIG_X{*~_xmRI|+3t@jy92dZniyj}g~hl4xp3^7aU3p5C*{c0L0B2l(< zD=Xmz2d4{l=W`B)$T8~uI(&P(*?!0Df}xplIr>AG)&q!xCm7hS^0jup(#^&_CCixU zXmdR~z^`TUZ%z9Qm2>?-ec9I8)9K^G!{45V#bP&EXGVGZ(FCpCi=n@}4bnQgnQb){ zk@jo-^^Vy;!##nX_G*3M(g{*<Kk8>AQk&|xH_``Zs=ysngK2XONouy<>dd%*Hje7% zdiUpBEj_$$4mSr@FRS~j8|xB(r39@!?|%nFVqDXC;0&iaTH*`Ry0Vh9QlpBBJOabq z?UX;79OSaX!7;Ha%1G+?z>afK^=FmvgIs1<RI^VD6h>!|ltw>6gYXk&y==6N|D~h* zec|T!(We`iq{0J7rO*9oD(0Q;PNUacl)F~8rz#_e4ESi_QUx0SU9<?rvOj4DQD3kg znn@K*@2`(M5FmxR<zvgF50(7_){Fd%=@FW|Isg#Fy$k>N$h|vvTVmc=3VT%uy9E^9 z7x6u4;wQ{oc>f?uIFo#{yr88a-0GUYl#UK5y*+7UXkG6MZfIlhP5XG^cG}k{&{P=E zHzN5LpWrlqgirRu!;uXMzinzB_?XyjeIOV&qI+p~_OdCQOak>cVLpwyyDVvzxvk0< zpG|+%Heevog5DN@P1qfBB_kpRxhny*^+BaeNwCSxOx_FPRIGFN3q{lV=4-yb$tv3i zV<6#yh_-M;M96}V*q=_td02F{SI}Mp0<iJgOA~ieMe>XaT2tSGw@u_Z<idtkQ!yU; zD5jOIhj2*;<vu)WIHcUs)q#i-&-;pK<=+#3#UP$9H9ODiq`_YaZGU})c<E^i>y+}< zAk`GX>2T{hGAo>@MHZ4{<{#kZA)Tof?pZIC6EcpAN&!C%<pD7}2-FFApkFoKZ@htb zgbUI!hi*gWfFk4P-;C_P=WIU=@lBrTRLVBm&QW&ubVWy%wCKtFfk8?&VJIfme3>N< zDKF1@*#R+Omu;MLcn|zWK&*MaIyxwl^@kGON*FJGV5}(^sQGMY%UW7s%nEoue`c>t zBPPt!gDW7HVjWDyl(@dkjZRC|N}xP5fJC7prJE;JdeQ^m%ccl9&>i9$%<z3?oItn% zm_UM?>|whx9$ObmGcdIOW4rvXUGrGG&>7Ry3qPROD@DxGoq<}gg!b88=OneCJ!HQO zc=YayU*g5WCehFl*wt_T#Xetnx>IQ$w_MMbw<B$it+Z2qQ#9AH+BK(A_Bs5gTsgrD zEZ<4-1hyHE?s&Es5>S~Y0!1qmbwkT_tjPi}R*8nwRo+%s*j(HB%_AFfU|YIbuvn$G z&P!LqYK!koh3A=^6R4XF&pDbojxe;^@-EU!36gITE7P>E1)JVwie=FDKA=O6aI%7X z!Yon@^jF;X(mA&6p#i^Gv>PFdBU0Vi<d#ytnUoRwb-Y44SkSfF3z6g%?|SKu<Jw1} z*n0mzWh{RVh@n-+jh#?sNI#!0@@R;BjRY2V$#!^U7=@hDBf63bm;(DgGNCJgR0Xmp zw>28xR`0!g<(JSUcV~&I$y`s61=2X$lZr6MVm`9*T?$XNj#C=D1MFu#UVmJ_v1Pht z$u?v2O@I4J@gjJP4=wz|Az<cO#L4*;h7n$Hs~ZDc@#$2>TKH|*q4F<oalO_se{uia zbbh~%=*4>E>0<cjzNgcZ=b`NP@<m31k>$G0-&00L<hHgfFGm%v`E3<J88LduMeR!( z!PMwQv=J%A@;r38G`~-arX?`JjY4O7a6*<G@p&n_#Nr-Gq;%mJ9|}G=^F(-C3%Ih1 zemFJMT<KSeFz01ou(;+JRU-7DBho(F9>5Cao?dF<`#6-^^Jq|&UQpYm|7CnGf=-&f zQwA!=rbQBaX(^4wP*sXMItQlwH2>wh#c78Kl(I>S<d}1JKbCUguc^_)5LB1d*=__a z>f~Qm<OWymp-xi<_`PAgI-nB6lFDAp>bi^})6o&#g%%7Q<#Y0iZ@SJZ_LacK0sFLm zQ|5Z&H34Fgcr7E_*i>*92sd`X2O9h15j=p^8E^r+g>hLqo9Wh%>y9Or>upRZLaHnN zLH-SuhAml!?Eota>A6iJA&Y~o%6Tf$o=UWDRlhP+py-|CW_`b@T9U^c+&Jq9_MIFP z40W>w5Dhde6Ez6408>XY!6(Yg`Fehdy}CQHlibQVu-dSL@!h#nLX(wA?@pF5{l1tV z)L>xptaP%s?^)mA%XoKJlU1!7k*}@ONFu_IO0<_#_pzi!M?oa<_ggEw%LyemUEVH% zi*1jrr2Z~nB}}O(D3sB~DB`5Qa9|`-NZTMBpM#IjqyL_^kD&|VmRE8N{j^GJf49uO zFq8wza5Phc^H@`n-n60Qfewq_Bpv-VP`7(?eZJ({PSnx0P!Rde670^(Y_-sq4))^X z|AR4X<i>;l&y0bFdq2tXRIj~E_@TQBz@ypsrofPY!Dh=Pjp<vNEz0aA6~R(Ze3A|( zG`Tu`B$WrYIg8DyIf|Yi56*%AHf<s_y^Uv+Cnksf&WsjFnSPV?Z2j??$Hi|a55{WS zsINYbLN~l#B(EAacy2eEW`i^Z8$z2bIg(DlY5AwPl})RB^Kf@|HggTk%e&8Gs^v~7 zUCxBv+{adEJzO9Cv)$leB*X#oF06-sg}M=c74zhIxr#qqHwRuyS34fUsm?E-_C}Ih z|J<FLG6hq%JYLef+Affg)Zq`Z#FDo}#`?03)J1m0$akvpXxFe#dZ>;UR`_<dxpE<d zmvKiM@y?O*MKKdfV-6>htUhgD!(z%Q{4dqTG6gBu1DkWtz6m@QEb*>}mLBFs_ktxS z&$le=(g5MiM7B%at_l(4X|)}&XdtiB&nO`ln}J82Tn)>Nf9rM=ro^6`MD32|#m2Wh zm>fLW_Fg@Zz$IJ^+JsxUz@eL6{kvSXKf6OR3D9NF6*}1Dw!yQQy^?@W^?Z-BOs#n$ zd&mjg3N@%#C07I*E?>4TChGLomzF^P=Bb-vvI&|%B>!pi9uX*zCfY2d1pJ<W>K$=r z#aWI&8W!#Xrd@zjoz6fEm;u#-lL9SMoR&ax#R9Lk(F4PfK|Nb^6}ll>w(&<3Y3Pn^ z_AgsHA`7xO7Awr#$BF@egZWyHPu4|0Y^r*NY>IxxlW;AD@QywzF59>F7=nV2W*kSy zz0AkaOuz7vW+OUcxSAkubAeQZ7g!c$X5@;}A=!pkKr&8Ao^$>F648b<(*+-owJFNz z7JQcta=D26*>!SP+9ez7A?kxd+XKk}`j3*V&Bm@c#J+M?-_#Vjsca}15qB;2FS0SU z{C;%B+3pWlPK4ZK@hW4Ddy+~e3)WwYSnu_$aag5MdY;G}dg`;LXJY^F;^u$eR{s$r zyuCIXO860J_A=XsX#}D;f!s@Ie(UNoE%%;gHMA)HANOxY>d4WfK7D@Z79;khYcmDX zkdvJTeMw1Np?G&?%n0pIz$_*EG$w=3F+*x@Y@WqjthY(`kt`Ww1Fx8`Tn#+hz5*`N z+X&JQvLE9O8(n+XZvh6ZV+Bw~4eChO$^_t!szFT~uP>~VdiW4q#6whpH|}B9b=-`| zwXPruTE5Dgn65X=FmvK|L-;a7qxnP7OwYR>bFyAlCrbODFa<az#7`1z%@OBeK{`&_ zD<k`FhRoO>N~!&wKN6D7kz%5Jz-xC2c0j47h#Fvnvcm79uu3px_)R3|z{5(?5<=8c zR=>rNVoWEZyIK&u#PqZg+~{6nOFVrs7S#DkQLr#7WHFs!&XKH?OY*Z5%Vf-8a|aQ9 zHG13|-f}Cz@)7EL*40cihc>RERu31Z1*V1_{&7fVclqt-lHhqGs?hVn8&e1O>a^YK zOk5s)Nb*;q1Uh`?956}&<xusDhHvf~=}NQkOti0y(657wu>oJ_vN^vuL96N=XJV`` z4ey9T-+PBhcgzQv$7I(a|8!BKeXm|7_6_T0>4fS<uwd<J5*0}EZpxv%6NwCHUo)Tl z+?q_RqKZYJ_GN!y*JP=Ag=JLPelRz%dhMx(Z4ZO@y67DUeV@njPsj#hiv^J47kO8| zY0RIT4`1`0Inb}D{PtQ`n9vc-S5T=}(NfYHwH7<yjPmL!C<-8S#hOdxyJx>?b$DD} zP_TuGa%-yjz`?xY`M35VdB(^c)Awp!6L-ln0oRdpFnR`xrw7G?w1kF=MIAqj6^kcS zsB?H@G?-9x4_pzKE~QQUeY12Shw_z%cZYSeJa=FJUs>9n?V`VuTJJW(RtgjFwlVJF zk>JMTZ%txJZCn0I*{=%e93N~s@Bx1IpwtCDBa(`VifF7XF1ETHoVVAcdXLR9?L-yn z$UyNL;$c&I%3?sQ(vU!%-SevJWdmFO?QE~X=_U^Vh_JkID%}REABO5rul+N#f>qcq zr&?vt(1<VC3cDPjm%YfLxszZLWjT4wduUC#nW1eB^$UW|d0~f85V5)VuNrFo>AEd; z+`Nr&$_^KZQ!O<E>zLP=R>(rzo(~dJDk`#QxS<J~Q{pbchoNX<<>c~5c169(>$~tK z2YOEisHc(aWlRGQvnL-&!5bT>pC$6Rxu+Q{OTgL$J5~he3P}+4vD!?hQ@V|a{TP{~ zmVxlvh#%J4oy@%}%*qC|`}TkB(>a7nhO!`QlagIWh^#T)A~nfa2@7n>jE~PyS_c34 z&Alt!<%B<xV@@XE=v>5-_bN-=_zNZGmu4JByUuf+=J*@O?rTemJ(=@PaQjv4>`wRl z*tWqD1K-MUVd%FTy^|GoM@D>`3CN{8*Sgyn>QWFKr(dJalYW2~k|C29R#`psq2>-n znI(@VWzi`fFTmhahwn*72li*O;14LA*{t(q<Tjk#Bv>t2!cwjlf9bNwSBsZ`cLU09 z-$gmznXNG9&N{8SXvHk1ZyGOG;Y2ITj$|0!mzFnD<RlOec&m`eEv>mT$+anJo^0W7 zS*IOKx@!A9wc6E6d<P<&$_Uec{ebv>A`g}@DQj#3+7EH=x01u?G!C=9y2Z}tdu6+b zy&^=3(J`z73kyPnW6Eq<^t>evc8k^j+MaV|=fS$^60leZ@1@WG+6uY4LRs$<a{vjw zoLlWkAw)>L9Fbf!K0k5*y*BsGMj`7p-)~VS_X7{s5uSU9aQkhWyX^+aWBAYI<^n#W zyygIs3BI{UddIgl_E)uqh!@_nJ9+O_K7};M$#AuhN|RL`Ptc)+eEh!%UYj8<>uFFU zm?|P2BhVdn8ZSOsUY3<c=EN2Unk_r$OsLsr_&)}8jL@)xsR&zcCoNVf2I7-Dfv+^G ztwDy!%JJ&5tX5Eu&YqUf89nG2*QEb!o#tVKEh@wme**JRcd?<y^O%q;7GXAs94#=j z@}+M*Q~WcAjN9`si6Kc)kmU~sdVG{HASz?ubhcCn6u*3-5l}{XQyzaybW_8xoFL%Y zx}C@=+u2cf^;b1(^7z8!FI`mB{EL*zA0bSd1~%Cv<wQ!p4H|u({?;*jtBVcUqb?<u z5k*x~a@pVRuIL`J5MJXDJ)oD-u!Ss{WmE!L0=AOJ$3rwz!6zvW!h*sfsXkWwSptSP z29^cM5oD!d|E8IV?M>+rJ|!H-gD+7!z~NCu-+**U51G#{of|i;h^!KwbUb^>A02uR z7iM}cdwy`RbS&^o`iFjJmt>kB`em-pvWMHCMUQ0ZZVIPJkOIN=-g7-bhn$7Pbts24 zCKRBa%bc6CFC{zrf*$#}UplI{C159dcU&qJp!^#HxjMo)(ipBHt+M+GO4x64P0@Hf zoSk2~oT*qD<>9}-LMraao5rAaS=z}7aL$%ojnhi7$dmAU2WbK|%uc8oOp2LRJzAKV ztVX8?8HQ@sC48F{eymebCXs$L^*u*&o)5sw207DCMK{S9y*H}aF-j%T5xREjG?pn@ zj&t^0z=e6Jy;ZE6PCY}m9a}9}&c|}-2|V@kagjjz17)}#{|Xo5c8Ayu%Q3^6lfsa~ zz-ZWANJA%685!VmIT%*qIQ+R~GbO1mo=;!RVK{E?61=<c!~FF-2lal_n*t$TV>I7b zGZM&9%?}uJ7Y9BlUqplZ-p+JnZ=?BARb)a$`A1jy@ux?%L4A}SKn=qC!N!mvrDopG zj4yqxsN;~|-J9mp*a;65<oy9q!XZ6OR<Zb+livpWO;B=*4`MP|s}`?to;=h4vp(5W z=?Al=`BPZ-9ZKS8FWK7H9yE_c0WtQMrox`WwVnA$wHq3^RQUD|By{&&`(v#Sfzk`w zM6~HOO^W*&ZWk9WS{{xn;p&_J{?v07&aE^mQp?xx7-0x313#%CZ=vrDVYx)!dn-QO zebruB)i<(7zGlJ`5rX^CH*)VBXGW#ejWdK>NEXl8i_Gni0+0UVJ$Ga?M7zP=a1Q%# zjwRvc*p2UfvfT6JboU&Ag(yR;2o79++$l+~2u%k{aFz7cmRre#VGLRI0uJC;W=Jl4 zjxV4mBYb>U&=dr!3M#-0d}ejt6t~zXgL4(_h2uqz7-TT-E&K5*l|#``y;{eyjSXpt zXWTtFuwM8ByK}PrVs>riXn)m;v~GB?!ytO%)da48IBm!SPft(9h)h$F@$V(nF8=j4 z`H&;)!~GQQHPz}+<i=s|V#0_D78S4biih1Vkpi58Q)@cN>j#$WM3Q}7%TFqDOOEFt z2Q1T62?c+IC^@AFf5T)(zj*zD#jM5?j@;ay>Y?IOlqJo$d0bn8?H#{Y<!m!7Z~#Eu zv(iS%3&XF(Zpg}6*d*pPP>h}%`vLaj51db>tz~G$!%0C2tOco@9d|#^uO_Afe8785 zCq*jX_Y+#+h|yfb{=ERgHe~%KB1wO5i)@o`N-L1p<e`3@xXZjiq2{Vhe;+}4(sd5q zy9@D2!zKx<xv?}8mJ&`B$%rcW_(^`KO_R^827{ZX0byABbGJq;z0Bho^@?^7Re`5> z4Ml+`8LW$Mkt<3{2i+3?vVg2R!$n38p{__I)QtLRutqY4w20oqa^`o~7{C7<3M5%% z*B>IT@I5g+_75Q`&DEAb!qpmszI|BQ#}&V!>M0aR$?P^wSu!&gk^Cxkr2R=cQA_bp zO7q^O9{NvPa71#(g=WWVCN3cy_=6XFa|p8QX!x4Rx}9%LtGG=qbj1ktu&k@Li_Mm2 zN9<6ECA~=%nXwM<*nM&FG~Kdh1dfidbEloi;*-p3pX>OGVx*Dk{`omv%-+(B&RXwS zMi2{%5ioGhv7=}e7d?szB*h;ci2qN@@n^cAZ?n9W43*v5gnz3d=qb&8!!U$%E6M$4 z${f@@WBL5t<8U3Tb<0%OAdzjYcto}%;3qDe)fkE`g+d+nU#x$&0>Z}SA?tW6r0I}V zQlWIc-VokbU+!n7VR&-+&6yc7mfi*NLOpe!k=e1$mLYy`_Q3#M)ef?$<BgOTBr-~x zR##n-#by;_{^Jf+7&!0*Gh8SYGao77%YyWU{_r-c(jVLyA(^Mq;CZp1UQsgGPN^r^ z;3l15_n`%}K4KVemTteZxLo}hpb97>eTFFhsns#lv+0st9snI7cF_el(y9Cn00HtA z$2bXHp%YQ_rkpmdUfzstttZhJ7I5b;BSc|Q96ed74$QqGIu_NR?AF@rz1PL#@igHA zTtq1EvIJ}tEga-=lyLyq$GP$Al04MYKmKCNDm=?P9J%FKe+G$ewfKk*KT6XM;?XzV zom^kEzZ)azCv1JC9Aj$Uf#}N72!#!_iGAi6de*VhVTCdn0!!S-RW?Db^tO%f>w(TO z_c<+-vDNLufK!(Kq$n>Ypdq{^E`2t*$G28Bfy9pkyq)It&UZq^?(C8x0-Xm@S?Zv? zJhz$Hvmn+vtlFu9S9?kI_i8%lgZgC`ahBxI>UM-t3GrH%hRhI{rLm*X1;G|<iPOQ3 zHk<h*HCE!*UhlPD5m8Y3aB5>jSfG_W_tOPlcv>BdoE=J>6#rw;;;-H87*?+UFM3GK zGJ{+7CiXcA0uExOL?xo+Ne`^8V2jW_Y;7vI5+D}oBv9>uXUlDwU2R3XUam!AA(pa% zw-ZwSdcY82(jQs8z=1zM66`0i&Er*La^iI%(yb+&j{%OOz~1Oztmcc(&(8*o+3LZN z1R5F%yV0_Bl|SR+NiTxauqZ6KFY6R{1#M9x7o?HT6|{jn;O27eNPycS8;3<SNw-Cu zqg`!4DDXGmka+@7gE=p*?y;TN2=4Ep0Tn{pwHB!kS)0<{@L~<&v3bXwZzOM|$b0$m z3SK|p2d5iw?$oAVZoc^b`>V#Z_>Io;0}oyn$KfmuaGv@L@B!$>@0mHi+R%1)13=W( z5G!K?set|lk*jIc04~@*Bp_>m0SMKD8af|rYZ#%?AHFmz4zNGmFps{xhCXS1(8g6Y zpXjI7E|&%!1DxBRL;~^<f0dN;)n;pvc}j#FUf5DS<J#qj`~S2NDWO%ZlJO9!Zw1UM zJStjOpK$P+(?q*iaaUF%EhGXSre!wu9+N)fu)jWDqEAw_{y7xhZ#Ebevu3#-7?m1M zSKP;6NWQPaIMUb4Hf;h}wV|durC?;T3%(GtQ^GZe-ZMD``{s~&lE|hnnvxjpuc(F0 zwUEPa>h-W}wa(8}SXP{9WwL+0MyFzg-#mhN^*85D_nK*5ohra@mTAs6Hb(EfTZjx9 zDqmW7l+ik29eSW=Zzlzx)Q@*zuf!La3p*%)1Q4ON>c1jaxp(Hpd@etAdKdnJafHxm z3Is|sEdAgq8I&yd#2at}ZI1X4&w5|XxA&BIHbCX#O8Da7pDMMK+njt*fEd!8RDFq$ zNklkZ!W}VDSZ78Mf`!F}!39gihFnB1I59y)s70|r<Z;-JS+ApYamH0|-h9M@so&5v zkYAwo0mYsMwGiJHh9z-=LZBbuN_$5~^%5zF?*fKGsVhX!QLCSge+?Y{-FS}se4(F@ z@G>7lp#!L)`%olm^r*akcqcCM%?LEoTUX6&Tu8!NmQ#wqTZ~yn=XQj>^gf@@?ZHZ( zz{{|C*pmf|c;iO47oB1hb+OIPtM*6#Y?VPE6rr`wNUvY#+#(D-{dHuMDK?4rUx*{- zWBY3p0a7TUE_D|8CaPD=dXp*v_9WpBWk!(s^mHv@FA2Vdo2yp2u2*TMX%12|f=1>O z7V7LOb|gZ?`u;=#Sox{+wc0*du>%LPW5zL$2RV?8(vI{;EyocW4)uW#8T4g+y}7bp zvVs&mg$roZo)UIEI&F>jLaSfX2C&(v#dr!9ICgz`<>aA9WH<gq5T90->0i;+>^=ec z&d_#kHK^#Jsy_7Za&0ez2dH?=0w2Ur-h<ZoUbTFj7~jJalk<Baab+<oG_jVmiu)$? z6@P)G9+6ZthPg!FD9ZJ;5(hdZk0pcH5IAmU=!Dgri+@d5o7s0P;aY<Xg;%gcw22k+ z!a&ljb04D?+y5><2**KfI@}>QCj}rC;_0>i*;%W!ch5mz;y*a)x9nDf3MEH~n?A+O zF5@}hTV8H|Y@IMRkj_XpY&+#GO0(jaIp`C5!L*QDv*Q{0sb6w5Hh^M*8t=8{sKEL= zhL~6AqRLO?<h|SPe3nZI%Blw)0gxS=zqcQb|5Kib*L!OYr*aAYc;jqMsmv2Ox2B$} z#3ucs>)e(l?+T>RVF{UCgM7KIvJ4kOja)mns@Ntl-QBig21OLI5voF=(Q)v2?lEA} z_<Y?pa8DEoex(jK@UDq2%@EXFrQ4s#8tOY~>|+fNhp>rys!JV15z@a;Yw;KBGY83| zWQGTNNPjeUd6bx2K%>y_)_<Dxp5-U0tJ;0)pBC#3r(Y}@cjTh6nD+5<M}u%ZM1t`0 zSB_4b%dBc@O8&o%l3sE%gO9rLfHpYqN8wS(-_*pcs|qUdPtC~D9>$U2cW&hHUtM3% zb{#{FR0kQEomw4;eN3@Soi{Q|teQ#komLes#M;*QppM>_8Zv}mX$&m3Wzm0-@)udk z_3Yvpx*Bh$?a`pN{HYWzj!Jtke9j_Mxud3Ct_yio1NKWs8)=GdV&kQL$%IAeA?qg^ zM&07aQ-*2f=m=54SlyV%<jK#p#BQx6etgvk`JIUDdYtcySM4F@VX&!}m>}RE<xkv( zI87?eX!U_JnC87C+(pTi#S3mzf8-$<D%CUN_ZjiZ+;pdpUgmMr<^trg=5d&XdD#oq znygd*yo|BCjb7n&i{^Dk`$XI;r2fhXZg`*Lw$H_4?ks?;rjW39k_FTEmBhYY5B7}m z$I3*kX@A4~_zd%dJHLMMZZVP+Ynuf5Bbx~ao1Nu~(^7RXOCHul2=?>pedttAXje1U zenKa73R{q<@ZZP(avV6}{1a|HH<hP<#c_wQ0IeUPIg}ltTiYEffXw;sQ_~*aYRLVn z@TTTn3E!O9rQh8m|3z8|OqPA5)B6=p<oi8k_mQmFDr;IUL$IKui>UkUUd#PaIvzvR z+E?7Fb`WPtdv2~lGoEAbijnV_RlX-QJXTl<nBGzDcQ3_8;NHWYSJTvF0O_zJ$q|be z6n~?BVM&T3Jd4^OsHJA9)tFqGhE}}jXtHwD+z;H7the9enF)0Gxz+9JnX-yM-b3!X zS|j(w@j*2i*vnA~pqh{bhu`SXjC3vyf}&#hRSjj<t99Ek1=DxmFR9;k&)N~at$#Z^ z;P$^ho>vC%JQ#1}V0QYWe#z@K`m(i&Dx1*MV#BiLtB~L*MpDBD-Hu^DZii1{hBoi~ z!QAL^VW;df!V2&sbEk21#;Kf+?qm%Z7MtKE)xfqg*85E|ptX;^Yaq`D-#ddQC@*_r zQ=6qe*){m*Z}#&IwZ;Lp`?+Gf5C78@r5JidSTN@RIvPDXQY|XJwL$_gu7(gA^X4%t z9MyzjcRK>Pyk?TgEt|l;*c7fX_>@@aX-F7;o^W^%*C2EV98kWP(D%MDROrg<sJu;l z_|(JvEl?oIn8128Z9yLO*~St4)UypJ&+U?_-@u}+2jbKE4fV>xZw6z()%mGZhG|;( zRQUm2*{KYZm)!0j2Eoo?@HjEnXKLDBd%;m!*@QQjr0jP?BC_BUGqU^;fQ1<IqZZK@ zDZhcrEC7e!<*&ivIx#*?G(5ESHPiDEzjF7FKLB%Vfv%>OevKYjEh5dcD3W7{Ziw82 z48z2`nOid4Q1!r_?e^<scXpQQOWve6?4Lg6jL^}aIq6G547Z7b{mB?b#4O5YQAuH= zGnDqFx6}3N#*4mNSM^3Q;ADR;(buQr=WyG(OR8L>o6P)3mSVe+>TCLaso<C|=aZjd z6&+9?Bjeolj&EGqd!uIAhjP?i*TiRUI%m}G273DhTP*L((djHkH)@M=Ve*5?J(1zC z%|lGWots(zahqr|-f3y%ZM{exXyh0X>UR8hZcgKd+?iNHg65K3z*r{1^1wXz9y<a{ zTFt|EDGw9i;_4T$N#&gMuEx(`^xMK=@_e39SsIXI+3oTvhcM$Dq5kApZa}>j5MwO5 zx+@ZW2%@$NNS!ZbK`Q6CB`M_T+u4^#fFe(Dcr`%>K9O!Kvwb%IOU@O@`V^XYxZyH? zr5Vz#s$m3+3n9ArF?{B-+4qqR+9tRk^;2G#nh5h}UPbPT$Tv!y$w0&<dq<ZD7|o&F z$>tr4a4^9t3g$b+cdh6FXbpMxa~Oy?{Ej1=Q4$*YyU}tXQTTf-?86iIApL-N`k$h# zSgs<%Z+1I%w6atUT7?q1F}~!B2$Lo)EQ-^STRLq`B|fHn(OsS`xrMrjAzL~}G@*xN z_HyVi;9EcK)n*n|!Phb&$43H(rVa{PE#S&{Wn@$e%q!-Bx)G}NKz<cUja+GIUo8`V z>sF1x0`jAg;S=kR<S>G!Qsz=}wZo^a#mbj?!b!&6b|akp&|RU_{^B}R3Bn>0s%=a= z@zx!aND;!V@=lQtIVf2e%t5)8+oPx2E=z|cep1?<qwHeTes`FRrNhv0QqY1+kT3QS z#A;^0QdB)akT3Tj!SMEBhEjvQ8qRa%J&G%=7FS3oi0_bp)~7GDCydx3by5w6t)_%M zep&IJ(r3I5^%sPU$OrO2?xmf;+f(pwhmUA|=lq|Oe~F%QI$V26;&h-*OBR~INfn|7 zORNSZ!bQ^uh}OzE;=<F$gXp)ej9CfWj>g;E`5Lu}tztO`|4(+@^@)=x`43*qIQ{FB zd%8jVESK7fZ_Wa&jg_GEB<kz(Lsn)f1b6n<E<Dpq`?8YvqLc>|D8O1~a?yZ;iW^e= z+X13<<Tzu%tu%bzPy*#RVbD%7H%ZINP18SVM>Zk33l2E|d-2Z9%rT4dRa1?gntwrU z!znWnI=SZ8X3R=W9Ffbw9&HfyE;^*;kaV0YlD0&i5u-;ZABpW^)VG+Q$QZ1U!Vq#l zQ7@O}2L$U{!d}OO;}E2Fj7hNM?%O&)uUU^Ot)^J+woNEq{+dXLrcVcigB!1T2+Q++ zdX~&6zPSXt`xUh&(0rhJKI#Isa9Z`jcX5y?7T|6RwQeo)CyuIa0cVr4Elk9xmAtsA zx=4Jbp5idOBNroQje5zn$#zwZT#JjY7zrjHGAT5r%C>o`xj_3)F^WlepL=YpNHAKH zI2h?tosmhEl`Sb$T?&@pO1Sr4X=h^I2`F}W7b&T2G0ny^!t>oL5+-X1VPFgPMsq}a zOdYQgUaUk~-bQRnbDq8SS7v{VvCsn)1N8tqatxDh=d&F1GF_hIfqf^6A1dstrp#f> zW=PubBeQDB4D7f#uk;=kx-ba`g1-qe1U943ONBGKMl7pci7SMtGN0saX4grLe;#@{ zx>|iYxeHV;=^$9k5ND;0c3OX-)+9_-HG)L79$0sS9MWs)Pg(I5K7Jl4{dR9Dka}w& zlzD5xlY47XrvQK`9C5x%=<vpkDSSY0(8+~s$uBCt<q05W;z@1H2)tgYD_AD`&icVP znp7cNL37)MgAIZm1|*PtfAm9_5`dvx%Ddq-N2LIRyXPFPsMmZGXRXwa-GELT=ZqZ> z)UtsJxsX_R6DQBsn%_><{*G+uD#nDUEdrF6(ig^8r%c#R3X-$)qO!XyvUN)!9;B03 zkhNN47%PSQY&`9DIeXpCjI;lzfokAvAxQ;tP`_kL16f0hgJ*~g%_qh%{I0_AnY`BP z?d?)s6>voN5>1Lq8!s0hXcO*ZMSZ?_Z}Gs)`l{Q-dGd_IL7=FeUpaPb<@@f&E@&sb z1jSB~1{W)4bWJ*Xb8#2(2?IakvGR&`wsa)ClU~Qp>}HBVN5gj9yQ3L7ScyR^YCx3d zZo0ak7wbuIC^(%k2*W|~Sqbf6aJVs0G-z=DJ@R-Ffdf&$gCGbz1A7d4U;1JktDoH= z0D=A&-RH6XzX$X`=hX=1VoTYH?q1WPakF9J|4V@3hJY$sCLCo0@N~mgp0Yt+npC+` zFIs^)WOpVaPs{W;AHEtJGp#Hf8?#E+9cI~r*2IszicNs6Ra_o~`zaiHsA|NrC~}~n zS3g;RUfV8kGz7O$Db5OET{NBq+oyMYH+@_V?Ko6F!duY%rSSUXs20X{tQQFI5W26Z z8Dm^&y6<$ea*%xWwYC~@<~$G(ZTjxOkM{-Wq+~dR<FqINgTS{0#WI2;YE54p_!XYF zZ&Vmp;>^2Xv++BRDrq#*Bfg>y5^D~ThkGi7C??V)w@zYNAQn*mf?b_!(wkWtoQz3> zRENViCR?ukxAas}VnCq8iVQ3<V8U8@LML%G;>Uo#eYUc&YfPr`OlX3<7d+K%P7kiy zN$WRE@ngShr<Kty`)JZxxiw4r^c#oS0=wl|b$Rtae!(-hRO^8cJM%}2YG;8SHy03( zy_h)r(8n2iHO^#ZzqYHMm&wmFq7IE8O1}BJ@_zIBdox>PMky-($T{LwL;zIIKK$qM z?))lFI#-zg*^h{?pkV`i)B|-q`$^UDx;f6_<9&<{D5!1_#nPp)i-l`9_9_8UZIrE) zO=I$wjJI3Tvop#d@kMsm{t3bR4K0h?@~6-KGKV18%eP!-7r2<TFnXEkq+-a6=;4TI z@2F&y^KJ6qlE=X{IE^nP>6JaG@Rd3Vvt9EfE-3y-aXHO+zd{_uKSK1K(`MyMLD_A? z>BpbLgDIf#@VwSpt&GWkNow4aQXh91p0umuw4rXyhcKyvL;i);*1MSo=$7jC{inZx zF>Ojvn);vVXzLk0<B!tMj$r(YR^~)lG|r^V+_=lVoKqJ)FzMrRIiBg@E|xsbc+_-S z>}KLp!M0#qCuq|J^?v^uu9pK&7SE*T#g5?1HSibTH<ut&F+^XK7O$77cy%&E?guFM zr%m}Y7CV1f*6>(5=eMhfPpmV}>afOQkn;az@%~?eF#i3?{jb*f1p)b9bVIhpyW&5X NqO6)swUl|te*?jIBP##^ diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index 1045c1321..2910e1580 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -90,8 +90,8 @@ { var host = window.location.host; - // Redirects apex and rt to www - if (host === 'draw.io' || host === 'rt.draw.io') + // Redirects apex, drive and rt to www + if (host === 'draw.io' || host === 'rt.draw.io' || host === 'drive.draw.io') { host = 'www.draw.io'; } diff --git a/src/main/webapp/js/PreConfig.js b/src/main/webapp/js/PreConfig.js index d0ab54197..74b611072 100644 --- a/src/main/webapp/js/PreConfig.js +++ b/src/main/webapp/js/PreConfig.js @@ -5,5 +5,8 @@ // Overrides of global vars need to be pre-loaded window.EXPORT_URL = 'REPLACE_WITH_YOUR_IMAGE_SERVER'; window.PLANT_URL = 'REPLACE_WITH_YOUR_PLANTUML_SERVER'; +window.DRAWIO_BASE_URL = null; // Replace with path to base of deployment, e.g. https://www.example.com/folder +window.DRAWIO_VIEWER_URL = null; // Replace your path to the viewer js, e.g. https://www.example.com/js/viewer.min.js window.DRAW_MATH_URL = 'math'; -window.DRAWIO_CONFIG = null; //Replace with your custom draw.io configurations. For more details, https://desk.draw.io/support/solutions/articles/16000058316 \ No newline at end of file +window.DRAWIO_CONFIG = null; // Replace with your custom draw.io configurations. For more details, https://desk.draw.io/support/solutions/articles/16000058316 +urlParams['sync'] = 'none' // Disabled realtime \ No newline at end of file diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js index 3684db296..da289bd66 100644 --- a/src/main/webapp/js/app.min.js +++ b/src/main/webapp/js/app.min.js @@ -133,8 +133,8 @@ var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456 "");l<a.length;)d=this._keyStr.indexOf(a.charAt(l++)),e=this._keyStr.indexOf(a.charAt(l++)),g=this._keyStr.indexOf(a.charAt(l++)),k=this._keyStr.indexOf(a.charAt(l++)),d=d<<2|e>>4,e=(e&15)<<4|g>>2,f=(g&3)<<6|k,c+=String.fromCharCode(d),64!=g&&(c+=String.fromCharCode(e)),64!=k&&(c+=String.fromCharCode(f));b||(c=Base64._utf8_decode(c));return c},_utf8_encode:function(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b+=String.fromCharCode(d):(127<d&&2048>d?b+= String.fromCharCode(d>>6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(d&63|128))}return b},_utf8_decode:function(a){var b="",c=0,d;for(c1=c2=0;c<a.length;)d=a.charCodeAt(c),128>d?(b+=String.fromCharCode(d),c++):191<d&&224>d?(c2=a.charCodeAt(c+1),b+=String.fromCharCode((d&31)<<6|c2&63),c+=2):(c2=a.charCodeAt(c+1),c3=a.charCodeAt(c+2),b+=String.fromCharCode((d&15)<<12|(c2&63)<<6|c3&63),c+=3);return b}};window.urlParams=window.urlParams||{};window.isLocalStorage=window.isLocalStorage||!1;window.mxLoadSettings=window.mxLoadSettings||"1"!=urlParams.configure;window.isSvgBrowser=window.isSvgBrowser||0>navigator.userAgent.indexOf("MSIE")||9<=document.documentMode;window.EXPORT_URL=window.EXPORT_URL||"https://exp.draw.io/ImageExport4/export";window.PLANT_URL=window.PLANT_URL||"https://exp-plant.draw.io/plantuml-1-2019-7";window.DRAW_MATH_URL=window.DRAW_MATH_URL||"https://www.draw.io/math"; window.VSD_CONVERT_URL=window.VSD_CONVERT_URL||"https://convert.draw.io/VsdConverter/api/converter";window.EMF_CONVERT_URL=window.EMF_CONVERT_URL||"https://convert.draw.io/emf2png/convertEMF";window.REALTIME_URL=window.REALTIME_URL||"https://rt.draw.io/cache";window.DRAWIO_GITLAB_URL=window.DRAWIO_GITLAB_URL||"https://gitlab.com";window.DRAWIO_GITLAB_ID=window.DRAWIO_GITLAB_ID||"5cdc018a32acddf6eba37592d9374945241e644b8368af847422d74c8709bc44";window.SAVE_URL=window.SAVE_URL||"save"; -window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.VIEWER_URL=null;window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch");window.TEMPLATE_PATH=window.TEMPLATE_PATH||"templates"; -window.NEW_DIAGRAM_CATS_PATH=window.NEW_DIAGRAM_CATS_PATH||"newDiagramCats";window.PLUGINS_BASE_PATH=window.PLUGINS_BASE_PATH||"";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||RESOURCES_PATH+"/dia";window.DRAWIO_CONFIG=window.DRAWIO_CONFIG||null;window.mxLoadResources=window.mxLoadResources||!1; +window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.DRAWIO_BASE_URL=window.DRAWIO_BASE_URL||"https://www.draw.io";window.DRAWIO_VIEWER_URL=window.DRAWIO_VIEWER_URL||null;window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch"); +window.TEMPLATE_PATH=window.TEMPLATE_PATH||"templates";window.NEW_DIAGRAM_CATS_PATH=window.NEW_DIAGRAM_CATS_PATH||"newDiagramCats";window.PLUGINS_BASE_PATH=window.PLUGINS_BASE_PATH||"";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||RESOURCES_PATH+"/dia";window.DRAWIO_CONFIG=window.DRAWIO_CONFIG||null;window.mxLoadResources=window.mxLoadResources||!1; window.mxLanguage=window.mxLanguage||function(){var a="1"==urlParams.offline?"en":urlParams.lang;if(null==a&&"undefined"!=typeof JSON&&isLocalStorage)try{var b=localStorage.getItem(".drawio-config");null!=b&&(a=JSON.parse(b).language||null)}catch(c){isLocalStorage=!1}return a}(); window.mxLanguageMap=window.mxLanguageMap||{i18n:"",id:"Bahasa Indonesia",ms:"Bahasa Melayu",bs:"Bosanski",bg:"Bulgarian",ca:"Català ",cs:"ÄŒeÅ¡tina",da:"Dansk",de:"Deutsch",et:"Eesti",en:"English",es:"Español",fil:"Filipino",fr:"Français",gl:"Galego",it:"Italiano",hu:"Magyar",nl:"Nederlands",no:"Norsk",pl:"Polski","pt-br":"Português (Brasil)",pt:"Português (Portugal)",ro:"Română",fi:"Suomi",sv:"Svenska",vi:"Tiếng Việt",tr:"Türkçe",el:"Ελληνικά",ru:"РуÑÑкий",sr:"СрпÑки",uk:"УкраїнÑька",he:"עברית",ar:"العربية", th:"ไทย",ko:"한êµì–´",ja:"日本語",zh:"ç®€ä½“ä¸æ–‡","zh-tw":"ç¹é«”䏿–‡"};"undefined"===typeof window.mxBasePath&&(window.mxBasePath="mxgraph");if(null==window.mxLanguages){window.mxLanguages=[];for(var lang in mxLanguageMap)"en"!=lang&&window.mxLanguages.push(lang)} @@ -1070,10 +1070,10 @@ mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon);mxCellRenderer mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape);mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel);mxCellRenderer.prototype.initializeShape=function(a){a.shape.dialect=a.view.graph.dialect;this.configureShape(a);a.shape.init(a.view.getDrawPane())};mxCellRenderer.prototype.createShape=function(a){var b=null;null!=a.style&&(b=mxStencilRegistry.getStencil(a.style[mxConstants.STYLE_SHAPE]),b=null!=b?new mxShape(b):new (this.getShapeConstructor(a)));return b}; mxCellRenderer.prototype.createIndicatorShape=function(a){a.shape.indicatorShape=this.getShape(a.view.graph.getIndicatorShape(a))};mxCellRenderer.prototype.getShape=function(a){return null!=a?mxCellRenderer.defaultShapes[a]:null};mxCellRenderer.prototype.getShapeConstructor=function(a){var b=this.getShape(a.style[mxConstants.STYLE_SHAPE]);null==b&&(b=a.view.graph.getModel().isEdge(a.cell)?this.defaultEdgeShape:this.defaultVertexShape);return b}; mxCellRenderer.prototype.configureShape=function(a){a.shape.apply(a);a.shape.image=a.view.graph.getImage(a);a.shape.indicatorColor=a.view.graph.getIndicatorColor(a);a.shape.indicatorStrokeColor=a.style[mxConstants.STYLE_INDICATOR_STROKECOLOR];a.shape.indicatorGradientColor=a.view.graph.getIndicatorGradientColor(a);a.shape.indicatorDirection=a.style[mxConstants.STYLE_INDICATOR_DIRECTION];a.shape.indicatorImage=a.view.graph.getIndicatorImage(a);this.postConfigureShape(a)}; -mxCellRenderer.prototype.postConfigureShape=function(a){null!=a.shape&&(this.resolveColor(a,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(a,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(a,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(a,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(a,"gradient",mxConstants.STYLE_GRADIENTCOLOR))}; -mxCellRenderer.prototype.checkPlaceholderStyles=function(a){if(null!=a.style)for(var b=["inherit","swimlane","indicated"],c=[mxConstants.STYLE_FILLCOLOR,mxConstants.STYLE_STROKECOLOR,mxConstants.STYLE_GRADIENTCOLOR],d=0;d<c.length;d++)if(0<=mxUtils.indexOf(b,a.style[c[d]]))return!0;return!1}; -mxCellRenderer.prototype.resolveColor=function(a,b,c){var d=a.shape[b],e=a.view.graph,f=null;"inherit"==d?f=e.model.getParent(a.cell):"swimlane"==d?(a.shape[b]=c==mxConstants.STYLE_STROKECOLOR?"#000000":"#ffffff",f=null!=e.model.getTerminal(a.cell,!1)?e.model.getTerminal(a.cell,!1):a.cell,f=e.getSwimlane(f),c=e.swimlaneIndicatorColorAttribute):"indicated"==d&&(a.shape[b]=a.shape.indicatorColor);null!=f&&(d=e.getView().getState(f),a.shape[b]=null,null!=d&&(a.shape[b]=null!=d.shape&&"indicatorColor"!= -b?d.shape[b]:d.style[c]))};mxCellRenderer.prototype.getLabelValue=function(a){return a.view.graph.getLabel(a.cell)}; +mxCellRenderer.prototype.postConfigureShape=function(a){null!=a.shape&&(this.resolveColor(a,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(a,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(a,"gradient",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(a,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(a,"fill",mxConstants.STYLE_FILLCOLOR))}; +mxCellRenderer.prototype.checkPlaceholderStyles=function(a){if(null!=a.style)for(var b=["inherit","swimlane","indicated"],c=[mxConstants.STYLE_FILLCOLOR,mxConstants.STYLE_STROKECOLOR,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.STYLE_FONTCOLOR],d=0;d<c.length;d++)if(0<=mxUtils.indexOf(b,a.style[c[d]]))return!0;return!1}; +mxCellRenderer.prototype.resolveColor=function(a,b,c){var d=c==mxConstants.STYLE_FONTCOLOR?a.text:a.shape;if(null!=d){var e=a.view.graph,f=d[b],g=null;"inherit"==f?g=e.model.getParent(a.cell):"swimlane"==f?(d[b]=c==mxConstants.STYLE_STROKECOLOR||c==mxConstants.STYLE_FONTCOLOR?"#000000":"#ffffff",g=null!=e.model.getTerminal(a.cell,!1)?e.model.getTerminal(a.cell,!1):a.cell,g=e.getSwimlane(g),c=e.swimlaneIndicatorColorAttribute):"indicated"==f&&null!=a.shape&&(d[b]=a.shape.indicatorColor);null!=g&&(a= +e.getView().getState(g),d[b]=null,null!=a&&(e=c==mxConstants.STYLE_FONTCOLOR?a.text:a.shape,d[b]=null!=e&&"indicatorColor"!=b?e[b]:a.style[c]))}};mxCellRenderer.prototype.getLabelValue=function(a){return a.view.graph.getLabel(a.cell)}; mxCellRenderer.prototype.createLabel=function(a,b){var c=a.view.graph;c.getModel().isEdge(a.cell);if(0<a.style[mxConstants.STYLE_FONTSIZE]||null==a.style[mxConstants.STYLE_FONTSIZE]){var d=c.isHtmlLabel(a.cell)||null!=b&&mxUtils.isNode(b);a.text=new this.defaultTextShape(b,new mxRectangle,a.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,c.getVerticalAlign(a),a.style[mxConstants.STYLE_FONTCOLOR],a.style[mxConstants.STYLE_FONTFAMILY],a.style[mxConstants.STYLE_FONTSIZE],a.style[mxConstants.STYLE_FONTSTYLE], a.style[mxConstants.STYLE_SPACING],a.style[mxConstants.STYLE_SPACING_TOP],a.style[mxConstants.STYLE_SPACING_RIGHT],a.style[mxConstants.STYLE_SPACING_BOTTOM],a.style[mxConstants.STYLE_SPACING_LEFT],a.style[mxConstants.STYLE_HORIZONTAL],a.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],a.style[mxConstants.STYLE_LABEL_BORDERCOLOR],c.isWrapping(a.cell)&&c.isHtmlLabel(a.cell),c.isLabelClipped(a.cell),a.style[mxConstants.STYLE_OVERFLOW],a.style[mxConstants.STYLE_LABEL_PADDING],mxUtils.getValue(a.style,mxConstants.STYLE_TEXT_DIRECTION, mxConstants.DEFAULT_TEXT_DIRECTION));a.text.opacity=mxUtils.getValue(a.style,mxConstants.STYLE_TEXT_OPACITY,100);a.text.dialect=d?mxConstants.DIALECT_STRICTHTML:a.view.graph.dialect;a.text.style=a.style;a.text.state=a;this.initializeLabel(a,a.text);var e=!1,f=function(b){var d=a;if(mxClient.IS_TOUCH||e)d=mxEvent.getClientX(b),b=mxEvent.getClientY(b),b=mxUtils.convertPoint(c.container,d,b),d=c.view.getState(c.getCellAt(b.x,b.y));return d};mxEvent.addGestureListeners(a.text.node,mxUtils.bind(this,function(b){this.isLabelEvent(a, @@ -1090,8 +1090,8 @@ mxCellRenderer.prototype.isShapeEvent=function(a,b){return!0};mxCellRenderer.pro mxCellRenderer.prototype.installListeners=function(a){var b=a.view.graph,c=function(c){var d=a;if(b.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(c).nodeName||mxClient.IS_TOUCH)d=mxEvent.getClientX(c),c=mxEvent.getClientY(c),c=mxUtils.convertPoint(b.container,d,c),d=b.view.getState(b.getCellAt(c.x,c.y));return d};mxEvent.addGestureListeners(a.shape.node,mxUtils.bind(this,function(c){this.isShapeEvent(a,c)&&b.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(c,a))}),mxUtils.bind(this, function(d){this.isShapeEvent(a,d)&&b.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(d,c(d)))}),mxUtils.bind(this,function(d){this.isShapeEvent(a,d)&&b.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(d,c(d)))}));b.nativeDblClickEnabled&&mxEvent.addListener(a.shape.node,"dblclick",mxUtils.bind(this,function(c){this.isShapeEvent(a,c)&&(b.dblClick(c,a.cell),mxEvent.consume(c))}))}; mxCellRenderer.prototype.redrawLabel=function(a,b){var c=a.view.graph,d=this.getLabelValue(a),e=c.isWrapping(a.cell),f=c.isLabelClipped(a.cell),g=a.view.graph.isHtmlLabel(a.cell)||null!=d&&mxUtils.isNode(d)?mxConstants.DIALECT_STRICTHTML:a.view.graph.dialect,k=a.style[mxConstants.STYLE_OVERFLOW]||"visible";null==a.text||a.text.wrap==e&&a.text.clipped==f&&a.text.overflow==k&&a.text.dialect==g||(a.text.destroy(),a.text=null);null==a.text&&null!=d&&(mxUtils.isNode(d)||0<d.length)?this.createLabel(a, -d):null==a.text||null!=d&&0!=d.length||(a.text.destroy(),a.text=null);if(null!=a.text){b&&(null!=a.text.lastValue&&this.isTextShapeInvalid(a,a.text)&&(a.text.lastValue=null),a.text.resetStyles(),a.text.apply(a),a.text.valign=c.getVerticalAlign(a));var c=this.getLabelBounds(a),l=this.getTextScale(a);if(b||a.text.value!=d||a.text.isWrapping!=e||a.text.overflow!=k||a.text.isClipping!=f||a.text.scale!=l||a.text.dialect!=g||null==a.text.bounds||!a.text.bounds.equals(c))a.text.dialect=g,a.text.value=d, -a.text.bounds=c,a.text.scale=l,a.text.wrap=e,a.text.clipped=f,a.text.overflow=k,d=a.text.node.style.visibility,this.redrawLabelShape(a.text),a.text.node.style.visibility=d}}; +d):null==a.text||null!=d&&0!=d.length||(a.text.destroy(),a.text=null);if(null!=a.text){b&&(null!=a.text.lastValue&&this.isTextShapeInvalid(a,a.text)&&(a.text.lastValue=null),a.text.resetStyles(),a.text.apply(a),a.text.valign=c.getVerticalAlign(a));var c=this.getLabelBounds(a),l=this.getTextScale(a);this.resolveColor(a,"color",mxConstants.STYLE_FONTCOLOR);if(b||a.text.value!=d||a.text.isWrapping!=e||a.text.overflow!=k||a.text.isClipping!=f||a.text.scale!=l||a.text.dialect!=g||null==a.text.bounds|| +!a.text.bounds.equals(c))a.text.dialect=g,a.text.value=d,a.text.bounds=c,a.text.scale=l,a.text.wrap=e,a.text.clipped=f,a.text.overflow=k,d=a.text.node.style.visibility,this.redrawLabelShape(a.text),a.text.node.style.visibility=d}}; mxCellRenderer.prototype.isTextShapeInvalid=function(a,b){function c(c,e,f){return"spacingTop"==e||"spacingRight"==e||"spacingBottom"==e||"spacingLeft"==e?parseFloat(b[c])-parseFloat(b.spacing)!=(a.style[e]||f):b[c]!=(a.style[e]||f)}return c("fontStyle",mxConstants.STYLE_FONTSTYLE,mxConstants.DEFAULT_FONTSTYLE)||c("family",mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)||c("size",mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)||c("color",mxConstants.STYLE_FONTCOLOR,"black")|| c("align",mxConstants.STYLE_ALIGN,"")||c("valign",mxConstants.STYLE_VERTICAL_ALIGN,"")||c("spacing",mxConstants.STYLE_SPACING,2)||c("spacingTop",mxConstants.STYLE_SPACING_TOP,0)||c("spacingRight",mxConstants.STYLE_SPACING_RIGHT,0)||c("spacingBottom",mxConstants.STYLE_SPACING_BOTTOM,0)||c("spacingLeft",mxConstants.STYLE_SPACING_LEFT,0)||c("horizontal",mxConstants.STYLE_HORIZONTAL,!0)||c("background",mxConstants.STYLE_LABEL_BACKGROUNDCOLOR)||c("border",mxConstants.STYLE_LABEL_BORDERCOLOR)||c("opacity", mxConstants.STYLE_TEXT_OPACITY,100)||c("textDirection",mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION)};mxCellRenderer.prototype.redrawLabelShape=function(a){a.redraw()};mxCellRenderer.prototype.getTextScale=function(a){return a.view.scale}; @@ -3426,8 +3426,8 @@ image:IMAGE_PATH+"/sidebar-atlassian.png"},{title:mxResources.get("bootstrap"),i {title:"Sitemap",id:"sitemap",image:IMAGE_PATH+"/sidebar-sitemap.png"},{title:mxResources.get("uml"),id:"uml",image:IMAGE_PATH+"/sidebar-uml.png"}]},{title:mxResources.get("networking"),entries:[{title:"Allied Telesis",id:"allied_telesis",image:IMAGE_PATH+"/sidebar-allied_telesis.png"},{title:"AWS17",id:"aws3",image:IMAGE_PATH+"/sidebar-aws3.png"},{title:"AWS18",id:"aws4b",image:IMAGE_PATH+"/sidebar-aws4b.png"},{title:"AWS19",id:"aws4",image:IMAGE_PATH+"/sidebar-aws4.png"},{title:mxResources.get("aws3d"), id:"aws3d",image:IMAGE_PATH+"/sidebar-aws3d.png"},{title:mxResources.get("azure"),id:"azure",image:IMAGE_PATH+"/sidebar-azure.png"},{title:"Cloud & Enterprise",id:"mscae",image:IMAGE_PATH+"/sidebar-mscae.png"},{title:mxResources.get("cisco"),id:"cisco",image:IMAGE_PATH+"/sidebar-cisco.png"},{title:"Cisco19",id:"cisco19",image:IMAGE_PATH+"/sidebar-cisco19.png"},{title:"Cisco Safe",id:"cisco_safe",image:IMAGE_PATH+"/sidebar-cisco_safe.png"},{title:"Cumulus",id:"cumulus",image:IMAGE_PATH+"/sidebar-cumulus.png"}, {title:"Citrix",id:"citrix",image:IMAGE_PATH+"/sidebar-citrix.png"},{title:"Google Cloud Platform",id:"gcp2",image:IMAGE_PATH+"/sidebar-gcp2.png"},{title:"IBM",id:"ibm",image:IMAGE_PATH+"/sidebar-ibm.png"},{title:"Kubernetes",id:"kubernetes",image:IMAGE_PATH+"/sidebar-kubernetes.png"},{title:"Network",id:"network",image:IMAGE_PATH+"/sidebar-network.png"},{title:"Office",id:"office",image:IMAGE_PATH+"/sidebar-office.png"},{title:mxResources.get("rack"),id:"rack",image:IMAGE_PATH+"/sidebar-rack.png"}, -{title:"Veeam",id:"veeam2",image:IMAGE_PATH+"/sidebar-veeam.png"},{title:"VMware",id:"vvd",image:IMAGE_PATH+"/sidebar-vvd.png"}]},{title:mxResources.get("business"),entries:[{title:"ArchiMate 3.0",id:"archimate3",image:IMAGE_PATH+"/sidebar-archimate3.png"},{title:mxResources.get("archiMate21"),id:"archimate",image:IMAGE_PATH+"/sidebar-archimate.png"},{title:mxResources.get("bpmn"),id:"bpmn",image:IMAGE_PATH+"/sidebar-bpmn.png"},{title:mxResources.get("leanMapping"),id:"lean_mapping",image:IMAGE_PATH+ -"/sidebar-leanmapping.png"},{title:mxResources.get("sysml"),id:"sysml",image:IMAGE_PATH+"/sidebar-sysml.png"}]},{title:mxResources.get("other"),entries:[{title:mxResources.get("cabinets"),id:"cabinets",image:IMAGE_PATH+"/sidebar-cabinets.png"},{title:"Infographic",id:"infographic",image:IMAGE_PATH+"/sidebar-infographic.png"},{title:mxResources.get("eip"),id:"eip",image:IMAGE_PATH+"/sidebar-eip.png"},{title:mxResources.get("electrical"),id:"electrical",image:IMAGE_PATH+"/sidebar-electrical.png"},{title:mxResources.get("floorplans"), +{title:"Veeam",id:"veeam2",image:IMAGE_PATH+"/sidebar-veeam.png"},{title:"VMware",id:"vvd",image:IMAGE_PATH+"/sidebar-vvd.png"}]},{title:mxResources.get("business"),entries:[{title:"ArchiMate 3.0",id:"archimate3",image:IMAGE_PATH+"/sidebar-archimate3.png"},{title:mxResources.get("archiMate21"),id:"archimate",image:IMAGE_PATH+"/sidebar-archimate.png"},{title:mxResources.get("bpmn"),id:"bpmn",image:IMAGE_PATH+"/sidebar-bpmn.png"},{title:mxResources.get("sysml"),id:"sysml",image:IMAGE_PATH+"/sidebar-sysml.png"}, +{title:"Value Stream Mapping",id:"lean_mapping",image:IMAGE_PATH+"/sidebar-leanmapping.png"}]},{title:mxResources.get("other"),entries:[{title:mxResources.get("cabinets"),id:"cabinets",image:IMAGE_PATH+"/sidebar-cabinets.png"},{title:"Infographic",id:"infographic",image:IMAGE_PATH+"/sidebar-infographic.png"},{title:mxResources.get("eip"),id:"eip",image:IMAGE_PATH+"/sidebar-eip.png"},{title:mxResources.get("electrical"),id:"electrical",image:IMAGE_PATH+"/sidebar-electrical.png"},{title:mxResources.get("floorplans"), id:"floorplan",image:IMAGE_PATH+"/sidebar-floorplans.png"},{title:mxResources.get("gmdl"),id:"gmdl",image:IMAGE_PATH+"/sidebar-gmdl.png"},{title:mxResources.get("procEng"),id:"pid",image:IMAGE_PATH+"/sidebar-pid.png"},{title:"Web Icons",id:"webicons",image:IMAGE_PATH+"/sidebar-webIcons.png"},{title:mxResources.get("signs"),id:"signs",image:IMAGE_PATH+"/sidebar-signs.png"}]}];this.addStencilsToIndex=!1;this.shapetags={};null!=this.tagIndex&&(this.addTagIndex(Graph.decompress(this.tagIndex)),this.tagIndex= null);this.initPalettes()};"1"==urlParams.savesidebar&&(Sidebar.prototype.addFoldingHandler=function(a,d,c){var b=!1;if(!mxClient.IS_IE||8<=document.documentMode)a.style.backgroundImage="none"==d.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')";a.style.backgroundRepeat="no-repeat";a.style.backgroundPosition="0% 50%";var e=document.createElement("button");e.style.marginLeft="4px";mxUtils.write(e,"Save");mxEvent.addListener(a,"click",mxUtils.bind(this,function(f){if("BUTTON"== mxEvent.getSource(f).nodeName){f=a.cloneNode(!0);f.style.backgroundImage="";f.style.textDecoration="none";f.style.fontWeight="bold";f.style.fontSize="14px";f.style.color="rgb(80, 80, 80)";f.style.width="456px";f.style.backgroundColor="#ffffff";f.style.paddingLeft="6px";var g=f.getElementsByTagName("button")[0];g.parentNode.removeChild(g);var h=d.cloneNode(!0);h.style.backgroundColor="#ffffff";h.style.borderColor="transparent";h.style.width="456px";f=(new DOMParser).parseFromString('<body style="background:#ffffff;font-family:Helvetica,Arial;">'+ @@ -3451,9 +3451,9 @@ Router:"router switch",Router_Icon:"router switch"});this.addImagePalette("peopl this.addImagePalette("telco","Clipart / Telecommunication",a+"/lib/clip_art/telecommunication/","_128x128.png","BlackBerry Cellphone HTC_smartphone iPhone Palm_Treo Signal_tower_off Signal_tower_on".split(" "),"BlackBerry;Cellphone;HTC smartphone;iPhone;Palm Treo;Signaltower off;Signaltower on".split(";"));this.addFlowchartPalette();this.addActiveDirectoryPalette();this.addAndroidPalette();this.addAtlassianPalette();this.addBootstrapPalette();this.addDFDPalette();this.addErPalette();this.addIos7Palette(); this.addIosPalette();this.addKubernetesPalette();this.addMockupPalette();this.addSitemapPalette();this.addUmlPalette(!1);this.addAlliedTelesisPalette();this.addAWS3Palette();this.addAWS4bPalette();this.addAWS4Palette();this.addAWS3DPalette();this.addAzurePalette();this.addMSCAEPalette();this.addC4Palette();for(p=0;p<m.length;p++)this.addStencilPalette("cisco"+m[p],"Cisco / "+m[p],d+"/cisco/"+m[p].toLowerCase().replace(/ /g,"_")+".xml",";html=1;pointerEvents=1;dashed=0;fillColor=#036897;strokeColor=#ffffff;strokeWidth=2;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;", null,null,1.6);this.addCisco19Palette();this.addCiscoSafePalette();this.addCumulusPalette();this.addCitrixPalette();this.addGCP2Palette();this.addIBMPalette();this.addNetworkPalette();this.addOfficePalette();for(p=0;p<b.length;p++)"general"===b[p].toLowerCase()?this.addRackGeneralPalette():"f5"===b[p].toLowerCase()?this.addRackF5Palette():"dell"===b[p].toLowerCase()?this.addRackDellPalette():this.addStencilPalette("rack"+b[p],"Rack / "+b[p],d+"/rack/"+b[p].toLowerCase()+".xml",";html=1;labelPosition=right;align=left;spacingLeft=15;dashed=0;shadow=0;fillColor=#ffffff;"); -this.addVeeamPalette();this.addVeeam2Palette();this.addVVDPalette();this.addArchimate3Palette();this.addArchiMatePalette();this.addBpmnPalette(d,!1);this.addLeanMappingPalette();for(p=0;p<q.length;p++)"Model Elements"==q[p]?this.addSysMLModelElementsPalette():"Blocks"==q[p]?this.addSysMLBlocksPalette():"Ports and Flows"==q[p]?this.addSysMLPortsAndFlowsPalette():"Constraint Blocks"==q[p]?this.addSysMLConstraintBlocksPalette():"Activities"==q[p]?this.addSysMLActivitiesPalette():"Interactions"==q[p]? -this.addSysMLInteractionsPalette():"State Machines"==q[p]?this.addSysMLStateMachinesPalette():"Use Cases"==q[p]?this.addSysMLUseCasesPalette():"Allocations"==q[p]?this.addSysMLAllocationsPalette():"Requirements"==q[p]?this.addSysMLRequirementsPalette():"Profiles"==q[p]?this.addSysMLProfilesPalette():"Stereotypes"==q[p]&&this.addSysMLStereotypesPalette();this.addCabinetsPalette();this.addInfographicPalette();for(p=0;p<r.length;p++)"Message Construction"==r[p]?this.addEipMessageConstructionPalette(): -"Message Routing"==r[p]?this.addEipMessageRoutingPalette():"Message Transformation"==r[p]?this.addEipMessageTransformationPalette():"Messaging Channels"==r[p]?this.addEipMessagingChannelsPalette():"Messaging Endpoints"==r[p]?this.addEipMessagingEndpointsPalette():"Messaging Systems"==r[p]?this.addEipMessagingSystemsPalette():"System Management"==r[p]&&this.addEipSystemManagementPalette();this.addElectricalPalette();this.addFloorplanPalette();for(p=0;p<n.length;p++)"Bottom Navigation"==n[p]?this.addGMDLBottomNavigationPalette(): +this.addVeeamPalette();this.addVeeam2Palette();this.addVVDPalette();this.addArchimate3Palette();this.addArchiMatePalette();this.addBpmnPalette(d,!1);for(p=0;p<q.length;p++)"Model Elements"==q[p]?this.addSysMLModelElementsPalette():"Blocks"==q[p]?this.addSysMLBlocksPalette():"Ports and Flows"==q[p]?this.addSysMLPortsAndFlowsPalette():"Constraint Blocks"==q[p]?this.addSysMLConstraintBlocksPalette():"Activities"==q[p]?this.addSysMLActivitiesPalette():"Interactions"==q[p]?this.addSysMLInteractionsPalette(): +"State Machines"==q[p]?this.addSysMLStateMachinesPalette():"Use Cases"==q[p]?this.addSysMLUseCasesPalette():"Allocations"==q[p]?this.addSysMLAllocationsPalette():"Requirements"==q[p]?this.addSysMLRequirementsPalette():"Profiles"==q[p]?this.addSysMLProfilesPalette():"Stereotypes"==q[p]&&this.addSysMLStereotypesPalette();this.addLeanMappingPalette();this.addCabinetsPalette();this.addInfographicPalette();for(p=0;p<r.length;p++)"Message Construction"==r[p]?this.addEipMessageConstructionPalette():"Message Routing"== +r[p]?this.addEipMessageRoutingPalette():"Message Transformation"==r[p]?this.addEipMessageTransformationPalette():"Messaging Channels"==r[p]?this.addEipMessagingChannelsPalette():"Messaging Endpoints"==r[p]?this.addEipMessagingEndpointsPalette():"Messaging Systems"==r[p]?this.addEipMessagingSystemsPalette():"System Management"==r[p]&&this.addEipSystemManagementPalette();this.addElectricalPalette();this.addFloorplanPalette();for(p=0;p<n.length;p++)"Bottom Navigation"==n[p]?this.addGMDLBottomNavigationPalette(): "Bottom Sheets"==n[p]?this.addGMDLBottomSheetsPalette():"Buttons"==n[p]?this.addGMDLButtonsPalette():"Cards"==n[p]?this.addGMDLCardsPalette():"Chips"==n[p]?this.addGMDLChipsPalette():"Dialogs"==n[p]?this.addGMDLDialogsPalette():"Dividers"==n[p]?this.addGMDLDividersPalette():"Grid Lists"==n[p]?this.addGMDLGridListsPalette():"Icons"==n[p]?this.addGMDLIconsPalette():"Lists"==n[p]?this.addGMDLListsPalette():"Menus"==n[p]?this.addGMDLMenusPalette():"Misc"==n[p]?this.addGMDLMiscPalette():"Pickers"==n[p]? this.addGMDLPickersPalette():"Selection Controls"==n[p]?this.addGMDLSelectionControlsPalette():"Sliders"==n[p]?this.addGMDLSlidersPalette():"Steppers"==n[p]?this.addGMDLSteppersPalette():"Tabs"==n[p]?this.addGMDLTabsPalette():"Text Fields"==n[p]&&this.addGMDLTextFieldsPalette();for(p=0;p<e.length;p++)"Instruments"==e[p]?this.addPidInstrumentsPalette():"Misc"==e[p]?this.addPidMiscPalette():"Valves"==e[p]?this.addPidValvesPalette():"Compressors"==e[p]?this.addPidCompressorsPalette():"Engines"==e[p]? this.addPidEnginesPalette():"Filters"==e[p]?this.addPidFiltersPalette():"Flow Sensors"==e[p]?this.addPidFlowSensorsPalette():"Piping"==e[p]?this.addPidPipingPalette():this.addStencilPalette("pid"+e[p],"Proc. Eng. / "+e[p],d+"/pid/"+e[p].toLowerCase().replace(" ","_")+".xml",";html=1;pointerEvents=1;align=center;"+mxConstants.STYLE_VERTICAL_LABEL_POSITION+"=bottom;"+mxConstants.STYLE_VERTICAL_ALIGN+"=top;dashed=0;");this.addWebIconsPalette();this.addWebLogosPalette();for(p=0;p<c.length;p++)this.addStencilPalette("signs"+ @@ -6396,7 +6396,7 @@ this.createVertexTemplateEntry(b+"airplane_7;",100,45,"","Air Freight",null,null null,this.getTagsForStencil("mxgraph.lean_mapping","timeline","value stream lean mapping ").join(" ")),this.createVertexTemplateEntry(b+"crossDock;",100,80,"","Cross-Dock",null,null,this.getTagsForStencil("mxgraph.lean_mapping","crossDock","value stream lean mapping ").join(" ")),this.createVertexTemplateEntry(a+"orders;overflow=fill;",100,60,'<table cellpadding="0" cellspacing="0" style="font-size:1.5em;width:100%;height:100%;"><tr><td height="65%"></td></tr><tr><td align="center" height="35%">IN</td></tr></table>', "Orders",null,null,this.getTagsForStencil("mxgraph.lean_mapping","orders","value stream lean mapping ").join(" ")),this.createVertexTemplateEntry(b+"batched_kanban;",200,80,"","Batched Kanban",null,null,this.getTagsForStencil("mxgraph.lean_mapping","batched_kanban","value stream lean mapping ").join(" ")),this.createVertexTemplateEntry(b+"control_center;",80,80,"","Control Center",null,null,this.getTagsForStencil("mxgraph.lean_mapping","control_center","value stream lean mapping ").join(" ")),this.createEdgeTemplateEntry("shape=flexArrow;html=1;", 100,100,"","Shipments",null,this.getTagsForStencil("mxgraph.lean_mapping","arrow","value stream lean mapping ").join(" ")),this.createEdgeTemplateEntry("shape=mxgraph.lean_mapping.manual_info_flow_edge;html=1;",100,100,"Daily","Manual Information",null,this.getTagsForStencil("mxgraph.lean_mapping","manual_info_flow_edge","value stream lean mapping ").join(" ")),this.createEdgeTemplateEntry("shape=mxgraph.lean_mapping.electronic_info_flow_edge;html=1;",100,100,"Monthly","Electronic Information",null, -this.getTagsForStencil("mxgraph.lean_mapping","electronic_info_flow_edge","value stream lean mapping ").join(" "))];this.addPalette("lean_mapping",mxResources.get("leanMapping"),!1,mxUtils.bind(this,function(a){for(var b=0;b<d.length;b++)a.appendChild(d[b](a))}))}})();(function(){Sidebar.prototype.addMockupPalette=function(){this.addMockupButtonsPalette();this.addMockupContainersPalette();this.addMockupFormsPalette();this.addMockupGraphicsPalette();this.addMockupMarkupPalette();this.addMockupMiscPalette();this.addMockupNavigationPalette();this.addMockupTextPalette()};Sidebar.prototype.addMockupButtonsPalette=function(){var a=mxConstants.STYLE_STROKEWIDTH+"=1;shadow=0;dashed=0;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.mockup.",b=mxConstants.STYLE_STROKECOLOR+ +this.getTagsForStencil("mxgraph.lean_mapping","electronic_info_flow_edge","value stream lean mapping ").join(" "))];this.addPalette("lean_mapping","Value Stream Mapping",!1,mxUtils.bind(this,function(a){for(var b=0;b<d.length;b++)a.appendChild(d[b](a))}))}})();(function(){Sidebar.prototype.addMockupPalette=function(){this.addMockupButtonsPalette();this.addMockupContainersPalette();this.addMockupFormsPalette();this.addMockupGraphicsPalette();this.addMockupMarkupPalette();this.addMockupMiscPalette();this.addMockupNavigationPalette();this.addMockupTextPalette()};Sidebar.prototype.addMockupButtonsPalette=function(){var a=mxConstants.STYLE_STROKEWIDTH+"=1;shadow=0;dashed=0;align=center;html=1;"+mxConstants.STYLE_SHAPE+"=mxgraph.mockup.",b=mxConstants.STYLE_STROKECOLOR+ "=#999999;",e=this,d=[this.createVertexTemplateEntry(a+"buttons.button;"+(mxConstants.STYLE_STROKECOLOR+"=#666666;")+"fontColor=#ffffff;mainText=;buttonStyle=round;fontSize=17;fontStyle=1;fillColor=#008cff;whiteSpace=wrap;",150,50,"Button Text","Button",null,null,this.getTagsForStencil("mxgraph.mockup.buttons","button","mockup button ").join(" ")),this.addEntry("mockup button formatted multibutton multi",function(){var b=new mxCell("",new mxGeometry(0,0,150,50),a+"buttons.multiButton;fillColor=#008cff;strokeColor=#666666;mainText=;subText=;"); b.vertex=!0;var d=new mxCell("Main Text",new mxGeometry(0,8,150,20),a+"anchor;fontSize=16;fontColor=#ffffff;fontStyle=1;whiteSpace=wrap;");d.vertex=!0;b.insert(d);d=new mxCell("Sub Text",new mxGeometry(0,30,150,10),a+"anchor;fontSize=12;fontColor=#ffffff;fontStyle=1;whiteSpace=wrap;");d.vertex=!0;b.insert(d);return e.createVertexTemplateFromCells([b],b.geometry.width,b.geometry.height,"Formatted Button")}),this.addEntry("mockup button horizontal bar",function(){var b=new mxCell("",new mxGeometry(0, 0,500,50),a+"rrect;rSize=10;fillColor=#ffffff;strokeColor=#666666;");b.vertex=!0;var d=new mxCell("Button 2",new mxGeometry(0,0,125,50),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;"+a+"rrect;rSize=0;fontSize=17;fontColor=#666666;fontStyle=1;resizeHeight=1;");d.geometry.relative=!0;d.geometry.offset=new mxPoint(125,0);d.vertex=!0;b.insert(d);d=new mxCell("Button 3",new mxGeometry(0,0,125,50),"strokeColor=inherit;fillColor=inherit;gradientColor=inherit;"+a+"rrect;rSize=0;fontSize=17;fontColor=#666666;fontStyle=1;resizeHeight=1;"); @@ -8148,22 +8148,22 @@ DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveR DrawioFile.prototype.synchronizeFile=function(a,c){this.savingFile?null!=c&&c({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,c):this.updateFile(a,c)}; DrawioFile.prototype.updateFile=function(a,c,d,b){null!=d&&d()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():this.getLatestVersion(mxUtils.bind(this,function(e){try{null!=d&&d()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=c&&c():null!=e?this.mergeFile(e,a,c,b):this.reloadFile(a,c))}catch(g){null!=c&&c(g)}}),c))}; DrawioFile.prototype.mergeFile=function(a,c,d,b){var e=!0;try{this.stats.fileMerged++;var g=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),k=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=k&&0<k.length){this.shadowPages=k;this.backupPatch=this.isModified()?this.ui.diffPages(g,this.ui.pages):null;var l=[this.ui.diffPages(null!=b?b:g,this.shadowPages)];if(!this.ignorePatches(l)){var n=this.ui.patchPages(g, -l[0]);b={};var u=this.ui.getHashValueForPages(n,b),g={},f=this.ui.getHashValueForPages(this.shadowPages,g);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",l,"checksum",f==u,u);if(null!=u&&u!=f){var m=this.compressReportData(this.getAnonymizedXmlForPages(k)),p=this.compressReportData(this.getAnonymizedXmlForPages(n)),t=this.ui.hashValue(a.getCurrentEtag()),v=this.ui.hashValue(this.getCurrentEtag());this.checksumError(d,l,"Shadow Details: "+JSON.stringify(b)+ -"\nChecksum: "+u+"\nCurrent: "+f+"\nCurrent Details: "+JSON.stringify(g)+"\nFrom: "+t+"\nTo: "+v+"\n\nFile Data:\n"+m+"\nPatched Shadow:\n"+p,null,"mergeFile");return}this.patch(l,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw e=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(y){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged(); -null!=d&&d(y);try{if(e)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,y);else{var q=this.getCurrentUser(),z=null!=q?q.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),z,y)}}catch(D){}}}; +l[0]);b={};var t=this.ui.getHashValueForPages(n,b),g={},f=this.ui.getHashValueForPages(this.shadowPages,g);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",l,"checksum",f==t,t);if(null!=t&&t!=f){var m=this.compressReportData(this.getAnonymizedXmlForPages(k)),p=this.compressReportData(this.getAnonymizedXmlForPages(n)),u=this.ui.hashValue(a.getCurrentEtag()),v=this.ui.hashValue(this.getCurrentEtag());this.checksumError(d,l,"Shadow Details: "+JSON.stringify(b)+ +"\nChecksum: "+t+"\nCurrent: "+f+"\nCurrent Details: "+JSON.stringify(g)+"\nFrom: "+u+"\nTo: "+v+"\n\nFile Data:\n"+m+"\nPatched Shadow:\n"+p,null,"mergeFile");return}this.patch(l,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw e=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=c&&c()}catch(x){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged(); +null!=d&&d(x);try{if(e)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,x);else{var q=this.getCurrentUser(),z=null!=q?q.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),z,x)}}catch(C){}}}; DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var c=new mxCodec(mxUtils.createXmlDocument()),d=c.document.createElement("mxfile");if(null!=a)for(var b=0;b<a.length;b++){var e=c.encode(new mxGraphModel(a[b].root));"1"!=urlParams.dev&&(e=this.ui.anonymizeNode(e,!0));e.setAttribute("id",a[b].getId());a[b].viewState&&this.ui.editor.graph.saveViewState(a[b].viewState,e,!0);d.appendChild(e)}return mxUtils.getPrettyXml(d)}; DrawioFile.prototype.compressReportData=function(a,c,d){c=null!=c?c:1E4;null!=d&&null!=a&&a.length>d?a=a.substring(0,d)+"[...]":null!=a&&a.length>c&&(a=Graph.compress(a)+"\n");return a}; DrawioFile.prototype.checksumError=function(a,c,d,b,e){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(this.errorReportsEnabled){if(null!=c)for(a=0;a<c.length;a++)this.ui.anonymizePatch(c[a]);var g=mxUtils.bind(this,function(a){var b=this.compressReportData(JSON.stringify(c,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)), 25E3):"n/a";this.sendErrorReport("Checksum Error in "+e+" "+this.getHash(),(null!=d?d:"")+"\n\nPatches:\n"+b+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==b?g(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==b?g(a):g(null)}),function(){})}else{var k=this.getCurrentUser(),l=null!=k?k.id:"unknown";EditorUi.logError("Checksum Error in "+e+" "+this.getId(),null,this.getMode()+"."+this.getId(),"user_"+l+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")); try{EditorUi.logEvent({category:"CHECKSUM-ERROR-SYNC-FILE-"+this.getHash(),action:e,label:"user_"+l+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")})}catch(n){}}}catch(n){}}; -DrawioFile.prototype.sendErrorReport=function(a,c,d,b){try{var e=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),g=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),k=this.getCurrentUser(),l=null!=k?this.ui.hashValue(k.id):"unknown",n=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",u=this.getTitle(),f=u.lastIndexOf("."),k="xml";0<f&&(k=u.substring(f));var m=null!=d?d.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+ +DrawioFile.prototype.sendErrorReport=function(a,c,d,b){try{var e=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),g=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),k=this.getCurrentUser(),l=null!=k?this.ui.hashValue(k.id):"unknown",n=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",t=this.getTitle(),f=t.lastIndexOf("."),k="xml";0<f&&(k=t.substring(f));var m=null!=d?d.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+ ":\n\nBrowser="+navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+k+")\nUser="+l+n+"\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=c?"\n\n"+c:"")+ (null!=d?"\n\nError: "+d.message:"")+"\n\nStack:\n"+m+"\n\nShadow:\n"+e+"\n\nData:\n"+g,b)}catch(p){}}; DrawioFile.prototype.reloadFile=function(a,c){try{this.ui.spinner.stop();var d=mxUtils.bind(this,function(){this.stats.fileReloaded++;this.reportEnabled=!1;var b=this.ui.editor.graph.getViewState(),d=this.ui.editor.graph.getSelectionCells(),c=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(c,b,d);null!=this.backupPatch&&this.patch([this.backupPatch]);var e=this.ui.getCurrentFile();null!=e&&(e.stats= this.stats);null!=a&&a()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),d,mxResources.get("cancel"),mxResources.get("discardChanges")):d()}catch(b){null!=c&&c(b)}};DrawioFile.prototype.copyFile=function(a,c){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))}; DrawioFile.prototype.ignorePatches=function(a){for(var c=!0,d=0;d<a.length&&c;d++)c=c&&0==Object.keys(a[d]).length;return c}; -DrawioFile.prototype.patch=function(a,c){var d=this.ui.editor.undoManager,b=d.history.slice(),e=d.indexOfNextAdd,g=this.ui.editor.graph;g.container.style.visibility="hidden";var k=this.changeListenerEnabled;this.changeListenerEnabled=!1;var l=g.foldingEnabled,n=g.mathEnabled,u=g.cellRenderer.redraw;g.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());u.apply(this,arguments)};g.model.beginUpdate();try{for(var f= -0;f<a.length;f++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[f],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{g.container.style.visibility="";g.model.endUpdate();g.cellRenderer.redraw=u;this.changeListenerEnabled=k;d.history=b;d.indexOfNextAdd=e;d.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)n!= +DrawioFile.prototype.patch=function(a,c){var d=this.ui.editor.undoManager,b=d.history.slice(),e=d.indexOfNextAdd,g=this.ui.editor.graph;g.container.style.visibility="hidden";var k=this.changeListenerEnabled;this.changeListenerEnabled=!1;var l=g.foldingEnabled,n=g.mathEnabled,t=g.cellRenderer.redraw;g.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());t.apply(this,arguments)};g.model.beginUpdate();try{for(var f= +0;f<a.length;f++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[f],!0,c,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{g.container.style.visibility="";g.model.endUpdate();g.cellRenderer.redraw=t;this.changeListenerEnabled=k;d.history=b;d.indexOfNextAdd=e;d.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)n!= g.mathEnabled?(this.ui.editor.updateGraphComponents(),g.refresh()):(l!=g.foldingEnabled?g.view.revalidate():g.view.validate(),g.sizeDidChange());this.ui.updateTabContainer()}}; DrawioFile.prototype.save=function(a,c,d,b,e,g){try{if(this.isEditable())if(!e&&this.invalidChecksum)if(null!=d)d({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=c&&c();else if(null!=d)d({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(k){if(null!=d)d(k);else throw k;}}; DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this,!this.isCompressed()))};DrawioFile.prototype.isCompressedStorage=function(){return!0};DrawioFile.prototype.isCompressed=function(){var a=null!=this.ui.fileNode?this.ui.fileNode.getAttribute("compressed"):null;return null!=a?"false"!=a:this.isCompressedStorage()&&Editor.compressXml};DrawioFile.prototype.saveAs=function(a,c,d){};DrawioFile.prototype.saveFile=function(a,c,d,b){}; @@ -8183,7 +8183,7 @@ DrawioFile.prototype.saveDraft=function(){try{null==this.draftId&&(this.draftId= DrawioFile.prototype.removeDraft=function(){try{null!=this.draftId&&(this.ui.removeDatabaseItem(".draft_"+this.draftId),EditorUi.debug("draft deleted",".draft_"+this.draftId))}catch(a){}}; DrawioFile.prototype.addUnsavedStatus=function(a){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(a instanceof Error&&null!=a.message&&""!=a.message){var c=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+c+" ("+mxUtils.htmlEntities(a.message)+")</div>")}else{c=this.getErrorMessage(a);if(null==c&&null!=this.lastSaved){var d=this.ui.timeSince(new Date(this.lastSaved)); null!=d&&(c=mxResources.get("lastSaved",[d]))}null!=c&&60<c.length&&(c=c.substring(0,60)+"...");c=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":"");this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+c+"</div>");c=this.ui.statusContainer.getElementsByTagName("div");null!=c&&0<c.length?mxEvent.addListener(c[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!= -this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(c=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+c+" ("+mxUtils.htmlEntities(a.message)+")</div>"));EditorUi.enableDrafts&&this.saveDraft()}}; +this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(c=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+c+'" class="geStatusAlert" style="overflow:hidden;">'+c+" ("+mxUtils.htmlEntities(a.message)+")</div>"));EditorUi.enableDrafts&&null==this.getMode()&&this.saveDraft()}}; DrawioFile.prototype.addConflictStatus=function(a,c){this.invalidChecksum&&null==c&&(c=mxResources.get("checksum"));this.setConflictStatus(mxUtils.htmlEntities(mxResources.get("fileChangedSync"))+(null!=c&&""!=c?" ("+mxUtils.htmlEntities(c)+")":""));this.ui.spinner.stop();this.clearAutosave();var d=null!=this.ui.statusContainer?this.ui.statusContainer.getElementsByTagName("div"):null;null!=d&&0<d.length?mxEvent.addListener(d[0],"click",mxUtils.bind(this,function(b){"IMG"!=mxEvent.getSource(b).nodeName&& a()})):this.ui.alert(mxUtils.htmlEntities(mxResources.get("fileChangedSync")),a)};DrawioFile.prototype.setConflictStatus=function(a){this.ui.editor.setStatus('<div title="'+a+'" class="geStatusAlert geBlink" style="cursor:pointer;overflow:hidden;">'+a+' <a href="https://desk.draw.io/support/solutions/articles/16000087947" target="_blank"><img border="0" style="margin-left:2px;cursor:help;opacity:0.5;width:16px;height:16px;" valign="bottom" src="'+Editor.helpImage+'" style=""/></a></div>')}; DrawioFile.prototype.showRefreshDialog=function(a,c,d){null==d&&(d=mxResources.get("checksum"));this.ui.editor.isChromelessView()&&!this.ui.editor.editable?this.ui.alert(mxResources.get("fileChangedSync"),mxUtils.bind(this,function(){this.reloadFile(a,c)})):(this.addConflictStatus(mxUtils.bind(this,function(){this.showRefreshDialog(a,c)}),d),this.ui.showError(mxResources.get("error")+" ("+d+")",mxResources.get("fileChangedSyncDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a, @@ -8218,23 +8218,23 @@ StorageFile.prototype.open=function(){DrawioFile.prototype.open.apply(this,argum StorageLibrary.prototype.isRenamable=function(a,c,d){return".scratchpad"!=this.title};StorageLibrary.prototype.open=function(){};RemoteFile=function(a,c,d){DrawioFile.call(this,a,c);this.title=d;this.mode=null};mxUtils.extend(RemoteFile,DrawioFile);RemoteFile.prototype.isAutosave=function(){return!1};RemoteFile.prototype.getMode=function(){return this.mode};RemoteFile.prototype.getTitle=function(){return this.title};RemoteFile.prototype.isRenamable=function(){return!1};RemoteFile.prototype.open=function(){this.ui.setFileData(this.getData());this.installListeners()};RemoteLibrary=function(a,c,d){RemoteFile.call(this,a,c,d.title);this.libObj=d};mxUtils.extend(RemoteLibrary,LocalFile);RemoteLibrary.prototype.getHash=function(){return"R"+encodeURIComponent(JSON.stringify([this.libObj.id,this.libObj.title,this.libObj.downloadUrl]))};RemoteLibrary.prototype.isEditable=function(){return!1};RemoteLibrary.prototype.isRenamable=function(){return!1};RemoteLibrary.prototype.isAutosave=function(){return!1};RemoteLibrary.prototype.save=function(a,c,d){}; RemoteLibrary.prototype.saveAs=function(a,c,d){};RemoteLibrary.prototype.updateFileData=function(){};RemoteLibrary.prototype.open=function(){};UrlLibrary=function(a,c,d){StorageFile.call(this,a,c,d);a=d;c=a.lastIndexOf("/");0<=c&&(a=a.substring(c+1));this.fname=a};mxUtils.extend(UrlLibrary,StorageFile);UrlLibrary.prototype.getHash=function(){return"U"+encodeURIComponent(this.title)};UrlLibrary.prototype.getTitle=function(){return this.fname};UrlLibrary.prototype.isAutosave=function(){return!1};UrlLibrary.prototype.isEditable=function(a,c,d){return!1};UrlLibrary.prototype.saveAs=function(a,c,d){};UrlLibrary.prototype.open=function(){};/* mxClient.IS_IOS || */ -var StorageDialog=function(a,c,d){function b(b,p,q,e,g,B){function x(){mxEvent.addListener(k,"click",null!=B?B:function(){q!=App.MODE_GOOGLE||a.isDriveDomain()?q==App.MODE_GOOGLE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(q,n.checked);c()})):q==App.MODE_ONEDRIVE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.oneDrive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(q,n.checked); -c()})):(a.setMode(q,n.checked),c()):window.location.hostname=DriveClient.prototype.newAppHostname})}++u>d&&(mxUtils.br(f),u=0);var k=document.createElement("a");k.style.overflow="hidden";k.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";k.className="geBaseButton";k.style.boxSizing="border-box";k.style.fontSize="11px";k.style.position="relative";k.style.margin="4px";k.style.marginTop="2px";k.style.padding="8px 10px 12px 10px";k.style.width="88px";k.style.height=StorageDialog.extended?"50px": -"100px";k.style.whiteSpace="nowrap";k.setAttribute("title",p);mxClient.IS_QUIRKS&&(k.style.cssFloat="left",k.style.zoom="1");var t=document.createElement("div");t.style.textOverflow="ellipsis";t.style.overflow="hidden";if(null!=b){var v=document.createElement("img");v.setAttribute("src",b);v.setAttribute("border","0");v.setAttribute("align","absmiddle");v.style.width=StorageDialog.extended?"24px":"60px";v.style.height=StorageDialog.extended?"24px":"60px";v.style.paddingBottom=StorageDialog.extended? -"4px":"6px";k.appendChild(v)}else t.style.paddingTop="5px",t.style.whiteSpace="normal",mxClient.IS_IOS?(k.style.padding="0px 10px 20px 10px",k.style.top="6px"):mxClient.IS_FF&&(t.style.paddingTop="0px",t.style.marginTop="-2px");StorageDialog.extended&&(k.style.paddingTop="4px",k.style.marginBottom="0px",t.display="inline-block",2==d&&(v.style.width="38px",v.style.height="38px",k.style.width="80px",k.style.height="68px"));k.appendChild(t);mxUtils.write(t,p);if(null!=g)for(b=0;b<g.length;b++)mxUtils.br(t), -mxUtils.write(t,g[b]);if(null!=e&&null==a[e]){v.style.visibility="hidden";mxUtils.setOpacity(t,10);var l=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});l.spin(k);var A=window.setTimeout(function(){null==a[e]&&(l.stop(),k.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(b,c){null!=a[e]&&c.getProperty("client")==a[e]&&(window.clearTimeout(A),mxUtils.setOpacity(t, -100),v.style.visibility="",l.stop(),x(),"drive"==e&&null!=m.parentNode&&m.parentNode.removeChild(m))}))}else x();f.appendChild(k)}d=null!=d?d:2;var e=document.createElement("div");e.style.textAlign="center";e.style.whiteSpace="nowrap";e.style.paddingTop="0px";e.style.paddingBottom="20px";var g=a.addLanguageMenu(e,!0);null!=g&&(g.style.bottom=parseInt("28px")-3+"px");if(!a.isOffline()&&1<a.getServiceCount()){g=document.createElement("a");g.setAttribute("href","https://about.draw.io/support/");g.setAttribute("title", +var StorageDialog=function(a,c,d){function b(b,p,q,e,g,A){function y(){mxEvent.addListener(k,"click",null!=A?A:function(){q!=App.MODE_GOOGLE||a.isDriveDomain()?q==App.MODE_GOOGLE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(q,n.checked);c()})):q==App.MODE_ONEDRIVE&&a.spinner.spin(document.body,mxResources.get("authorizing"))?a.oneDrive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();a.setMode(q,n.checked); +c()})):(a.setMode(q,n.checked),c()):window.location.hostname=DriveClient.prototype.newAppHostname})}++t>d&&(mxUtils.br(f),t=0);var k=document.createElement("a");k.style.overflow="hidden";k.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";k.className="geBaseButton";k.style.boxSizing="border-box";k.style.fontSize="11px";k.style.position="relative";k.style.margin="4px";k.style.marginTop="2px";k.style.padding="8px 10px 12px 10px";k.style.width="88px";k.style.height=StorageDialog.extended?"50px": +"100px";k.style.whiteSpace="nowrap";k.setAttribute("title",p);mxClient.IS_QUIRKS&&(k.style.cssFloat="left",k.style.zoom="1");var u=document.createElement("div");u.style.textOverflow="ellipsis";u.style.overflow="hidden";if(null!=b){var v=document.createElement("img");v.setAttribute("src",b);v.setAttribute("border","0");v.setAttribute("align","absmiddle");v.style.width=StorageDialog.extended?"24px":"60px";v.style.height=StorageDialog.extended?"24px":"60px";v.style.paddingBottom=StorageDialog.extended? +"4px":"6px";k.appendChild(v)}else u.style.paddingTop="5px",u.style.whiteSpace="normal",mxClient.IS_IOS?(k.style.padding="0px 10px 20px 10px",k.style.top="6px"):mxClient.IS_FF&&(u.style.paddingTop="0px",u.style.marginTop="-2px");StorageDialog.extended&&(k.style.paddingTop="4px",k.style.marginBottom="0px",u.display="inline-block",2==d&&(v.style.width="38px",v.style.height="38px",k.style.width="80px",k.style.height="68px"));k.appendChild(u);mxUtils.write(u,p);if(null!=g)for(b=0;b<g.length;b++)mxUtils.br(u), +mxUtils.write(u,g[b]);if(null!=e&&null==a[e]){v.style.visibility="hidden";mxUtils.setOpacity(u,10);var l=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});l.spin(k);var B=window.setTimeout(function(){null==a[e]&&(l.stop(),k.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(b,c){null!=a[e]&&c.getProperty("client")==a[e]&&(window.clearTimeout(B),mxUtils.setOpacity(u, +100),v.style.visibility="",l.stop(),y(),"drive"==e&&null!=m.parentNode&&m.parentNode.removeChild(m))}))}else y();f.appendChild(k)}d=null!=d?d:2;var e=document.createElement("div");e.style.textAlign="center";e.style.whiteSpace="nowrap";e.style.paddingTop="0px";e.style.paddingBottom="20px";var g=a.addLanguageMenu(e,!0);null!=g&&(g.style.bottom=parseInt("28px")-3+"px");if(!a.isOffline()&&1<a.getServiceCount()){g=document.createElement("a");g.setAttribute("href","https://about.draw.io/support/");g.setAttribute("title", mxResources.get("help"));g.setAttribute("target","_blank");g.style.position="absolute";g.style.userSelect="none";g.style.textDecoration="none";g.style.cursor="pointer";g.style.fontSize="12px";g.style.bottom="28px";g.style.left="26px";g.style.color="gray";var k=document.createElement("img");mxUtils.setOpacity(k,50);k.style.height="16px";k.style.width="16px";k.setAttribute("border","0");k.setAttribute("valign","bottom");k.setAttribute("src",Editor.helpImage);k.style.marginRight="2px";g.appendChild(k); mxUtils.write(g,mxResources.get("help"));e.appendChild(g)}var l=document.createElement("div");l.style.position="absolute";l.style.cursor="pointer";l.style.fontSize="12px";l.style.bottom="28px";l.style.color="gray";l.style.userSelect="none";mxUtils.write(l,mxResources.get("decideLater"));mxUtils.setPrefixedStyle(l.style,"transform","translate(-50%,0)");l.style.left="50%";a.isOfflineApp()&&(l.style.bottom="28px");this.init=function(){if(mxClient.IS_QUIRKS||8==document.documentMode)l.style.marginLeft= -Math.round(l.clientWidth/2)+"px"};e.appendChild(l);mxEvent.addListener(l,"click",function(){a.hideDialog();var b=Editor.useLocalStorage;a.createFile(a.defaultFilename,null,null,null,null,null,null,!0);Editor.useLocalStorage=b});g=document.createElement("div");mxClient.IS_QUIRKS&&(g.style.whiteSpace="nowrap",g.style.cssFloat="left");g.style.border="1px solid #d3d3d3";g.style.borderWidth="1px 0px 1px 0px";g.style.padding="12px 0px 12px 0px";var n=document.createElement("input");n.setAttribute("type", -"checkbox");n.setAttribute("checked","checked");n.defaultChecked=!0;var u=0,f=document.createElement("div");f.style.paddingTop="2px";g.appendChild(f);var m=document.createElement("p"),k=document.createElement("p");k.style.fontSize="16pt";k.style.padding="0px";k.style.paddingTop="4px";k.style.paddingBottom="16px";k.style.margin="0px";k.style.color="gray";mxUtils.write(k,mxResources.get("saveDiagramsTo")+":");e.appendChild(k);var p=function(){u=0;"function"===typeof window.DriveClient&&b(IMAGE_PATH+ +"checkbox");n.setAttribute("checked","checked");n.defaultChecked=!0;var t=0,f=document.createElement("div");f.style.paddingTop="2px";g.appendChild(f);var m=document.createElement("p"),k=document.createElement("p");k.style.fontSize="16pt";k.style.padding="0px";k.style.paddingTop="4px";k.style.paddingBottom="16px";k.style.margin="0px";k.style.color="gray";mxUtils.write(k,mxResources.get("saveDiagramsTo")+":");e.appendChild(k);var p=function(){t=0;"function"===typeof window.DriveClient&&b(IMAGE_PATH+ "/google-drive-logo.svg",mxResources.get("googleDrive"),App.MODE_GOOGLE,"drive");"function"===typeof window.OneDriveClient&&b(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive");b(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE);!isLocalStorage||"1"!=urlParams.browser&&"1"!=urlParams.offline||b(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER);StorageDialog.extended&&("function"===typeof window.DropboxClient&& -b(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox"),null!=a.gitHub&&b(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub"),null!=a.gitLab&&b(IMAGE_PATH+"/gitlab-logo.svg",mxResources.get("gitlab"),App.MODE_GITLAB,"gitLab"))};e.appendChild(g);p();k=document.createElement("p");k.style.marginTop="8px";k.style.marginBottom="6px";var t=document.createElement("div");t.style.marginBottom="10px";if(!a.isOfflineApp()){var v=document.createElement("a"); -v.style.color="gray";v.style.fontSize="12px";v.style.cursor="pointer";v.style.userSelect="none";mxUtils.write(v,(StorageDialog.extended?mxResources.get("showLess"):mxResources.get("showMore"))+"...");t.appendChild(v);k.appendChild(t);mxEvent.addListener(v,"click",function(a){f.innerHTML="";v.innerHTML="";StorageDialog.extended=!StorageDialog.extended;p();mxUtils.write(v,(StorageDialog.extended?mxResources.get("showLess"):mxResources.get("showMore"))+"...");mxEvent.consume(a)})}k.appendChild(n);var q= -document.createElement("span");q.style.color="gray";q.style.fontSize="12px";q.style.userSelect="none";mxUtils.write(q," "+mxResources.get("rememberThisSetting"));k.appendChild(q);mxUtils.br(k);t=a.getRecent();if(!a.isOfflineApp()&&null!=t&&0<t.length){var z=document.createElement("select");z.style.marginTop="8px";z.style.maxWidth="170px";var y=document.createElement("option");y.setAttribute("value","");y.setAttribute("selected","selected");y.style.textAlign="center";mxUtils.write(y,mxResources.get("openRecent")+ -"...");z.appendChild(y);for(y=0;y<t.length;y++)(function(a){var b=a.mode;b==App.MODE_GOOGLE?b="googleDrive":b==App.MODE_ONEDRIVE&&(b="oneDrive");var c=document.createElement("option");c.setAttribute("value",a.id);mxUtils.write(c,a.title+" ("+mxResources.get(b)+")");z.appendChild(c)})(t[y]);k.appendChild(z);mxEvent.addListener(z,"change",function(b){""!=z.value&&a.loadFile(z.value)})}else k.style.marginTop="20px",g.style.padding="30px 0px 26px 0px";Graph.fileSupport&&(t=document.createElement("div"), -t.style.marginBottom="10px",t.style.padding="18px 0px 6px 0px",y=document.createElement("a"),y.style.cursor="pointer",y.style.fontSize="12px",y.style.color="gray",y.style.userSelect="none",mxUtils.write(y,mxResources.get("import")+": "+mxResources.get("gliffy")+", "+mxResources.get("formatVssx")+", "+mxResources.get("formatVsdx")+", "+mxResources.get("lucidchart")+"..."),mxEvent.addListener(y,"click",function(){if(null==a.storageFileInputElt){var b=document.createElement("input");b.setAttribute("type", -"file");mxEvent.addListener(b,"change",function(){null!=b.files&&(a.hideDialog(),a.openFiles(b.files,!0),b.type="",b.type="file",b.value="")});b.style.display="none";document.body.appendChild(b);a.storageFileInputElt=b}a.storageFileInputElt.click()}),t.appendChild(y),k.appendChild(t),g.style.paddingBottom="4px");g.appendChild(k);mxEvent.addListener(q,"click",function(a){n.checked=!n.checked;mxEvent.consume(a)});mxClient.IS_SVG&&isLocalStorage&&"0"!=urlParams.gapi&&(null==document.documentMode||10<= +b(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox"),null!=a.gitHub&&b(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub"),null!=a.gitLab&&b(IMAGE_PATH+"/gitlab-logo.svg",mxResources.get("gitlab"),App.MODE_GITLAB,"gitLab"))};e.appendChild(g);p();k=document.createElement("p");k.style.marginTop="8px";k.style.marginBottom="6px";var u=document.createElement("div");u.style.marginBottom="10px";if(!a.isOfflineApp()){var v=document.createElement("a"); +v.style.color="gray";v.style.fontSize="12px";v.style.cursor="pointer";v.style.userSelect="none";mxUtils.write(v,(StorageDialog.extended?mxResources.get("showLess"):mxResources.get("showMore"))+"...");u.appendChild(v);k.appendChild(u);mxEvent.addListener(v,"click",function(a){f.innerHTML="";v.innerHTML="";StorageDialog.extended=!StorageDialog.extended;p();mxUtils.write(v,(StorageDialog.extended?mxResources.get("showLess"):mxResources.get("showMore"))+"...");mxEvent.consume(a)})}k.appendChild(n);var q= +document.createElement("span");q.style.color="gray";q.style.fontSize="12px";q.style.userSelect="none";mxUtils.write(q," "+mxResources.get("rememberThisSetting"));k.appendChild(q);mxUtils.br(k);u=a.getRecent();if(!a.isOfflineApp()&&null!=u&&0<u.length){var z=document.createElement("select");z.style.marginTop="8px";z.style.maxWidth="170px";var x=document.createElement("option");x.setAttribute("value","");x.setAttribute("selected","selected");x.style.textAlign="center";mxUtils.write(x,mxResources.get("openRecent")+ +"...");z.appendChild(x);for(x=0;x<u.length;x++)(function(a){var b=a.mode;b==App.MODE_GOOGLE?b="googleDrive":b==App.MODE_ONEDRIVE&&(b="oneDrive");var c=document.createElement("option");c.setAttribute("value",a.id);mxUtils.write(c,a.title+" ("+mxResources.get(b)+")");z.appendChild(c)})(u[x]);k.appendChild(z);mxEvent.addListener(z,"change",function(b){""!=z.value&&a.loadFile(z.value)})}else k.style.marginTop="20px",g.style.padding="30px 0px 26px 0px";Graph.fileSupport&&(u=document.createElement("div"), +u.style.marginBottom="10px",u.style.padding="18px 0px 6px 0px",x=document.createElement("a"),x.style.cursor="pointer",x.style.fontSize="12px",x.style.color="gray",x.style.userSelect="none",mxUtils.write(x,mxResources.get("import")+": "+mxResources.get("gliffy")+", "+mxResources.get("formatVssx")+", "+mxResources.get("formatVsdx")+", "+mxResources.get("lucidchart")+"..."),mxEvent.addListener(x,"click",function(){if(null==a.storageFileInputElt){var b=document.createElement("input");b.setAttribute("type", +"file");mxEvent.addListener(b,"change",function(){null!=b.files&&(a.hideDialog(),a.openFiles(b.files,!0),b.type="",b.type="file",b.value="")});b.style.display="none";document.body.appendChild(b);a.storageFileInputElt=b}a.storageFileInputElt.click()}),u.appendChild(x),k.appendChild(u),g.style.paddingBottom="4px");g.appendChild(k);mxEvent.addListener(q,"click",function(a){n.checked=!n.checked;mxEvent.consume(a)});mxClient.IS_SVG&&isLocalStorage&&"0"!=urlParams.gapi&&(null==document.documentMode||10<= document.documentMode)&&window.setTimeout(function(){null==a.drive&&(m.style.padding="8px",m.style.fontSize="9pt",m.style.marginTop="-14px",m.innerHTML='<a style="background-color:#dcdcdc;padding:5px;color:black;text-decoration:none;" href="https://desk.draw.io/a/solutions/articles/16000074659" target="_blank"><img border="0" src="'+mxGraph.prototype.warningImage.src+'" align="top"> '+mxResources.get("googleDriveMissingClickHere")+"</a>",e.appendChild(m))},5E3);this.container=e}; StorageDialog.extended=!1; var SplashDialog=function(a){var c=document.createElement("div");c.style.textAlign="center";var d=a.addLanguageMenu(c,!0);null!=d&&(d.style.bottom="19px");d=null;d=a.getServiceCount();if(!a.isOffline()&&1<d){d=document.createElement("a");d.setAttribute("href","https://about.draw.io/support/");d.setAttribute("title",mxResources.get("help"));d.setAttribute("target","_blank");d.style.position="absolute";d.style.fontSize="12px";d.style.textDecoration="none";d.style.cursor="pointer";d.style.bottom="22px"; @@ -8252,30 +8252,30 @@ mxEvent.addListener(d,"click",function(){a.hideDialog(!1);a.setMode(null);a.clea g.style.color="gray";mxUtils.write(g,a.formatFileSize(c.length));b.appendChild(g);var l=document.createElement("textarea");l.setAttribute("autocomplete","off");l.setAttribute("autocorrect","off");l.setAttribute("autocapitalize","off");l.setAttribute("spellcheck","false");l.style.fontFamily="monospace";l.style.wordBreak="break-all";l.style.marginTop="10px";l.style.resize="none";l.style.height="150px";l.style.width="440px";l.style.border="1px solid gray";l.value=mxResources.get("updatingDocument"); b.appendChild(l);mxUtils.br(b);this.init=function(){window.setTimeout(function(){5E5>c.length?(l.value=c,l.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?l.select():document.execCommand("selectAll",!1,null)):(l.setAttribute("readonly","true"),l.value=c.substring(0,340)+"... ("+mxResources.get("drawingTooLarge")+")")},0)};g=document.createElement("div");g.style.position="absolute";g.style.bottom="36px";g.style.right="32px";var n=null;!EmbedDialog.showPreviewOption|| mxClient.IS_CHROMEAPP&&!k||navigator.standalone||!(k||mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode))||(n=mxUtils.button(mxResources.get(5E5>c.length?"preview":"openInNewWindow"),function(){var b=5E5>c.length?l.value:c;if(null!=e)e(b);else if(k)try{var f=a.openLink(b);null!=f&&(null==d||0<d)&&window.setTimeout(mxUtils.bind(this,function(){null!=f&&null!=f.location.href&&f.location.href.substring(0,8)!=b.substring(0,8)&&(f.close(),a.handleError({message:mxResources.get("drawingTooLarge")}))}), -d||500)}catch(v){a.handleError({message:v.message||mxResources.get("drawingTooLarge")})}else{var g=window.open(),g=null!=g?g.document:null;null!=g?(g.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+c+"</body></html>"),g.close()):a.handleError({message:mxResources.get("errorUpdatingPreview")})}}),n.className="geBtn",g.appendChild(n));if(!k||7500<c.length){var u=mxUtils.button(mxResources.get("download"),function(){a.hideDialog(); -a.saveData("embed.txt","txt",c,"text/plain")});u.className="geBtn";g.appendChild(u)}if(k&&(!a.isOffline()||mxClient.IS_CHROMEAPP)){if(51200>c.length){var f=mxUtils.button("",function(){try{var b="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(l.value);a.openLink(b)}catch(p){a.handleError({message:p.message||mxResources.get("drawingTooLarge")})}}),u=document.createElement("img");u.setAttribute("src",Editor.facebookImage);u.setAttribute("width","18");u.setAttribute("height","18");u.setAttribute("border", -"0");f.appendChild(u);f.setAttribute("title",mxResources.get("facebook")+" ("+a.formatFileSize(51200)+" max)");f.style.verticalAlign="bottom";f.style.paddingTop="4px";f.style.minWidth="46px";f.className="geBtn";g.appendChild(f)}7168>c.length&&(f=mxUtils.button("",function(){try{var b="https://twitter.com/intent/tweet?text="+encodeURIComponent("Check out the diagram I made using @drawio")+"&url="+encodeURIComponent(l.value);a.openLink(b)}catch(p){a.handleError({message:p.message||mxResources.get("drawingTooLarge")})}}), -u=document.createElement("img"),u.setAttribute("src",Editor.tweetImage),u.setAttribute("width","18"),u.setAttribute("height","18"),u.setAttribute("border","0"),u.style.marginBottom="5px",f.appendChild(u),f.setAttribute("title",mxResources.get("twitter")+" ("+a.formatFileSize(7168)+" max)"),f.style.verticalAlign="bottom",f.style.paddingTop="4px",f.style.minWidth="46px",f.className="geBtn",g.appendChild(f))}u=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});g.appendChild(u);f=mxUtils.button(mxResources.get("copy"), -function(){l.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?l.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");a.alert(mxResources.get("copiedToClipboard"))});5E5>c.length?mxClient.IS_SF||null!=document.documentMode?u.className="geBtn gePrimaryBtn":(g.appendChild(f),f.className="geBtn gePrimaryBtn",u.className="geBtn"):(g.appendChild(n),u.className="geBtn",n.className="geBtn gePrimaryBtn");b.appendChild(g);this.container=b}; +d||500)}catch(v){a.handleError({message:v.message||mxResources.get("drawingTooLarge")})}else{var g=window.open(),g=null!=g?g.document:null;null!=g?(g.writeln("<html><head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head><body>'+c+"</body></html>"),g.close()):a.handleError({message:mxResources.get("errorUpdatingPreview")})}}),n.className="geBtn",g.appendChild(n));if(!k||7500<c.length){var t=mxUtils.button(mxResources.get("download"),function(){a.hideDialog(); +a.saveData("embed.txt","txt",c,"text/plain")});t.className="geBtn";g.appendChild(t)}if(k&&(!a.isOffline()||mxClient.IS_CHROMEAPP)){if(51200>c.length){var f=mxUtils.button("",function(){try{var b="https://www.facebook.com/sharer.php?p[url]="+encodeURIComponent(l.value);a.openLink(b)}catch(p){a.handleError({message:p.message||mxResources.get("drawingTooLarge")})}}),t=document.createElement("img");t.setAttribute("src",Editor.facebookImage);t.setAttribute("width","18");t.setAttribute("height","18");t.setAttribute("border", +"0");f.appendChild(t);f.setAttribute("title",mxResources.get("facebook")+" ("+a.formatFileSize(51200)+" max)");f.style.verticalAlign="bottom";f.style.paddingTop="4px";f.style.minWidth="46px";f.className="geBtn";g.appendChild(f)}7168>c.length&&(f=mxUtils.button("",function(){try{var b="https://twitter.com/intent/tweet?text="+encodeURIComponent("Check out the diagram I made using @drawio")+"&url="+encodeURIComponent(l.value);a.openLink(b)}catch(p){a.handleError({message:p.message||mxResources.get("drawingTooLarge")})}}), +t=document.createElement("img"),t.setAttribute("src",Editor.tweetImage),t.setAttribute("width","18"),t.setAttribute("height","18"),t.setAttribute("border","0"),t.style.marginBottom="5px",f.appendChild(t),f.setAttribute("title",mxResources.get("twitter")+" ("+a.formatFileSize(7168)+" max)"),f.style.verticalAlign="bottom",f.style.paddingTop="4px",f.style.minWidth="46px",f.className="geBtn",g.appendChild(f))}t=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});g.appendChild(t);f=mxUtils.button(mxResources.get("copy"), +function(){l.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?l.select():document.execCommand("selectAll",!1,null);document.execCommand("copy");a.alert(mxResources.get("copiedToClipboard"))});5E5>c.length?mxClient.IS_SF||null!=document.documentMode?t.className="geBtn gePrimaryBtn":(g.appendChild(f),f.className="geBtn gePrimaryBtn",t.className="geBtn"):(g.appendChild(n),t.className="geBtn",n.className="geBtn gePrimaryBtn");b.appendChild(g);this.container=b}; EmbedDialog.showPreviewOption=!0; -var GoogleSitesDialog=function(a,c){function d(){var a=null!=C&&null!=C.getTitle()?C.getTitle():this.defaultFilename;if(x.checked&&""!=p.value){var b="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(p.value));null!=a&&(b+="&title="+encodeURIComponent(a));0<A.length&&(b+="&s="+A);""!=t.value&&"0"!=t.value&&(b+="&border="+t.value);""!=m.value&&(b+="&height="+m.value);b+="&pan="+(v.checked?"1":"0");b+="&zoom="+(q.checked?"1":"0");b+="&fit="+(H.checked?"1":"0"); -b+="&resize="+(D.checked?"1":"0");b+="&x0="+Number(f.value);b+="&y0="+n;e.mathEnabled&&(b+="&math=1");y.checked?b+="&edit=_blank":z.checked&&(b+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));u.value=b}else C.constructor==DriveFile||C.constructor==DropboxFile?(b="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=p.value?b+=encodeURIComponent(mxUtils.htmlEntities(p.value))+"&type=3":(b+=C.getHash().substring(1),b=C.constructor==DropboxFile?b+"&type=2":b+"&type=1"),null!= -a&&(b+="&title="+encodeURIComponent(a)),""!=m.value&&(a=parseInt(m.value)+parseInt(f.value),b+="&height="+a),u.value=b):u.value=""}var b=document.createElement("div"),e=a.editor.graph,g=e.getGraphBounds(),k=e.view.scale,l=Math.floor(g.x/k-e.view.translate.x),n=Math.floor(g.y/k-e.view.translate.y);mxUtils.write(b,mxResources.get("googleGadget")+":");mxUtils.br(b);var u=document.createElement("input");u.setAttribute("type","text");u.style.marginBottom="8px";u.style.marginTop="2px";u.style.width="410px"; -b.appendChild(u);mxUtils.br(b);this.init=function(){u.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?u.select():document.execCommand("selectAll",!1,null)};mxUtils.write(b,mxResources.get("top")+":");var f=document.createElement("input");f.setAttribute("type","text");f.setAttribute("size","4");f.style.marginRight="16px";f.style.marginLeft="4px";f.value=l;b.appendChild(f);mxUtils.write(b,mxResources.get("height")+":");var m=document.createElement("input");m.setAttribute("type", +var GoogleSitesDialog=function(a,c){function d(){var a=null!=D&&null!=D.getTitle()?D.getTitle():this.defaultFilename;if(y.checked&&""!=p.value){var b="https://www.draw.io/gadget.xml?type=4&diagram="+encodeURIComponent(mxUtils.htmlEntities(p.value));null!=a&&(b+="&title="+encodeURIComponent(a));0<B.length&&(b+="&s="+B);""!=u.value&&"0"!=u.value&&(b+="&border="+u.value);""!=m.value&&(b+="&height="+m.value);b+="&pan="+(v.checked?"1":"0");b+="&zoom="+(q.checked?"1":"0");b+="&fit="+(H.checked?"1":"0"); +b+="&resize="+(C.checked?"1":"0");b+="&x0="+Number(f.value);b+="&y0="+n;e.mathEnabled&&(b+="&math=1");x.checked?b+="&edit=_blank":z.checked&&(b+="&edit="+encodeURIComponent(mxUtils.htmlEntities(window.location.href)));t.value=b}else D.constructor==DriveFile||D.constructor==DropboxFile?(b="https://www.draw.io/gadget.xml?embed=0&diagram=",""!=p.value?b+=encodeURIComponent(mxUtils.htmlEntities(p.value))+"&type=3":(b+=D.getHash().substring(1),b=D.constructor==DropboxFile?b+"&type=2":b+"&type=1"),null!= +a&&(b+="&title="+encodeURIComponent(a)),""!=m.value&&(a=parseInt(m.value)+parseInt(f.value),b+="&height="+a),t.value=b):t.value=""}var b=document.createElement("div"),e=a.editor.graph,g=e.getGraphBounds(),k=e.view.scale,l=Math.floor(g.x/k-e.view.translate.x),n=Math.floor(g.y/k-e.view.translate.y);mxUtils.write(b,mxResources.get("googleGadget")+":");mxUtils.br(b);var t=document.createElement("input");t.setAttribute("type","text");t.style.marginBottom="8px";t.style.marginTop="2px";t.style.width="410px"; +b.appendChild(t);mxUtils.br(b);this.init=function(){t.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select():document.execCommand("selectAll",!1,null)};mxUtils.write(b,mxResources.get("top")+":");var f=document.createElement("input");f.setAttribute("type","text");f.setAttribute("size","4");f.style.marginRight="16px";f.style.marginLeft="4px";f.value=l;b.appendChild(f);mxUtils.write(b,mxResources.get("height")+":");var m=document.createElement("input");m.setAttribute("type", "text");m.setAttribute("size","4");m.style.marginLeft="4px";m.value=Math.ceil(g.height/k);b.appendChild(m);mxUtils.br(b);g=document.createElement("hr");g.setAttribute("size","1");g.style.marginBottom="16px";g.style.marginTop="16px";b.appendChild(g);mxUtils.write(b,mxResources.get("publicDiagramUrl")+":");mxUtils.br(b);var p=document.createElement("input");p.setAttribute("type","text");p.setAttribute("size","28");p.style.marginBottom="8px";p.style.marginTop="2px";p.style.width="410px";p.value=c||""; -b.appendChild(p);mxUtils.br(b);mxUtils.write(b,mxResources.get("borderWidth")+":");var t=document.createElement("input");t.setAttribute("type","text");t.setAttribute("size","3");t.style.marginBottom="8px";t.style.marginLeft="4px";t.value="0";b.appendChild(t);mxUtils.br(b);var v=document.createElement("input");v.setAttribute("type","checkbox");v.setAttribute("checked","checked");v.defaultChecked=!0;v.style.marginLeft="16px";b.appendChild(v);mxUtils.write(b,mxResources.get("pan")+" ");var q=document.createElement("input"); -q.setAttribute("type","checkbox");q.setAttribute("checked","checked");q.defaultChecked=!0;q.style.marginLeft="8px";b.appendChild(q);mxUtils.write(b,mxResources.get("zoom")+" ");var z=document.createElement("input");z.setAttribute("type","checkbox");z.style.marginLeft="8px";z.setAttribute("title",window.location.href);b.appendChild(z);mxUtils.write(b,mxResources.get("edit")+" ");var y=document.createElement("input");y.setAttribute("type","checkbox");y.style.marginLeft="8px";b.appendChild(y);mxUtils.write(b, -mxResources.get("asNew")+" ");mxUtils.br(b);var D=document.createElement("input");D.setAttribute("type","checkbox");D.setAttribute("checked","checked");D.defaultChecked=!0;D.style.marginLeft="16px";b.appendChild(D);mxUtils.write(b,mxResources.get("resize")+" ");var H=document.createElement("input");H.setAttribute("type","checkbox");H.style.marginLeft="8px";b.appendChild(H);mxUtils.write(b,mxResources.get("fit")+" ");var x=document.createElement("input");x.setAttribute("type","checkbox");x.style.marginLeft= -"8px";b.appendChild(x);mxUtils.write(b,mxResources.get("embed")+" ");var A=a.getBasenames().join(";"),C=a.getCurrentFile();mxEvent.addListener(v,"change",d);mxEvent.addListener(q,"change",d);mxEvent.addListener(D,"change",d);mxEvent.addListener(H,"change",d);mxEvent.addListener(z,"change",d);mxEvent.addListener(y,"change",d);mxEvent.addListener(x,"change",d);mxEvent.addListener(m,"change",d);mxEvent.addListener(f,"change",d);mxEvent.addListener(t,"change",d);mxEvent.addListener(p,"change",d);d(); -mxEvent.addListener(u,"click",function(){u.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?u.select():document.execCommand("selectAll",!1,null)});g=document.createElement("div");g.style.paddingTop="12px";g.style.textAlign="right";k=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});k.className="geBtn gePrimaryBtn";g.appendChild(k);b.appendChild(g);this.container=b},CreateGraphDialog=function(a,c,d){var b=document.createElement("div");b.style.textAlign= +b.appendChild(p);mxUtils.br(b);mxUtils.write(b,mxResources.get("borderWidth")+":");var u=document.createElement("input");u.setAttribute("type","text");u.setAttribute("size","3");u.style.marginBottom="8px";u.style.marginLeft="4px";u.value="0";b.appendChild(u);mxUtils.br(b);var v=document.createElement("input");v.setAttribute("type","checkbox");v.setAttribute("checked","checked");v.defaultChecked=!0;v.style.marginLeft="16px";b.appendChild(v);mxUtils.write(b,mxResources.get("pan")+" ");var q=document.createElement("input"); +q.setAttribute("type","checkbox");q.setAttribute("checked","checked");q.defaultChecked=!0;q.style.marginLeft="8px";b.appendChild(q);mxUtils.write(b,mxResources.get("zoom")+" ");var z=document.createElement("input");z.setAttribute("type","checkbox");z.style.marginLeft="8px";z.setAttribute("title",window.location.href);b.appendChild(z);mxUtils.write(b,mxResources.get("edit")+" ");var x=document.createElement("input");x.setAttribute("type","checkbox");x.style.marginLeft="8px";b.appendChild(x);mxUtils.write(b, +mxResources.get("asNew")+" ");mxUtils.br(b);var C=document.createElement("input");C.setAttribute("type","checkbox");C.setAttribute("checked","checked");C.defaultChecked=!0;C.style.marginLeft="16px";b.appendChild(C);mxUtils.write(b,mxResources.get("resize")+" ");var H=document.createElement("input");H.setAttribute("type","checkbox");H.style.marginLeft="8px";b.appendChild(H);mxUtils.write(b,mxResources.get("fit")+" ");var y=document.createElement("input");y.setAttribute("type","checkbox");y.style.marginLeft= +"8px";b.appendChild(y);mxUtils.write(b,mxResources.get("embed")+" ");var B=a.getBasenames().join(";"),D=a.getCurrentFile();mxEvent.addListener(v,"change",d);mxEvent.addListener(q,"change",d);mxEvent.addListener(C,"change",d);mxEvent.addListener(H,"change",d);mxEvent.addListener(z,"change",d);mxEvent.addListener(x,"change",d);mxEvent.addListener(y,"change",d);mxEvent.addListener(m,"change",d);mxEvent.addListener(f,"change",d);mxEvent.addListener(u,"change",d);mxEvent.addListener(p,"change",d);d(); +mxEvent.addListener(t,"click",function(){t.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?t.select():document.execCommand("selectAll",!1,null)});g=document.createElement("div");g.style.paddingTop="12px";g.style.textAlign="right";k=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});k.className="geBtn gePrimaryBtn";g.appendChild(k);b.appendChild(g);this.container=b},CreateGraphDialog=function(a,c,d){var b=document.createElement("div");b.style.textAlign= "right";this.init=function(){var c=document.createElement("div");c.style.position="relative";c.style.border="1px solid gray";c.style.width="100%";c.style.height="360px";c.style.overflow="hidden";c.style.marginBottom="16px";mxEvent.disableContextMenu(c);b.appendChild(c);var g=new Graph(c);g.setCellsCloneable(!0);g.setPanning(!0);g.setAllowDanglingEdges(!1);g.connectionHandler.select=!1;g.view.setTranslate(20,20);g.border=20;g.panningHandler.useLeftButtonForPanning=!0;var k="curved=1;";g.cellRenderer.installCellOverlayListeners= function(a,b,c){mxCellRenderer.prototype.installCellOverlayListeners.apply(this,arguments);mxEvent.addListener(c.node,mxClient.IS_POINTER?"pointerdown":"mousedown",function(c){b.fireEvent(new mxEventObject("pointerdown","event",c,"state",a))});!mxClient.IS_POINTER&&mxClient.IS_TOUCH&&mxEvent.addListener(c.node,"touchstart",function(c){b.fireEvent(new mxEventObject("pointerdown","event",c,"state",a))})};g.getAllConnectionConstraints=function(){return null};g.connectionHandler.marker.highlight.keepOnTop= !1;g.connectionHandler.createEdgeState=function(a){a=g.createEdge(null,null,null,null,null,k);return new mxCellState(this.graph.view,a,this.graph.getCellStyle(a))};var l=g.getDefaultParent(),n=mxUtils.bind(this,function(a){var b=new mxCellOverlay(this.connectImage,"Add outgoing");b.cursor="hand";b.addListener(mxEvent.CLICK,function(b,c){g.connectionHandler.reset();g.clearSelection();var f=g.getCellGeometry(a),d;m(function(){d=g.insertVertex(l,null,"Entry",f.x,f.y,80,30,"rounded=1;");n(d);g.view.refresh(d); -g.insertEdge(l,null,"",a,d,k)},function(){g.scrollCellToVisible(d)})});b.addListener("pointerdown",function(a,b){var c=b.getProperty("event"),d=b.getProperty("state");g.popupMenuHandler.hideMenu();g.stopEditing(!1);var f=mxUtils.convertPoint(g.container,mxEvent.getClientX(c),mxEvent.getClientY(c));g.connectionHandler.start(d,f.x,f.y);g.isMouseDown=!0;g.isMouseTrigger=mxEvent.isMouseEvent(c);mxEvent.consume(c)});g.addCellOverlay(a,b)});g.getModel().beginUpdate();var u;try{u=g.insertVertex(l,null,"Start", -0,0,80,30,"ellipse"),n(u)}finally{g.getModel().endUpdate()}var f;"horizontalTree"==d?(f=new mxCompactTreeLayout(g),f.edgeRouting=!1,f.levelDistance=30,k="edgeStyle=elbowEdgeStyle;elbow=horizontal;"):"verticalTree"==d?(f=new mxCompactTreeLayout(g,!1),f.edgeRouting=!1,f.levelDistance=30,k="edgeStyle=elbowEdgeStyle;elbow=vertical;"):"radialTree"==d?(f=new mxRadialTreeLayout(g,!1),f.edgeRouting=!1,f.levelDistance=80):"verticalFlow"==d?f=new mxHierarchicalLayout(g,mxConstants.DIRECTION_NORTH):"horizontalFlow"== -d?f=new mxHierarchicalLayout(g,mxConstants.DIRECTION_WEST):"organic"==d?(f=new mxFastOrganicLayout(g,!1),f.forceConstant=80):"circle"==d&&(f=new mxCircleLayout(g));if(null!=f){var m=function(a,b){g.getModel().beginUpdate();try{null!=a&&a(),f.execute(g.getDefaultParent(),u)}catch(D){throw D;}finally{var c=new mxMorphing(g);c.addListener(mxEvent.DONE,mxUtils.bind(this,function(){g.getModel().endUpdate();null!=b&&b()}));c.startAnimation()}},p=mxEdgeHandler.prototype.connect;mxEdgeHandler.prototype.connect= -function(a,b,c,d,f){p.apply(this,arguments);m()};g.resizeCell=function(){mxGraph.prototype.resizeCell.apply(this,arguments);m()};g.connectionHandler.addListener(mxEvent.CONNECT,function(){m()})}var t=mxUtils.button(mxResources.get("close"),function(){a.confirm(mxResources.get("areYouSure"),function(){null!=c.parentNode&&(g.destroy(),c.parentNode.removeChild(c));a.hideDialog()})});t.className="geBtn";a.editor.cancelFirst&&b.appendChild(t);var v=mxUtils.button(mxResources.get("insert"),function(){g.clearCellOverlays(); -var b=a.editor.graph.getFreeInsertPoint(),b=a.editor.graph.importCells(g.getModel().getChildren(g.getDefaultParent()),b.x,b.y),d=a.editor.graph.view,f=d.getBounds(b);f.x-=d.translate.x;f.y-=d.translate.y;a.editor.graph.scrollRectToVisible(f);a.editor.graph.setSelectionCells(b);null!=c.parentNode&&(g.destroy(),c.parentNode.removeChild(c));a.hideDialog()});b.appendChild(v);v.className="geBtn gePrimaryBtn";a.editor.cancelFirst||b.appendChild(t)};this.container=b}; +g.insertEdge(l,null,"",a,d,k)},function(){g.scrollCellToVisible(d)})});b.addListener("pointerdown",function(a,b){var c=b.getProperty("event"),d=b.getProperty("state");g.popupMenuHandler.hideMenu();g.stopEditing(!1);var f=mxUtils.convertPoint(g.container,mxEvent.getClientX(c),mxEvent.getClientY(c));g.connectionHandler.start(d,f.x,f.y);g.isMouseDown=!0;g.isMouseTrigger=mxEvent.isMouseEvent(c);mxEvent.consume(c)});g.addCellOverlay(a,b)});g.getModel().beginUpdate();var t;try{t=g.insertVertex(l,null,"Start", +0,0,80,30,"ellipse"),n(t)}finally{g.getModel().endUpdate()}var f;"horizontalTree"==d?(f=new mxCompactTreeLayout(g),f.edgeRouting=!1,f.levelDistance=30,k="edgeStyle=elbowEdgeStyle;elbow=horizontal;"):"verticalTree"==d?(f=new mxCompactTreeLayout(g,!1),f.edgeRouting=!1,f.levelDistance=30,k="edgeStyle=elbowEdgeStyle;elbow=vertical;"):"radialTree"==d?(f=new mxRadialTreeLayout(g,!1),f.edgeRouting=!1,f.levelDistance=80):"verticalFlow"==d?f=new mxHierarchicalLayout(g,mxConstants.DIRECTION_NORTH):"horizontalFlow"== +d?f=new mxHierarchicalLayout(g,mxConstants.DIRECTION_WEST):"organic"==d?(f=new mxFastOrganicLayout(g,!1),f.forceConstant=80):"circle"==d&&(f=new mxCircleLayout(g));if(null!=f){var m=function(a,b){g.getModel().beginUpdate();try{null!=a&&a(),f.execute(g.getDefaultParent(),t)}catch(C){throw C;}finally{var c=new mxMorphing(g);c.addListener(mxEvent.DONE,mxUtils.bind(this,function(){g.getModel().endUpdate();null!=b&&b()}));c.startAnimation()}},p=mxEdgeHandler.prototype.connect;mxEdgeHandler.prototype.connect= +function(a,b,c,d,f){p.apply(this,arguments);m()};g.resizeCell=function(){mxGraph.prototype.resizeCell.apply(this,arguments);m()};g.connectionHandler.addListener(mxEvent.CONNECT,function(){m()})}var u=mxUtils.button(mxResources.get("close"),function(){a.confirm(mxResources.get("areYouSure"),function(){null!=c.parentNode&&(g.destroy(),c.parentNode.removeChild(c));a.hideDialog()})});u.className="geBtn";a.editor.cancelFirst&&b.appendChild(u);var v=mxUtils.button(mxResources.get("insert"),function(){g.clearCellOverlays(); +var b=a.editor.graph.getFreeInsertPoint(),b=a.editor.graph.importCells(g.getModel().getChildren(g.getDefaultParent()),b.x,b.y),d=a.editor.graph.view,f=d.getBounds(b);f.x-=d.translate.x;f.y-=d.translate.y;a.editor.graph.scrollRectToVisible(f);a.editor.graph.setSelectionCells(b);null!=c.parentNode&&(g.destroy(),c.parentNode.removeChild(c));a.hideDialog()});b.appendChild(v);v.className="geBtn gePrimaryBtn";a.editor.cancelFirst||b.appendChild(u)};this.container=b}; CreateGraphDialog.prototype.connectImage=new mxImage(mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjQ3OTk0QjMyRDcyMTFFNThGQThGNDVBMjNBMjFDMzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjQ3OTk0QjQyRDcyMTFFNThGQThGNDVBMjNBMjFDMzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRjA0N0I2MjJENzExMUU1OEZBOEY0NUEyM0EyMUMzOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNDc5OTRCMjJENzIxMUU1OEZBOEY0NUEyM0EyMUMzOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PjIf+MgAAATlSURBVHjanFZraFxFFD735u4ru3ls0yZG26ShgmJoKK1J2vhIYzBgRdtIURHyw1hQUH9IxIgI2h8iCEUF/1RRlNQYCsYfCTHVhiTtNolpZCEStqSC22xIsrs1bDfu7t37Gs/cO3Ozxs1DBw73zpk555vzmHNGgJ0NYatFgmNLYUHYUoHASMz5ijmgVLmxgfKCUiBxC4ACJAeSG8nb1dVVOTc3dyoSibwWDofPBIPBJzo7O8vpGtvjpDICGztxkciECpF2LS0tvZtOpwNkk5FKpcYXFxffwL1+JuPgllPj8nk1F6RoaGjoKCqZ5ApljZDZO4SMRA0SuG2QUJIQRV8HxMOM9vf3H0ZZH9Nhg20MMl2QkFwjIyNHWlpahtADnuUMwLcRHX5aNSBjCJYEsSSLUeLEbhGe3ytCmQtA1/XY+Pj46dbW1iDuyCJp9BC5ycBj4hoeHq5ra2sbw0Xn1ZgBZ+dVkA1Lc+6p0Ck2p0QS4Ox9EhwpEylYcmBg4LH29vYQLilIOt0u5FhDfevNZDI/u93uw6PLOrwTUtjxrbPYbhD42WgMrF8JmR894ICmCgnQjVe8Xu8pXEkzMJKbuo5oNPomBbm1ZsD7s2kwFA1JZ6QBUXWT1nmGNc/qoMgavDcrQzxjQGFh4aOYIJ0sFAXcEtui4uLiVjr5KpSBVFYDDZVrWUaKRRWSAYeK0fmKykgDXbVoNaPChRuyqdDv97czL5nXxQbq6empQmsaklkDBiNpSwFVrmr2P6UyicD5piI4f8wHh0oEm8/p4h8pyGiEWvVQd3e3nxtjAzU1NR2jP7NRBWQ8GbdEzzJAmc0V3RR4cI8Dvmwuhc8fKUFA0d6/ltHg5p+Kuaejo6OeY0jcNJ/PV00ZS0nFUoZRvvFS1bZFsKHCCQ2Pl8H0chY+C96B6ZUsrCQ1qKtwQVFRURW/QhIXMAzDPAZ6BgOr8tTa8dDxCmiYGApaJbJMxSzV+brE8pdgWkcpY5dbMF1AR9XH8/xu2ilef48bvn92n82ZwHh+8ssqTEXS9p7dHisiiURikd8PbpExNTU1UVNTA3V3Y7lC16n0gpB/NwpNcZjfa7dScC4Qh0kOQCwnlEgi3F/hMVl9fX0zvKrzSk2lfXjRhj0eT/2rvWG4+Pta3oJY7XfC3hInXAv/ldeFLx8shQ+eqQL0UAAz7ylkpej5eNZRVBWL6BU6ef14OYiY1oqyTtmsavr/5koaRucT1pzx+ZpL1+GV5nLutksUgIcmtwTRiuuVZXnU5XId7A2swJkfFsymRWC91hHg1Viw6x23+7vn9sPJ+j20BE1hCXqSWaNSQ8ScbknRZWxub1PGCw/fBV+c3AeijlUbY5bBjEqr9GuYZP4jP41WudGSC6erTRCqdGZm5i1WvXWeDHnbBCZGc2Nj4wBl/hZOwrmBBfgmlID1HmGJutHaF+tKoevp/XCgstDkjo2NtWKLuc6AVN4mNjY+s1XQxoenOoFuDPHGtnRbJj9ej5GvL0dI7+giuRyMk1giazc+DP6vgUDgOJVlOv7R+PJ12QIeL6SyeDz+Kfp8ZrNWjgDTsVjsQ7qXyTjztXJhm9ePxFLfMTg4eG9tbe1RTP9KFFYQfHliYmIS69kCC7jKYmKwxxD5P88tkVkqbPPcIps9t4T/+HjcuJ/s5BFJgf4WYABCtxGuxIZ90gAAAABJRU5ErkJggg==": IMAGE_PATH+"/handle-connect.png",26,26); var BackgroundImageDialog=function(a,c){var d=document.createElement("div");d.style.whiteSpace="nowrap";var b=document.createElement("h2");mxUtils.write(b,mxResources.get("backgroundImage"));b.style.marginTop="0px";d.appendChild(b);mxUtils.write(d,mxResources.get("image")+" "+mxResources.get("url")+":");mxUtils.br(d);var b=a.editor.graph.backgroundImage,e=document.createElement("input");e.setAttribute("type","text");e.style.marginTop="4px";e.style.marginBottom="4px";e.style.width="350px";e.value= @@ -8283,70 +8283,70 @@ null!=b?b.src:"";var g=!1,k=function(){g||""==e.value||a.isOffline()?(l.value="" c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(f){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=a.highlightElement(b));f.stopPropagation();f.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(b){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxBackgroundSize,function(a,b,c,f,d,m){e.value=a;k()},function(){}, function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!0,a.maxBackgroundBytes,a.maxBackgroundBytes);else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var f=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(f)&&(e.value=decodeURIComponent(f),k())}b.stopPropagation();b.preventDefault()}),!1)}};d.appendChild(e);mxUtils.br(d);mxUtils.br(d);mxUtils.write(d,mxResources.get("width")+":");var l=document.createElement("input"); l.setAttribute("type","text");l.style.width="60px";l.style.marginLeft="4px";l.style.marginRight="16px";l.value=null!=b?b.width:"";d.appendChild(l);mxUtils.write(d,mxResources.get("height")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight="16px";n.value=null!=b?b.height:"";d.appendChild(n);b=mxUtils.button(mxResources.get("reset"),function(){e.value="";l.value="";n.value="";g=!1});mxEvent.addListener(b,"mousedown", -function(){g=!0});mxEvent.addListener(b,"touchstart",function(){g=!0});b.className="geBtn";b.width="100";d.appendChild(b);mxUtils.br(d);mxEvent.addListener(e,"change",k);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(e.value=a.url,k()));e.focus()};b=document.createElement("div");b.style.marginTop="40px";b.style.textAlign="right";var u=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}); -u.className="geBtn";a.editor.cancelFirst&&b.appendChild(u);if(!a.isOffline()&&"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top){var f=mxUtils.button(mxResources.get("search"),function(){if(null==a.imageSearchPicker){var b=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);a.imageSearchPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.imageSearchPicker.setVisible(!0)}); +function(){g=!0});mxEvent.addListener(b,"touchstart",function(){g=!0});b.className="geBtn";b.width="100";d.appendChild(b);mxUtils.br(d);mxEvent.addListener(e,"change",k);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(e.value=a.url,k()));e.focus()};b=document.createElement("div");b.style.marginTop="40px";b.style.textAlign="right";var t=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()}); +t.className="geBtn";a.editor.cancelFirst&&b.appendChild(t);if(!a.isOffline()&&"undefined"!=typeof google&&"undefined"!=typeof google.picker&&window.self===window.top){var f=mxUtils.button(mxResources.get("search"),function(){if(null==a.imageSearchPicker){var b=(new google.picker.PickerBuilder).setLocale(mxLanguage).addView(google.picker.ViewId.IMAGE_SEARCH).enableFeature(google.picker.Feature.NAV_HIDDEN);a.imageSearchPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.imageSearchPicker.setVisible(!0)}); f.className="geBtn";b.appendChild(f);null!=a.drive&&"1"==urlParams.photos&&(f=mxUtils.button(mxResources.get("googlePlus"),function(){a.spinner.spin(document.body,mxResources.get("authorizing"))&&a.drive.checkToken(mxUtils.bind(this,function(){a.spinner.stop();if(null==a.photoPicker){var b=(new google.picker.PickerBuilder).setAppId(a.drive.appId).setLocale(mxLanguage).setOAuthToken(a.drive.token).addView(google.picker.ViewId.PHOTO_UPLOAD);a.photoPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.photoPicker.setVisible(!0)}))}), -f.className="geBtn",b.appendChild(f))}f=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c(""!=e.value?new mxImage(mxUtils.trim(e.value),l.value,n.value):null)});f.className="geBtn gePrimaryBtn";b.appendChild(f);a.editor.cancelFirst||b.appendChild(u);d.appendChild(b);this.container=d},ParseDialog=function(a,c,d){function b(b,c){var f=b.split("\n");if("plantUmlPng"==c||"plantUmlSvg"==c||"plantUmlTxt"==c){if(a.spinner.spin(document.body,mxResources.get("inserting"))){var d=a.editor.graph, -m="plantUmlTxt"==c?"txt":"plantUmlPng"==c?"png":"svg";a.generatePlantUmlImage(b,m,function(c,f,p){a.spinner.stop();var e=null;d.getModel().beginUpdate();try{e="txt"==m?a.insertAsPreText(c,g.x,g.y):d.insertVertex(null,null,null,g.x,g.y,f,p,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a.convertDataUri(c)+";"),d.setAttributeForCell(e,"plantUmlData",JSON.stringify({data:b,format:m}))}finally{d.getModel().endUpdate()}null!=e&&(d.setSelectionCell(e),d.scrollCellToVisible(e))}, -function(b){a.handleError(b)})}}else if("table"==c){for(var p=null,e=[],k=0,x=0;x<f.length;x++){var t=mxUtils.trim(f[x]);if("create table"==t.substring(0,12).toLowerCase())t=mxUtils.trim(t.substring(12)),"("==t.charAt(t.length-1)&&(t=t.substring(0,t.lastIndexOf(" "))),p=new mxCell(t,new mxGeometry(k,0,160,26),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;"), -p.vertex=!0,e.push(p),t=a.editor.graph.getPreferredSizeForCell(B),null!=t&&(p.geometry.width=t.width+10);else if(null!=p&&")"==t.charAt(0))k+=p.geometry.width+40,p=null;else if("("!=t&&null!=p&&(t=t.substring(0,","==t.charAt(t.length-1)?t.length-1:t.length),"primary key"!=t.substring(0,11).toLowerCase())){var l=t.toLowerCase().indexOf("primary key"),t=t.replace(/primary key/i,""),B=new mxCell(t,new mxGeometry(0,0,90,26),"shape=partialRectangle;top=0;left=0;right=0;bottom=0;align=left;verticalAlign=top;spacingTop=-2;fillColor=none;spacingLeft=34;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;"); -B.vertex=!0;t=sb.cloneCell(B,0<l?"PK":"");t.connectable=!1;t.style="shape=partialRectangle;top=0;left=0;bottom=0;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;";t.geometry.width=30;t.geometry.height=26;B.insert(t);t=a.editor.graph.getPreferredSizeForCell(B);null!=t&&p.geometry.width<t.width+10&&(p.geometry.width=Math.min(220,t.width+10));p.insert(B);p.geometry.height+=26}}0<e.length&&(d=a.editor.graph, -x=d.view,f=d.getGraphBounds(),d.setSelectionCells(d.importCells(e,Math.ceil(Math.max(0,f.x/x.scale-x.translate.x)+4*d.gridSize),Math.ceil(Math.max(0,(f.y+f.height)/x.scale-x.translate.y)+4*d.gridSize))),d.scrollCellToVisible(d.getSelectionCell()))}else if("list"==c){if(0<f.length){d=a.editor.graph;B=null;e=[];for(x=p=0;x<f.length;x++)";"!=f[x].charAt(0)&&(0==f[x].length?B=null:null==B?(B=new mxCell(f[x],new mxGeometry(p,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;"), -B.vertex=!0,e.push(B),t=d.getPreferredSizeForCell(B),null!=t&&B.geometry.width<t.width+10&&(B.geometry.width=t.width+10),p+=B.geometry.width+40):"--"==f[x]?(t=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;"),t.vertex=!0,B.geometry.height+=t.geometry.height,B.insert(t)):0<f[x].length&&(k=new mxCell(f[x],new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"), -k.vertex=!0,t=d.getPreferredSizeForCell(k),null!=t&&k.geometry.width<t.width&&(k.geometry.width=t.width),B.geometry.width=Math.max(B.geometry.width,k.geometry.width),B.geometry.height+=k.geometry.height,B.insert(k)));if(0<e.length){d.getModel().beginUpdate();try{e=d.importCells(e,g.x,g.y);t=[];for(x=0;x<e.length;x++)t.push(e[x]),t=t.concat(e[x].children);d.fireEvent(new mxEventObject("cellsInserted","cells",t))}finally{d.getModel().endUpdate()}d.setSelectionCells(e);d.scrollCellToVisible(d.getSelectionCell())}}}else{for(var B= -function(a){var b=n[a];null==b&&(b=new mxCell(a,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),b.vertex=!0,n[a]=b,e.push(b));return b},n={},e=[],x=0;x<f.length;x++)if(";"!=f[x].charAt(0)){var F=f[x].split("->");if(2<=F.length){var l=B(F[0]),G=B(F[F.length-1]),F=new mxCell(2<F.length?F[1]:"",new mxGeometry);F.edge=!0;l.insertEdge(F,!0);G.insertEdge(F,!1);e.push(F)}}if(0<e.length){f=document.createElement("div");f.style.visibility="hidden";document.body.appendChild(f);d=new Graph(f);d.getModel().beginUpdate(); -try{e=d.importCells(e);for(x=0;x<e.length;x++)d.getModel().isVertex(e[x])&&(t=d.getPreferredSizeForCell(e[x]),e[x].geometry.width=Math.max(e[x].geometry.width,t.width),e[x].geometry.height=Math.max(e[x].geometry.height,t.height));p=new mxFastOrganicLayout(d);p.disableEdgeStyle=!1;p.forceConstant=120;p.execute(d.getDefaultParent());k=new mxParallelEdgeLayout(d);k.spacing=20;k.execute(d.getDefaultParent())}finally{d.getModel().endUpdate()}d.clearCellOverlays();t=[];a.editor.graph.getModel().beginUpdate(); -try{t=a.editor.graph.importCells(d.getModel().getChildren(d.getDefaultParent()),g.x,g.y),a.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",t))}finally{a.editor.graph.getModel().endUpdate()}a.editor.graph.setSelectionCells(t);a.editor.graph.scrollCellToVisible(a.editor.graph.getSelectionCell());d.destroy();f.parentNode.removeChild(f)}}}function e(){return"list"==l.value?"Person\n-name: String\n-birthDate: Date\n--\n+getName(): String\n+setName(String): void\n+isBirthday(): boolean\n\nAddress\n-street: String\n-city: String\n-state: String": +f.className="geBtn",b.appendChild(f))}f=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();c(""!=e.value?new mxImage(mxUtils.trim(e.value),l.value,n.value):null)});f.className="geBtn gePrimaryBtn";b.appendChild(f);a.editor.cancelFirst||b.appendChild(t);d.appendChild(b);this.container=d},ParseDialog=function(a,c,d){function b(b,c){var f=b.split("\n");if("plantUmlPng"==c||"plantUmlSvg"==c||"plantUmlTxt"==c){if(a.spinner.spin(document.body,mxResources.get("inserting"))){var d=a.editor.graph, +m="plantUmlTxt"==c?"txt":"plantUmlPng"==c?"png":"svg";a.generatePlantUmlImage(b,m,function(c,f,p){a.spinner.stop();var q=null;d.getModel().beginUpdate();try{q="txt"==m?a.insertAsPreText(c,g.x,g.y):d.insertVertex(null,null,null,g.x,g.y,f,p,"shape=image;noLabel=1;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a.convertDataUri(c)+";"),d.setAttributeForCell(q,"plantUmlData",JSON.stringify({data:b,format:m}))}finally{d.getModel().endUpdate()}null!=q&&(d.setSelectionCell(q),d.scrollCellToVisible(q))}, +function(b){a.handleError(b)})}}else if("table"==c){for(var p=null,e=[],k=0,y=0;y<f.length;y++){var u=mxUtils.trim(f[y]);if("create table"==u.substring(0,12).toLowerCase())u=mxUtils.trim(u.substring(12)),"("==u.charAt(u.length-1)&&(u=u.substring(0,u.lastIndexOf(" "))),p=new mxCell(u,new mxGeometry(k,0,160,26),"swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=#e0e0e0;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;marginBottom=0;swimlaneFillColor=#ffffff;align=center;"), +p.vertex=!0,e.push(p),u=a.editor.graph.getPreferredSizeForCell(A),null!=u&&(p.geometry.width=u.width+10);else if(null!=p&&")"==u.charAt(0))k+=p.geometry.width+40,p=null;else if("("!=u&&null!=p&&(u=u.substring(0,","==u.charAt(u.length-1)?u.length-1:u.length),"primary key"!=u.substring(0,11).toLowerCase())){var l=u.toLowerCase().indexOf("primary key"),u=u.replace(/primary key/i,""),A=new mxCell(u,new mxGeometry(0,0,90,26),"shape=partialRectangle;top=0;left=0;right=0;bottom=0;align=left;verticalAlign=top;spacingTop=-2;fillColor=none;spacingLeft=34;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;dropTarget=0;"); +A.vertex=!0;u=sb.cloneCell(A,0<l?"PK":"");u.connectable=!1;u.style="shape=partialRectangle;top=0;left=0;bottom=0;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[];portConstraint=eastwest;part=1;";u.geometry.width=30;u.geometry.height=26;A.insert(u);u=a.editor.graph.getPreferredSizeForCell(A);null!=u&&p.geometry.width<u.width+10&&(p.geometry.width=Math.min(220,u.width+10));p.insert(A);p.geometry.height+=26}}0<e.length&&(d=a.editor.graph, +y=d.view,f=d.getGraphBounds(),d.setSelectionCells(d.importCells(e,Math.ceil(Math.max(0,f.x/y.scale-y.translate.x)+4*d.gridSize),Math.ceil(Math.max(0,(f.y+f.height)/y.scale-y.translate.y)+4*d.gridSize))),d.scrollCellToVisible(d.getSelectionCell()))}else if("list"==c){if(0<f.length){d=a.editor.graph;A=null;e=[];for(y=p=0;y<f.length;y++)";"!=f[y].charAt(0)&&(0==f[y].length?A=null:null==A?(A=new mxCell(f[y],new mxGeometry(p,0,160,30),"swimlane;fontStyle=1;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;"), +A.vertex=!0,e.push(A),u=d.getPreferredSizeForCell(A),null!=u&&A.geometry.width<u.width+10&&(A.geometry.width=u.width+10),p+=A.geometry.width+40):"--"==f[y]?(u=new mxCell("",new mxGeometry(0,0,40,8),"line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;"),u.vertex=!0,A.geometry.height+=u.geometry.height,A.insert(u)):0<f[y].length&&(k=new mxCell(f[y],new mxGeometry(0,0,60,26),"text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;"), +k.vertex=!0,u=d.getPreferredSizeForCell(k),null!=u&&k.geometry.width<u.width&&(k.geometry.width=u.width),A.geometry.width=Math.max(A.geometry.width,k.geometry.width),A.geometry.height+=k.geometry.height,A.insert(k)));if(0<e.length){d.getModel().beginUpdate();try{e=d.importCells(e,g.x,g.y);u=[];for(y=0;y<e.length;y++)u.push(e[y]),u=u.concat(e[y].children);d.fireEvent(new mxEventObject("cellsInserted","cells",u))}finally{d.getModel().endUpdate()}d.setSelectionCells(e);d.scrollCellToVisible(d.getSelectionCell())}}}else{for(var A= +function(a){var b=n[a];null==b&&(b=new mxCell(a,new mxGeometry(0,0,80,30),"whiteSpace=wrap;html=1;"),b.vertex=!0,n[a]=b,e.push(b));return b},n={},e=[],y=0;y<f.length;y++)if(";"!=f[y].charAt(0)){var G=f[y].split("->");if(2<=G.length){var l=A(G[0]),I=A(G[G.length-1]),G=new mxCell(2<G.length?G[1]:"",new mxGeometry);G.edge=!0;l.insertEdge(G,!0);I.insertEdge(G,!1);e.push(G)}}if(0<e.length){f=document.createElement("div");f.style.visibility="hidden";document.body.appendChild(f);d=new Graph(f);d.getModel().beginUpdate(); +try{e=d.importCells(e);for(y=0;y<e.length;y++)d.getModel().isVertex(e[y])&&(u=d.getPreferredSizeForCell(e[y]),e[y].geometry.width=Math.max(e[y].geometry.width,u.width),e[y].geometry.height=Math.max(e[y].geometry.height,u.height));p=new mxFastOrganicLayout(d);p.disableEdgeStyle=!1;p.forceConstant=120;p.execute(d.getDefaultParent());k=new mxParallelEdgeLayout(d);k.spacing=20;k.execute(d.getDefaultParent())}finally{d.getModel().endUpdate()}d.clearCellOverlays();u=[];a.editor.graph.getModel().beginUpdate(); +try{u=a.editor.graph.importCells(d.getModel().getChildren(d.getDefaultParent()),g.x,g.y),a.editor.graph.fireEvent(new mxEventObject("cellsInserted","cells",u))}finally{a.editor.graph.getModel().endUpdate()}a.editor.graph.setSelectionCells(u);a.editor.graph.scrollCellToVisible(a.editor.graph.getSelectionCell());d.destroy();f.parentNode.removeChild(f)}}}function e(){return"list"==l.value?"Person\n-name: String\n-birthDate: Date\n--\n+getName(): String\n+setName(String): void\n+isBirthday(): boolean\n\nAddress\n-street: String\n-city: String\n-state: String": "table"==l.value?"CREATE TABLE Suppliers\n(\nsupplier_id int NOT NULL PRIMARY KEY,\nsupplier_name char(50) NOT NULL,\ncontact_name char(50),\n);\nCREATE TABLE Customers\n(\ncustomer_id int NOT NULL PRIMARY KEY,\ncustomer_name char(50) NOT NULL,\naddress char(50),\ncity char(50),\nstate char(25),\nzip_code char(10)\n);\n":"plantUmlPng"==l.value?"@startuml\nskinparam backgroundcolor transparent\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml": "plantUmlSvg"==l.value||"plantUmlTxt"==l.value?"@startuml\nskinparam shadowing false\nAlice -> Bob: Authentication Request\nBob --\x3e Alice: Authentication Response\n\nAlice -> Bob: Another authentication Request\nAlice <-- Bob: Another authentication Response\n@enduml":";Example:\na->b\nb->edge label->c\nc->a\n"}var g=a.editor.graph.getFreeInsertPoint();c=document.createElement("div");c.style.textAlign="right";var k=document.createElement("textarea");k.style.resize="none";k.style.width="100%";k.style.height= "354px";k.style.marginBottom="16px";var l=document.createElement("select");"formatSql"==d&&(l.style.display="none");var n=document.createElement("option");n.setAttribute("value","list");mxUtils.write(n,mxResources.get("list"));"plantUml"!=d&&l.appendChild(n);null!=d&&"fromText"!=d||n.setAttribute("selected","selected");n=document.createElement("option");n.setAttribute("value","table");mxUtils.write(n,mxResources.get("formatSql"));"formatSql"==d&&(l.appendChild(n),n.setAttribute("selected","selected")); -n=document.createElement("option");n.setAttribute("value","diagram");mxUtils.write(n,mxResources.get("diagram"));"plantUml"!=d&&l.appendChild(n);n=document.createElement("option");n.setAttribute("value","plantUmlSvg");mxUtils.write(n,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==d&&n.setAttribute("selected","selected");var u=document.createElement("option");u.setAttribute("value","plantUmlPng");mxUtils.write(u,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+ -")");var f=document.createElement("option");f.setAttribute("value","plantUmlTxt");mxUtils.write(f,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!a.isOffline()&&"plantUml"==d&&(l.appendChild(n),l.appendChild(u),l.appendChild(f));var m=e();k.value=m;c.appendChild(k);this.init=function(){k.focus()};Graph.fileSupport&&(k.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},!1),k.addEventListener("drop",function(a){a.stopPropagation(); +n=document.createElement("option");n.setAttribute("value","diagram");mxUtils.write(n,mxResources.get("diagram"));"plantUml"!=d&&l.appendChild(n);n=document.createElement("option");n.setAttribute("value","plantUmlSvg");mxUtils.write(n,mxResources.get("plantUml")+" ("+mxResources.get("formatSvg")+")");"plantUml"==d&&n.setAttribute("selected","selected");var t=document.createElement("option");t.setAttribute("value","plantUmlPng");mxUtils.write(t,mxResources.get("plantUml")+" ("+mxResources.get("formatPng")+ +")");var f=document.createElement("option");f.setAttribute("value","plantUmlTxt");mxUtils.write(f,mxResources.get("plantUml")+" ("+mxResources.get("text")+")");EditorUi.enablePlantUml&&Graph.fileSupport&&!a.isOffline()&&"plantUml"==d&&(l.appendChild(n),l.appendChild(t),l.appendChild(f));var m=e();k.value=m;c.appendChild(k);this.init=function(){k.focus()};Graph.fileSupport&&(k.addEventListener("dragover",function(a){a.stopPropagation();a.preventDefault()},!1),k.addEventListener("drop",function(a){a.stopPropagation(); a.preventDefault();if(0<a.dataTransfer.files.length){a=a.dataTransfer.files[0];var b=new FileReader;b.onload=function(a){k.value=a.target.result};b.readAsText(a)}},!1));c.appendChild(l);mxEvent.addListener(l,"change",function(){var a=e();if(0==k.value.length||k.value==m)m=a,k.value=m});d=mxUtils.button(mxResources.get("close"),function(){k.value==m?a.hideDialog():a.confirm(mxResources.get("areYouSure"),function(){a.hideDialog()})});d.className="geBtn";a.editor.cancelFirst&&c.appendChild(d);n=mxUtils.button(mxResources.get("insert"), -function(){a.hideDialog();b(k.value,l.value)});c.appendChild(n);n.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(d);this.container=c},NewDialog=function(a,c,d,b,e,g,k,l,n,u,f,m,p,t,v,q,z){function y(){var a=!0;if(null!=S)for(;G<S.length&&(a||0!=mxUtils.mod(G,30));){var b=S[G++],b=x(b.url,b.libs,b.title,b.tooltip?b.tooltip:b.title,b.select,b.imgUrl,b.info,b.onClick,b.preview,b.noImg,b.clibs);a&&b.click();a=!1}}function D(){if(Y)d||a.hideDialog(),t(Y,aa,F.value);else if(b)d||a.hideDialog(), -b(fa,F.value);else{var c=F.value;null!=c&&0<c.length&&a.pickFolder(a.mode,function(b){a.createFile(c,fa,null!=W&&0<W.length?W:null,null,function(){a.hideDialog()},null,b,null,null!=ga&&0<ga.length?ga:null)},a.mode!=App.MODE_GOOGLE||null==a.stateArg||null==a.stateArg.folderId)}}function H(a,b,c,d,f,m){null!=ba&&(ba.style.backgroundColor="transparent",ba.style.border="1px solid transparent");E.removeAttribute("disabled");fa=b;W=c;ga=m;ba=a;Y=d;aa=f;ba.style.backgroundColor=l;ba.style.border=n}function x(b, -c,d,f,m,p,e,q,g,k,x){var t=document.createElement("div");t.className="geTemplate";t.style.height=Z+"px";t.style.width=da+"px";null!=d?t.setAttribute("title",mxResources.get(d,null,d)):null!=f&&0<f.length&&t.setAttribute("title",f);if(null!=p)t.style.backgroundImage="url("+p+")",t.style.backgroundSize="contain",t.style.backgroundPosition="center center",t.style.backgroundRepeat="no-repeat",mxEvent.addListener(t,"click",function(a){H(t,null,null,b,e,x)}),mxEvent.addListener(t,"dblclick",function(a){D()}); -else if(!k&&null!=b&&0<b.length){f=g||TEMPLATE_PATH+"/"+b.substring(0,b.length-4)+".png";t.style.backgroundImage="url("+f+")";t.style.backgroundPosition="center center";t.style.backgroundRepeat="no-repeat";null!=d&&(t.innerHTML='<table width="100%" height="100%" style="line-height:1.3em;'+("dark"==uiTheme?"":"background:rgba(255,255,255,0.85);")+'border:inherit;"><tr><td align="center" valign="middle"><span style="display:inline-block;padding:4px 8px 4px 8px;user-select:none;border-radius:3px;background:rgba(255,255,255,0.85);overflow:hidden;text-overflow:ellipsis;max-width:'+ -(Z-34)+'px;">'+mxResources.get(d,null,d)+"</span></td></tr></table>");var B=!1;mxEvent.addListener(t,"click",function(d){E.setAttribute("disabled","disabled");t.style.backgroundColor="transparent";t.style.border="1px solid transparent";d=b;d=/^https?:\/\//.test(d)&&!a.editor.isCorsEnabledForUrl(d)?PROXY_URL+"?url="+encodeURIComponent(d):TEMPLATE_PATH+"/"+d;J.spin(P);mxUtils.get(d,mxUtils.bind(this,function(a){J.stop();200<=a.getStatus()&&299>=a.getStatus()&&(H(t,a.getText(),c,null,null,x),B&&D())}))}); -mxEvent.addListener(t,"dblclick",function(a){B=!0})}else t.innerHTML='<table width="100%" height="100%" style="line-height:1.3em;"><tr><td align="center" valign="middle"><span style="display:inline-block;padding:4px 8px 4px 8px;user-select:none;border-radius:3px;background:#ffffff;overflow:hidden;text-overflow:ellipsis;max-width:'+(Z-34)+'px;">'+mxResources.get(d,null,d)+"</span></td></tr></table>",m&&H(t),null!=q?mxEvent.addListener(t,"click",q):(mxEvent.addListener(t,"click",function(a){H(t,null, -null,b,e)}),mxEvent.addListener(t,"dblclick",function(a){D()}));P.appendChild(t);return t}function A(){T&&(T=!1,mxEvent.addListener(P,"scroll",function(a){P.scrollTop+P.clientHeight>=P.scrollHeight&&(y(),mxEvent.consume(a))}));var a=null;if(0<ea){var b=document.createElement("div");b.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(b,mxResources.get("custom"));ca.appendChild(b);for(var c in M){var d=document.createElement("div"),b=c,f=M[c]; -18<b.length&&(b=b.substring(0,18)+"…");d.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;";d.setAttribute("title",b+" ("+f.length+")");mxUtils.write(d,d.getAttribute("title"));null!=u&&(d.style.padding=u);ca.appendChild(d);(function(b,c){mxEvent.addListener(d,"click",function(){a!=c&&(a.style.backgroundColor="",a=c,a.style.backgroundColor=k,P.scrollTop=0,P.innerHTML="",G=0,S=M[b],O=null,y())})})(c, +function(){a.hideDialog();b(k.value,l.value)});c.appendChild(n);n.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(d);this.container=c},NewDialog=function(a,c,d,b,e,g,k,l,n,t,f,m,p,u,v,q,z){function x(){var a=!0;if(null!=S)for(;I<S.length&&(a||0!=mxUtils.mod(I,30));){var b=S[I++],b=y(b.url,b.libs,b.title,b.tooltip?b.tooltip:b.title,b.select,b.imgUrl,b.info,b.onClick,b.preview,b.noImg,b.clibs);a&&b.click();a=!1}}function C(){if(Y)d||a.hideDialog(),u(Y,aa,G.value);else if(b)d||a.hideDialog(), +b(fa,G.value);else{var c=G.value;null!=c&&0<c.length&&a.pickFolder(a.mode,function(b){a.createFile(c,fa,null!=W&&0<W.length?W:null,null,function(){a.hideDialog()},null,b,null,null!=ga&&0<ga.length?ga:null)},a.mode!=App.MODE_GOOGLE||null==a.stateArg||null==a.stateArg.folderId)}}function H(a,b,c,d,f,m){null!=ba&&(ba.style.backgroundColor="transparent",ba.style.border="1px solid transparent");E.removeAttribute("disabled");fa=b;W=c;ga=m;ba=a;Y=d;aa=f;ba.style.backgroundColor=l;ba.style.border=n}function y(b, +c,d,f,m,p,q,e,g,k,y){var A=document.createElement("div");A.className="geTemplate";A.style.height=Z+"px";A.style.width=da+"px";null!=d?A.setAttribute("title",mxResources.get(d,null,d)):null!=f&&0<f.length&&A.setAttribute("title",f);if(null!=p)A.style.backgroundImage="url("+p+")",A.style.backgroundSize="contain",A.style.backgroundPosition="center center",A.style.backgroundRepeat="no-repeat",mxEvent.addListener(A,"click",function(a){H(A,null,null,b,q,y)}),mxEvent.addListener(A,"dblclick",function(a){C()}); +else if(!k&&null!=b&&0<b.length){f=g||TEMPLATE_PATH+"/"+b.substring(0,b.length-4)+".png";A.style.backgroundImage="url("+f+")";A.style.backgroundPosition="center center";A.style.backgroundRepeat="no-repeat";null!=d&&(A.innerHTML='<table width="100%" height="100%" style="line-height:1.3em;'+("dark"==uiTheme?"":"background:rgba(255,255,255,0.85);")+'border:inherit;"><tr><td align="center" valign="middle"><span style="display:inline-block;padding:4px 8px 4px 8px;user-select:none;border-radius:3px;background:rgba(255,255,255,0.85);overflow:hidden;text-overflow:ellipsis;max-width:'+ +(Z-34)+'px;">'+mxResources.get(d,null,d)+"</span></td></tr></table>");var u=!1;mxEvent.addListener(A,"click",function(d){E.setAttribute("disabled","disabled");A.style.backgroundColor="transparent";A.style.border="1px solid transparent";d=b;d=/^https?:\/\//.test(d)&&!a.editor.isCorsEnabledForUrl(d)?PROXY_URL+"?url="+encodeURIComponent(d):TEMPLATE_PATH+"/"+d;J.spin(P);mxUtils.get(d,mxUtils.bind(this,function(a){J.stop();200<=a.getStatus()&&299>=a.getStatus()&&(H(A,a.getText(),c,null,null,y),u&&C())}))}); +mxEvent.addListener(A,"dblclick",function(a){u=!0})}else A.innerHTML='<table width="100%" height="100%" style="line-height:1.3em;"><tr><td align="center" valign="middle"><span style="display:inline-block;padding:4px 8px 4px 8px;user-select:none;border-radius:3px;background:#ffffff;overflow:hidden;text-overflow:ellipsis;max-width:'+(Z-34)+'px;">'+mxResources.get(d,null,d)+"</span></td></tr></table>",m&&H(A),null!=e?mxEvent.addListener(A,"click",e):(mxEvent.addListener(A,"click",function(a){H(A,null, +null,b,q)}),mxEvent.addListener(A,"dblclick",function(a){C()}));P.appendChild(A);return A}function B(){T&&(T=!1,mxEvent.addListener(P,"scroll",function(a){P.scrollTop+P.clientHeight>=P.scrollHeight&&(x(),mxEvent.consume(a))}));var a=null;if(0<ea){var b=document.createElement("div");b.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(b,mxResources.get("custom"));ca.appendChild(b);for(var c in M){var d=document.createElement("div"),b=c,f=M[c]; +18<b.length&&(b=b.substring(0,18)+"…");d.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;";d.setAttribute("title",b+" ("+f.length+")");mxUtils.write(d,d.getAttribute("title"));null!=t&&(d.style.padding=t);ca.appendChild(d);(function(b,c){mxEvent.addListener(d,"click",function(){a!=c&&(a.style.backgroundColor="",a=c,a.style.backgroundColor=k,P.scrollTop=0,P.innerHTML="",I=0,S=M[b],O=null,x())})})(c, d)}b=document.createElement("div");b.style.cssText="font-weight: bold;background: #f9f9f9;padding: 5px 0 5px 0;text-align: center;";mxUtils.write(b,"draw.io");ca.appendChild(b)}for(c in Q)d=document.createElement("div"),b=mxResources.get(c),f=Q[c],null==b&&(b=c.substring(0,1).toUpperCase()+c.substring(1)),18<b.length&&(b=b.substring(0,18)+"…"),d.style.cssText="display:block;cursor:pointer;padding:6px;white-space:nowrap;margin-bottom:-1px;overflow:hidden;text-overflow:ellipsis;user-select:none;", -d.setAttribute("title",b+" ("+f.length+")"),mxUtils.write(d,d.getAttribute("title")),null!=u&&(d.style.padding=u),ca.appendChild(d),null==a&&0<f.length&&(a=d,a.style.backgroundColor=k,S=f),function(b,c){mxEvent.addListener(d,"click",function(){a!=c&&(a.style.backgroundColor="",a=c,a.style.backgroundColor=k,P.scrollTop=0,P.innerHTML="",G=0,S=Q[b],O=null,y())})}(c,d);y()}d=null!=d?d:!0;e=null!=e?e:!1;k=null!=k?k:"#ebf2f9";l=null!=l?l:"dark"==uiTheme?"transparent":"#e6eff8";n=null!=n?n:"dark"==uiTheme? -"1px dotted rgb(235, 242, 249)":"1px solid #ccd9ea";f=null!=f?f:EditorUi.templateFile;var C=document.createElement("div");C.style.height="100%";var B=document.createElement("div");B.style.whiteSpace="nowrap";B.style.height="46px";d&&C.appendChild(B);var I=document.createElement("img");I.setAttribute("border","0");I.setAttribute("align","absmiddle");I.style.width="40px";I.style.height="40px";I.style.marginRight="10px";I.style.paddingBottom="4px";I.src=a.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg": -a.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":a.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":a.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":a.mode==App.MODE_GITLAB?IMAGE_PATH+"/gitlab-logo.svg":a.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":a.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png";!c&&d&&B.appendChild(I);d&&mxUtils.write(B,(null==a.mode||a.mode==App.MODE_GOOGLE||a.mode==App.MODE_BROWSER?mxResources.get("diagramName"): -mxResources.get("filename"))+":");I=".drawio";a.mode==App.MODE_GOOGLE&&null!=a.drive?I=a.drive.extension:a.mode==App.MODE_DROPBOX&&null!=a.dropbox?I=a.dropbox.extension:a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?I=a.oneDrive.extension:a.mode==App.MODE_GITHUB&&null!=a.gitHub?I=a.gitHub.extension:a.mode==App.MODE_GITLAB&&null!=a.gitLab?I=a.gitLab.extension:a.mode==App.MODE_TRELLO&&null!=a.trello&&(I=a.trello.extension);var F=document.createElement("input");F.setAttribute("value",a.defaultFilename+ -I);F.style.marginLeft="10px";F.style.width=c?"220px":"430px";this.init=function(){d&&(F.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?F.select():document.execCommand("selectAll",!1,null))};d&&(B.appendChild(F),null!=a.editor.fileExtensions&&(I=FilenameDialog.createTypeHint(a,F,a.editor.fileExtensions),I.style.marginTop="12px",B.appendChild(I)));var B=!1,G=0,J=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1, -hwaccel:!1,top:"40%",zIndex:2E9}),E=mxUtils.button(q||mxResources.get("create"),function(){E.setAttribute("disabled","disabled");D();E.removeAttribute("disabled")});E.className="geBtn gePrimaryBtn";if(m||p){var K=[],O=null,R=null,X=null,U=function(a){E.setAttribute("disabled","disabled");for(var b=0;b<K.length;b++)K[b].className=b==a?"geBtn gePrimaryBtn":"geBtn"},B=!0;q=document.createElement("div");q.style.whiteSpace="nowrap";q.style.height="30px";C.appendChild(q);I=mxUtils.button(mxResources.get("Templates", -null,"Templates"),function(){ca.style.display="";P.style.left="160px";U(0);P.scrollTop=0;P.innerHTML="";G=0;O!=S&&(S=O,Q=R,ea=X,ca.innerHTML="",A(),O=null)});K.push(I);q.appendChild(I);var L=function(a){ca.style.display="none";P.style.left="30px";U(a?-1:1);null==O&&(O=S);P.scrollTop=0;P.innerHTML="";J.spin(P);var b=function(a,b,c){G=0;J.stop();S=a;c=c||{};var d=0,f;for(f in c)d+=c[f].length;if(b)P.innerHTML=b;else if(0==a.length&&0==d)P.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams", -null,"No Diagrams Found"));else if(P.innerHTML="",0<d){ca.style.display="";P.style.left="160px";ca.innerHTML="";ea=0;Q={"draw.io":a};for(f in c)Q[f]=c[f];A()}else y()};a?p(V.value,b):m(b)};m&&(I=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){L()}),q.appendChild(I),K.push(I));if(p){I=document.createElement("span");I.style.marginLeft="10px";I.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");q.appendChild(I);var V=document.createElement("input");V.style.marginRight="10px"; -V.style.marginLeft="10px";V.style.width="220px";mxEvent.addListener(V,"keypress",function(a){13==a.keyCode&&L(!0)});q.appendChild(V);I=mxUtils.button(mxResources.get("search"),function(){L(!0)});I.className="geBtn";q.appendChild(I)}U(0)}var W=null,ga=null,fa=null,ba=null,Y=null,aa=null,P=document.createElement("div");P.style.border="1px solid #d3d3d3";P.style.position="absolute";P.style.left="160px";P.style.right="34px";B=(d?72:40)+(B?30:0);P.style.top=B+"px";P.style.bottom="68px";P.style.margin= -"6px 0 0 -1px";P.style.padding="6px";P.style.overflow="auto";var ca=document.createElement("div");ca.style.cssText="position:absolute;left:30px;width:128px;top:"+B+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";var Z=140,da=140,Q={},M={},ea=0,T=!0;Q.basic=[{title:"blankDiagram",select:!0}];var S=Q.basic;if(!c){var ha=function(){mxUtils.get(N,function(a){if(!ma){ma=!0;a=a.getXml().documentElement.firstChild;for(var b={};null!=a;){if("undefined"!==typeof a.getAttribute)if("clibs"== +d.setAttribute("title",b+" ("+f.length+")"),mxUtils.write(d,d.getAttribute("title")),null!=t&&(d.style.padding=t),ca.appendChild(d),null==a&&0<f.length&&(a=d,a.style.backgroundColor=k,S=f),function(b,c){mxEvent.addListener(d,"click",function(){a!=c&&(a.style.backgroundColor="",a=c,a.style.backgroundColor=k,P.scrollTop=0,P.innerHTML="",I=0,S=Q[b],O=null,x())})}(c,d);x()}d=null!=d?d:!0;e=null!=e?e:!1;k=null!=k?k:"#ebf2f9";l=null!=l?l:"dark"==uiTheme?"transparent":"#e6eff8";n=null!=n?n:"dark"==uiTheme? +"1px dotted rgb(235, 242, 249)":"1px solid #ccd9ea";f=null!=f?f:EditorUi.templateFile;var D=document.createElement("div");D.style.height="100%";var A=document.createElement("div");A.style.whiteSpace="nowrap";A.style.height="46px";d&&D.appendChild(A);var F=document.createElement("img");F.setAttribute("border","0");F.setAttribute("align","absmiddle");F.style.width="40px";F.style.height="40px";F.style.marginRight="10px";F.style.paddingBottom="4px";F.src=a.mode==App.MODE_GOOGLE?IMAGE_PATH+"/google-drive-logo.svg": +a.mode==App.MODE_DROPBOX?IMAGE_PATH+"/dropbox-logo.svg":a.mode==App.MODE_ONEDRIVE?IMAGE_PATH+"/onedrive-logo.svg":a.mode==App.MODE_GITHUB?IMAGE_PATH+"/github-logo.svg":a.mode==App.MODE_GITLAB?IMAGE_PATH+"/gitlab-logo.svg":a.mode==App.MODE_TRELLO?IMAGE_PATH+"/trello-logo.svg":a.mode==App.MODE_BROWSER?IMAGE_PATH+"/osa_database.png":IMAGE_PATH+"/osa_drive-harddisk.png";!c&&d&&A.appendChild(F);d&&mxUtils.write(A,(null==a.mode||a.mode==App.MODE_GOOGLE||a.mode==App.MODE_BROWSER?mxResources.get("diagramName"): +mxResources.get("filename"))+":");F=".drawio";a.mode==App.MODE_GOOGLE&&null!=a.drive?F=a.drive.extension:a.mode==App.MODE_DROPBOX&&null!=a.dropbox?F=a.dropbox.extension:a.mode==App.MODE_ONEDRIVE&&null!=a.oneDrive?F=a.oneDrive.extension:a.mode==App.MODE_GITHUB&&null!=a.gitHub?F=a.gitHub.extension:a.mode==App.MODE_GITLAB&&null!=a.gitLab?F=a.gitLab.extension:a.mode==App.MODE_TRELLO&&null!=a.trello&&(F=a.trello.extension);var G=document.createElement("input");G.setAttribute("value",a.defaultFilename+ +F);G.style.marginLeft="10px";G.style.width=c?"220px":"430px";this.init=function(){d&&(G.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?G.select():document.execCommand("selectAll",!1,null))};d&&(A.appendChild(G),null!=a.editor.fileExtensions&&(F=FilenameDialog.createTypeHint(a,G,a.editor.fileExtensions),F.style.marginTop="12px",A.appendChild(F)));var A=!1,I=0,J=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1, +hwaccel:!1,top:"40%",zIndex:2E9}),E=mxUtils.button(q||mxResources.get("create"),function(){E.setAttribute("disabled","disabled");C();E.removeAttribute("disabled")});E.className="geBtn gePrimaryBtn";if(m||p){var K=[],O=null,R=null,X=null,U=function(a){E.setAttribute("disabled","disabled");for(var b=0;b<K.length;b++)K[b].className=b==a?"geBtn gePrimaryBtn":"geBtn"},A=!0;q=document.createElement("div");q.style.whiteSpace="nowrap";q.style.height="30px";D.appendChild(q);F=mxUtils.button(mxResources.get("Templates", +null,"Templates"),function(){ca.style.display="";P.style.left="160px";U(0);P.scrollTop=0;P.innerHTML="";I=0;O!=S&&(S=O,Q=R,ea=X,ca.innerHTML="",B(),O=null)});K.push(F);q.appendChild(F);var L=function(a){ca.style.display="none";P.style.left="30px";U(a?-1:1);null==O&&(O=S);P.scrollTop=0;P.innerHTML="";J.spin(P);var b=function(a,b,c){I=0;J.stop();S=a;c=c||{};var d=0,f;for(f in c)d+=c[f].length;if(b)P.innerHTML=b;else if(0==a.length&&0==d)P.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams", +null,"No Diagrams Found"));else if(P.innerHTML="",0<d){ca.style.display="";P.style.left="160px";ca.innerHTML="";ea=0;Q={"draw.io":a};for(f in c)Q[f]=c[f];B()}else x()};a?p(V.value,b):m(b)};m&&(F=mxUtils.button(mxResources.get("Recent",null,"Recent"),function(){L()}),q.appendChild(F),K.push(F));if(p){F=document.createElement("span");F.style.marginLeft="10px";F.innerHTML=mxUtils.htmlEntities(mxResources.get("search")+":");q.appendChild(F);var V=document.createElement("input");V.style.marginRight="10px"; +V.style.marginLeft="10px";V.style.width="220px";mxEvent.addListener(V,"keypress",function(a){13==a.keyCode&&L(!0)});q.appendChild(V);F=mxUtils.button(mxResources.get("search"),function(){L(!0)});F.className="geBtn";q.appendChild(F)}U(0)}var W=null,ga=null,fa=null,ba=null,Y=null,aa=null,P=document.createElement("div");P.style.border="1px solid #d3d3d3";P.style.position="absolute";P.style.left="160px";P.style.right="34px";A=(d?72:40)+(A?30:0);P.style.top=A+"px";P.style.bottom="68px";P.style.margin= +"6px 0 0 -1px";P.style.padding="6px";P.style.overflow="auto";var ca=document.createElement("div");ca.style.cssText="position:absolute;left:30px;width:128px;top:"+A+"px;bottom:68px;margin-top:6px;overflow:auto;border:1px solid #d3d3d3;";var Z=140,da=140,Q={},M={},ea=0,T=!0;Q.basic=[{title:"blankDiagram",select:!0}];var S=Q.basic;if(!c){var ha=function(){mxUtils.get(N,function(a){if(!ma){ma=!0;a=a.getXml().documentElement.firstChild;for(var b={};null!=a;){if("undefined"!==typeof a.getAttribute)if("clibs"== a.nodeName){for(var c=a.getAttribute("name"),d=a.getElementsByTagName("add"),f=[],m=0;m<d.length;m++)f.push(encodeURIComponent(mxUtils.getTextContent(d[m])));null!=c&&0<f.length&&(b[c]=f.join(";"))}else c=a.getAttribute("url"),null!=c&&(d=a.getAttribute("section"),null==d&&(d=c.indexOf("/"),d=c.substring(0,d)),c=Q[d],null==c&&(c=[],Q[d]=c),d=a.getAttribute("clibs"),null!=b[d]&&(d=b[d]),c.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"), -preview:a.getAttribute("preview"),clibs:d}));a=a.nextSibling}J.stop();A()}})};C.appendChild(ca);C.appendChild(P);var ma=!1,N=f;/^https?:\/\//.test(N)&&!a.editor.isCorsEnabledForUrl(N)&&(N=PROXY_URL+"?url="+encodeURIComponent(N));J.spin(P);null!=z?z(function(a,b){M=a;X=ea=b;ha()},ha):ha();R=Q}mxEvent.addListener(F,"keypress",function(b){a.dialog.container.firstChild==C&&13==b.keyCode&&D()});f=document.createElement("div");f.style.marginTop=c?"4px":"16px";f.style.textAlign="right";f.style.position= +preview:a.getAttribute("preview"),clibs:d}));a=a.nextSibling}J.stop();B()}})};D.appendChild(ca);D.appendChild(P);var ma=!1,N=f;/^https?:\/\//.test(N)&&!a.editor.isCorsEnabledForUrl(N)&&(N=PROXY_URL+"?url="+encodeURIComponent(N));J.spin(P);null!=z?z(function(a,b){M=a;X=ea=b;ha()},ha):ha();R=Q}mxEvent.addListener(G,"keypress",function(b){a.dialog.container.firstChild==D&&13==b.keyCode&&C()});f=document.createElement("div");f.style.marginTop=c?"4px":"16px";f.style.textAlign="right";f.style.position= "absolute";f.style.left="40px";f.style.bottom="24px";f.style.right="40px";c||a.isOffline()||!d||null!=b||e||(z=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://support.draw.io/display/DO/Creating+and+Opening+Files")}),z.className="geBtn",f.appendChild(z));z=mxUtils.button(mxResources.get("cancel"),function(){null!=g&&g();a.hideDialog(!0)});z.className="geBtn";!a.editor.cancelFirst||e&&null==g||f.appendChild(z);c||"1"==urlParams.embed||e||(c=mxUtils.button(mxResources.get("fromTemplateUrl"), -function(){var b=new FilenameDialog(a,"",mxResources.get("create"),function(b){null!=b&&0<b.length&&(b=a.getUrl(window.location.pathname+"?mode="+a.mode+"&title="+encodeURIComponent(F.value)+"&create="+encodeURIComponent(b)),null==a.getCurrentFile()?window.location.href=b:window.openWindow(b))},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()}),c.className="geBtn",f.appendChild(c));Graph.fileSupport&&v&&(v=mxUtils.button(mxResources.get("import"),function(){if(null==a.newDlgFileInputElt){var b= -document.createElement("input");b.setAttribute("multiple","multiple");b.setAttribute("type","file");mxEvent.addListener(b,"change",function(c){a.openFiles(b.files,!0);b.value=""});b.style.display="none";document.body.appendChild(b);a.newDlgFileInputElt=b}a.newDlgFileInputElt.click()}),v.className="geBtn",f.appendChild(v));f.appendChild(E);a.editor.cancelFirst||null!=b||e&&null==g||f.appendChild(z);C.appendChild(f);this.container=C},CreateDialog=function(a,c,d,b,e,g,k,l,n,u,f,m,p,t,v,q,z){function y(b, -d,f,p){function e(){mxEvent.addListener(q,"click",function(){var b=f;if(k){var d=x.value,m=d.lastIndexOf(".");if(0>c.lastIndexOf(".")&&0>m){var b=null!=b?b:B.value,p="";b==App.MODE_GOOGLE?p=a.drive.extension:b==App.MODE_GITHUB?p=a.gitHub.extension:b==App.MODE_GITLAB?p=a.gitLab.extension:b==App.MODE_TRELLO?p=a.trello.extension:b==App.MODE_DROPBOX?p=a.dropbox.extension:b==App.MODE_ONEDRIVE?p=a.oneDrive.extension:b==App.MODE_DEVICE&&(p=".drawio");0<=m&&(d=d.substring(0,m));x.value=d+p}}D(f)})}var q= -document.createElement("a");q.style.overflow="hidden";var g=document.createElement("img");g.src=b;g.setAttribute("border","0");g.setAttribute("align","absmiddle");g.style.width="60px";g.style.height="60px";g.style.paddingBottom="6px";q.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";q.className="geBaseButton";q.style.position="relative";q.style.margin="4px";q.style.padding="8px 8px 10px 8px";q.style.whiteSpace="nowrap";q.appendChild(g);mxClient.IS_QUIRKS&&(q.style.cssFloat="left",q.style.zoom= -"1");q.style.color="gray";q.style.fontSize="11px";var t=document.createElement("div");q.appendChild(t);mxUtils.write(t,d);if(null!=p&&null==a[p]){g.style.visibility="hidden";mxUtils.setOpacity(t,10);var v=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});v.spin(q);var l=window.setTimeout(function(){null==a[p]&&(v.stop(),q.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(){null!= -a[p]&&(window.clearTimeout(l),mxUtils.setOpacity(t,100),g.style.visibility="",v.stop(),e())}))}else e();A.appendChild(q);++C==m&&(mxUtils.br(A),C=0)}function D(b){var c=x.value;if(null==b||null!=c&&0<c.length)z&&a.hideDialog(),d(c,b,x)}k=null!=k?k:!0;l=null!=l?l:!0;m=null!=m?m:4;z=null!=z?z:!0;g=document.createElement("div");g.style.whiteSpace="nowrap";null==b&&a.addLanguageMenu(g);var H=document.createElement("h2");mxUtils.write(H,e||mxResources.get("create"));H.style.marginTop="0px";H.style.marginBottom= -"24px";g.appendChild(H);mxUtils.write(g,mxResources.get("filename")+":");var x=document.createElement("input");x.setAttribute("value",c);x.style.width="280px";x.style.marginLeft="10px";x.style.marginBottom="20px";x.style.maxWidth="70%";this.init=function(){x.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?x.select():document.execCommand("selectAll",!1,null)};g.appendChild(x);null!=q&&g.appendChild(FilenameDialog.createTypeHint(a,x,q));null==p||null==t||"image/"!= -t.substring(0,6)||"image/svg"==t.substring(0,9)&&!mxClient.IS_SVG||(x.style.width="160px",e=document.createElement("img"),p=v?p:btoa(unescape(encodeURIComponent(p))),e.setAttribute("src","data:"+t+";base64,"+p),e.style.position="absolute",e.style.top="70px",e.style.right="100px",e.style.maxWidth="120px",e.style.maxHeight="80px",mxUtils.setPrefixedStyle(e.style,"transform","translate(50%,-50%)"),g.appendChild(e),n&&Editor.popupsAllowed&&(e.style.cursor="pointer",mxEvent.addGestureListeners(e,null, -null,function(){D("_blank")})));mxUtils.br(g);var A=document.createElement("div");A.style.textAlign="center";var C=0;A.style.marginTop="6px";g.appendChild(A);var B=document.createElement("select");B.style.marginLeft="10px";a.isOfflineApp()||a.isOffline()||("function"===typeof window.DriveClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(t,mxResources.get("googleDrive")),B.appendChild(t),y(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"), -App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_ONEDRIVE),mxUtils.write(t,mxResources.get("oneDrive")),B.appendChild(t),a.mode==App.MODE_ONEDRIVE&&t.setAttribute("selected","selected"),y(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive")),"function"===typeof window.DropboxClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_DROPBOX),mxUtils.write(t, -mxResources.get("dropbox")),B.appendChild(t),a.mode==App.MODE_DROPBOX&&t.setAttribute("selected","selected"),y(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox")),null!=a.gitHub&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_GITHUB),mxUtils.write(t,mxResources.get("github")),B.appendChild(t),y(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub")),null!=a.gitLab&&(t=document.createElement("option"),t.setAttribute("value", -App.MODE_GITLAB),mxUtils.write(t,mxResources.get("gitlab")),B.appendChild(t),y(IMAGE_PATH+"/gitlab-logo.svg",mxResources.get("gitlab"),App.MODE_GITLAB,"gitLab")),"function"===typeof window.TrelloClient&&(t=document.createElement("option"),t.setAttribute("value",App.MODE_TRELLO),mxUtils.write(t,mxResources.get("trello")),B.appendChild(t),y(IMAGE_PATH+"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));Editor.useLocalStorage&&"device"!=urlParams.storage&&null==a.getCurrentFile()|| -(t=document.createElement("option"),t.setAttribute("value",App.MODE_DEVICE),mxUtils.write(t,mxResources.get("device")),B.appendChild(t),a.mode!=App.MODE_DEVICE&&l||t.setAttribute("selected","selected"),f&&y(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE));l&&isLocalStorage&&"0"!=urlParams.browser&&(l=document.createElement("option"),l.setAttribute("value",App.MODE_BROWSER),mxUtils.write(l,mxResources.get("browser")),B.appendChild(l),a.mode==App.MODE_BROWSER&&l.setAttribute("selected", -"selected"),y(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER));l=document.createElement("div");l.style.marginTop="26px";l.style.textAlign="center";null!=u&&(f=mxUtils.button(mxResources.get("help"),function(){a.openLink(u)}),f.className="geBtn",l.appendChild(f));f=mxUtils.button(mxResources.get("cancel"),function(){null!=b?b():(a.fileLoaded(null),a.hideDialog(),window.close(),window.location.href=a.getUrl())});f.className="geBtn";a.editor.cancelFirst&&l.appendChild(f); -null==b&&(t=mxUtils.button(mxResources.get("decideLater"),function(){D(null)}),t.className="geBtn",l.appendChild(t));n&&Editor.popupsAllowed&&(n=mxUtils.button(mxResources.get("openInNewWindow"),function(){D("_blank")}),n.className="geBtn",l.appendChild(n));CreateDialog.showDownloadButton&&(n=mxUtils.button(mxResources.get("download"),function(){D("download")}),n.className="geBtn",l.appendChild(n));a.editor.cancelFirst||l.appendChild(f);mxEvent.addListener(x,"keypress",function(b){13==b.keyCode?D(App.MODE_DEVICE): +function(){var b=new FilenameDialog(a,"",mxResources.get("create"),function(b){null!=b&&0<b.length&&(b=a.getUrl(window.location.pathname+"?mode="+a.mode+"&title="+encodeURIComponent(G.value)+"&create="+encodeURIComponent(b)),null==a.getCurrentFile()?window.location.href=b:window.openWindow(b))},mxResources.get("url"));a.showDialog(b.container,300,80,!0,!0);b.init()}),c.className="geBtn",f.appendChild(c));Graph.fileSupport&&v&&(v=mxUtils.button(mxResources.get("import"),function(){if(null==a.newDlgFileInputElt){var b= +document.createElement("input");b.setAttribute("multiple","multiple");b.setAttribute("type","file");mxEvent.addListener(b,"change",function(c){a.openFiles(b.files,!0);b.value=""});b.style.display="none";document.body.appendChild(b);a.newDlgFileInputElt=b}a.newDlgFileInputElt.click()}),v.className="geBtn",f.appendChild(v));f.appendChild(E);a.editor.cancelFirst||null!=b||e&&null==g||f.appendChild(z);D.appendChild(f);this.container=D},CreateDialog=function(a,c,d,b,e,g,k,l,n,t,f,m,p,u,v,q,z){function x(b, +d,f,p){function q(){mxEvent.addListener(e,"click",function(){var b=f;if(k){var d=y.value,m=d.lastIndexOf(".");if(0>c.lastIndexOf(".")&&0>m){var b=null!=b?b:A.value,p="";b==App.MODE_GOOGLE?p=a.drive.extension:b==App.MODE_GITHUB?p=a.gitHub.extension:b==App.MODE_GITLAB?p=a.gitLab.extension:b==App.MODE_TRELLO?p=a.trello.extension:b==App.MODE_DROPBOX?p=a.dropbox.extension:b==App.MODE_ONEDRIVE?p=a.oneDrive.extension:b==App.MODE_DEVICE&&(p=".drawio");0<=m&&(d=d.substring(0,m));y.value=d+p}}C(f)})}var e= +document.createElement("a");e.style.overflow="hidden";var g=document.createElement("img");g.src=b;g.setAttribute("border","0");g.setAttribute("align","absmiddle");g.style.width="60px";g.style.height="60px";g.style.paddingBottom="6px";e.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";e.className="geBaseButton";e.style.position="relative";e.style.margin="4px";e.style.padding="8px 8px 10px 8px";e.style.whiteSpace="nowrap";e.appendChild(g);mxClient.IS_QUIRKS&&(e.style.cssFloat="left",e.style.zoom= +"1");e.style.color="gray";e.style.fontSize="11px";var u=document.createElement("div");e.appendChild(u);mxUtils.write(u,d);if(null!=p&&null==a[p]){g.style.visibility="hidden";mxUtils.setOpacity(u,10);var v=new Spinner({lines:12,length:12,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"40%",zIndex:2E9});v.spin(e);var l=window.setTimeout(function(){null==a[p]&&(v.stop(),e.style.display="none")},3E4);a.addListener("clientLoaded",mxUtils.bind(this,function(){null!= +a[p]&&(window.clearTimeout(l),mxUtils.setOpacity(u,100),g.style.visibility="",v.stop(),q())}))}else q();B.appendChild(e);++D==m&&(mxUtils.br(B),D=0)}function C(b){var c=y.value;if(null==b||null!=c&&0<c.length)z&&a.hideDialog(),d(c,b,y)}k=null!=k?k:!0;l=null!=l?l:!0;m=null!=m?m:4;z=null!=z?z:!0;g=document.createElement("div");g.style.whiteSpace="nowrap";null==b&&a.addLanguageMenu(g);var H=document.createElement("h2");mxUtils.write(H,e||mxResources.get("create"));H.style.marginTop="0px";H.style.marginBottom= +"24px";g.appendChild(H);mxUtils.write(g,mxResources.get("filename")+":");var y=document.createElement("input");y.setAttribute("value",c);y.style.width="280px";y.style.marginLeft="10px";y.style.marginBottom="20px";y.style.maxWidth="70%";this.init=function(){y.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?y.select():document.execCommand("selectAll",!1,null)};g.appendChild(y);null!=q&&g.appendChild(FilenameDialog.createTypeHint(a,y,q));null==p||null==u||"image/"!= +u.substring(0,6)||"image/svg"==u.substring(0,9)&&!mxClient.IS_SVG||(y.style.width="160px",e=document.createElement("img"),p=v?p:btoa(unescape(encodeURIComponent(p))),e.setAttribute("src","data:"+u+";base64,"+p),e.style.position="absolute",e.style.top="70px",e.style.right="100px",e.style.maxWidth="120px",e.style.maxHeight="80px",mxUtils.setPrefixedStyle(e.style,"transform","translate(50%,-50%)"),g.appendChild(e),n&&Editor.popupsAllowed&&(e.style.cursor="pointer",mxEvent.addGestureListeners(e,null, +null,function(){C("_blank")})));mxUtils.br(g);var B=document.createElement("div");B.style.textAlign="center";var D=0;B.style.marginTop="6px";g.appendChild(B);var A=document.createElement("select");A.style.marginLeft="10px";a.isOfflineApp()||a.isOffline()||("function"===typeof window.DriveClient&&(u=document.createElement("option"),u.setAttribute("value",App.MODE_GOOGLE),mxUtils.write(u,mxResources.get("googleDrive")),A.appendChild(u),x(IMAGE_PATH+"/google-drive-logo.svg",mxResources.get("googleDrive"), +App.MODE_GOOGLE,"drive")),"function"===typeof window.OneDriveClient&&(u=document.createElement("option"),u.setAttribute("value",App.MODE_ONEDRIVE),mxUtils.write(u,mxResources.get("oneDrive")),A.appendChild(u),a.mode==App.MODE_ONEDRIVE&&u.setAttribute("selected","selected"),x(IMAGE_PATH+"/onedrive-logo.svg",mxResources.get("oneDrive"),App.MODE_ONEDRIVE,"oneDrive")),"function"===typeof window.DropboxClient&&(u=document.createElement("option"),u.setAttribute("value",App.MODE_DROPBOX),mxUtils.write(u, +mxResources.get("dropbox")),A.appendChild(u),a.mode==App.MODE_DROPBOX&&u.setAttribute("selected","selected"),x(IMAGE_PATH+"/dropbox-logo.svg",mxResources.get("dropbox"),App.MODE_DROPBOX,"dropbox")),null!=a.gitHub&&(u=document.createElement("option"),u.setAttribute("value",App.MODE_GITHUB),mxUtils.write(u,mxResources.get("github")),A.appendChild(u),x(IMAGE_PATH+"/github-logo.svg",mxResources.get("github"),App.MODE_GITHUB,"gitHub")),null!=a.gitLab&&(u=document.createElement("option"),u.setAttribute("value", +App.MODE_GITLAB),mxUtils.write(u,mxResources.get("gitlab")),A.appendChild(u),x(IMAGE_PATH+"/gitlab-logo.svg",mxResources.get("gitlab"),App.MODE_GITLAB,"gitLab")),"function"===typeof window.TrelloClient&&(u=document.createElement("option"),u.setAttribute("value",App.MODE_TRELLO),mxUtils.write(u,mxResources.get("trello")),A.appendChild(u),x(IMAGE_PATH+"/trello-logo.svg",mxResources.get("trello"),App.MODE_TRELLO,"trello")));Editor.useLocalStorage&&"device"!=urlParams.storage&&null==a.getCurrentFile()|| +(u=document.createElement("option"),u.setAttribute("value",App.MODE_DEVICE),mxUtils.write(u,mxResources.get("device")),A.appendChild(u),a.mode!=App.MODE_DEVICE&&l||u.setAttribute("selected","selected"),f&&x(IMAGE_PATH+"/osa_drive-harddisk.png",mxResources.get("device"),App.MODE_DEVICE));l&&isLocalStorage&&"0"!=urlParams.browser&&(l=document.createElement("option"),l.setAttribute("value",App.MODE_BROWSER),mxUtils.write(l,mxResources.get("browser")),A.appendChild(l),a.mode==App.MODE_BROWSER&&l.setAttribute("selected", +"selected"),x(IMAGE_PATH+"/osa_database.png",mxResources.get("browser"),App.MODE_BROWSER));l=document.createElement("div");l.style.marginTop="26px";l.style.textAlign="center";null!=t&&(f=mxUtils.button(mxResources.get("help"),function(){a.openLink(t)}),f.className="geBtn",l.appendChild(f));f=mxUtils.button(mxResources.get("cancel"),function(){null!=b?b():(a.fileLoaded(null),a.hideDialog(),window.close(),window.location.href=a.getUrl())});f.className="geBtn";a.editor.cancelFirst&&l.appendChild(f); +null==b&&(u=mxUtils.button(mxResources.get("decideLater"),function(){C(null)}),u.className="geBtn",l.appendChild(u));n&&Editor.popupsAllowed&&(n=mxUtils.button(mxResources.get("openInNewWindow"),function(){C("_blank")}),n.className="geBtn",l.appendChild(n));CreateDialog.showDownloadButton&&(n=mxUtils.button(mxResources.get("download"),function(){C("download")}),n.className="geBtn",l.appendChild(n));a.editor.cancelFirst||l.appendChild(f);mxEvent.addListener(y,"keypress",function(b){13==b.keyCode?C(App.MODE_DEVICE): 27==b.keyCode&&(a.fileLoaded(null),a.hideDialog(),window.close())});g.appendChild(l);this.container=g};CreateDialog.showDownloadButton=!0; var PopupDialog=function(a,c,d,b,e){e=null!=e?e:!0;var g=document.createElement("div");g.style.textAlign="left";mxUtils.write(g,mxResources.get("fileOpenLocation"));mxUtils.br(g);mxUtils.br(g);var k=mxUtils.button(mxResources.get("openInThisWindow"),function(){e&&a.hideDialog();null!=b&&b()});k.className="geBtn";k.style.marginBottom="8px";k.style.width="280px";g.appendChild(k);mxUtils.br(g);var l=mxUtils.button(mxResources.get("openInNewWindow"),function(){e&&a.hideDialog();null!=d&&d();a.openLink(c, null,!0)});l.className="geBtn gePrimaryBtn";l.style.width=k.style.width;g.appendChild(l);mxUtils.br(g);mxUtils.br(g);mxUtils.write(g,mxResources.get("allowPopups"));this.container=g},ImageDialog=function(a,c,d,b,e,g){g=null!=g?g:!0;var k=a.editor.graph,l=document.createElement("div");mxUtils.write(l,c);c=document.createElement("div");c.className="geTitle";c.style.backgroundColor="transparent";c.style.borderColor="transparent";c.style.whiteSpace="nowrap";c.style.textOverflow="clip";c.style.cursor= "default";mxClient.IS_VML||(c.style.paddingRight="20px");var n=document.createElement("input");n.setAttribute("value",d);n.setAttribute("type","text");n.setAttribute("spellcheck","false");n.setAttribute("autocorrect","off");n.setAttribute("autocomplete","off");n.setAttribute("autocapitalize","off");n.style.marginTop="6px";n.style.width=(Graph.fileSupport?420:340)+(mxClient.IS_QUIRKS?20:-20)+"px";n.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";n.style.backgroundRepeat="no-repeat"; n.style.backgroundPosition="100% 50%";n.style.paddingRight="14px";d=document.createElement("div");d.setAttribute("title",mxResources.get("reset"));d.style.position="relative";d.style.left="-16px";d.style.width="12px";d.style.height="14px";d.style.cursor="pointer";d.style.display=mxClient.IS_VML?"inline":"inline-block";d.style.top=(mxClient.IS_VML?0:3)+"px";d.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(d,"click",function(){n.value="";n.focus()});c.appendChild(n);c.appendChild(d); -l.appendChild(c);var u=function(c,d,f,m){var p="data:"==c.substring(0,5);!a.isOffline()||p&&"undefined"===typeof chrome?0<c.length&&a.spinner.spin(document.body,mxResources.get("inserting"))?a.loadImage(c,function(p){a.spinner.stop();a.hideDialog();var e=!1===m?1:null!=d&&null!=f?Math.max(d/p.width,f/p.height):Math.min(1,Math.min(520/p.width,520/p.height));g&&(c=a.convertDataUri(c));b(c,Math.round(Number(p.width)*e),Math.round(Number(p.height)*e))},function(){a.spinner.stop();b(null);a.showError(mxResources.get("error"), -mxResources.get("fileNotFound"),mxResources.get("ok"))}):(a.hideDialog(),b(c)):(c=a.convertDataUri(c),d=null==d?120:d,f=null==f?100:f,a.hideDialog(),b(c,d,f))},f=function(c,d){if(null!=c){var f=e?null:k.getModel().getGeometry(k.getSelectionCell());null!=f?u(c,f.width,f.height,d):u(c,null,null,d)}else a.hideDialog(),b(null)};this.init=function(){n.focus();if(Graph.fileSupport){n.setAttribute("placeholder",mxResources.get("dragImagesHere"));var b=l.parentNode,c=null;mxEvent.addListener(b,"dragleave", +l.appendChild(c);var t=function(c,d,f,m){var p="data:"==c.substring(0,5);!a.isOffline()||p&&"undefined"===typeof chrome?0<c.length&&a.spinner.spin(document.body,mxResources.get("inserting"))?a.loadImage(c,function(p){a.spinner.stop();a.hideDialog();var e=!1===m?1:null!=d&&null!=f?Math.max(d/p.width,f/p.height):Math.min(1,Math.min(520/p.width,520/p.height));g&&(c=a.convertDataUri(c));b(c,Math.round(Number(p.width)*e),Math.round(Number(p.height)*e))},function(){a.spinner.stop();b(null);a.showError(mxResources.get("error"), +mxResources.get("fileNotFound"),mxResources.get("ok"))}):(a.hideDialog(),b(c)):(c=a.convertDataUri(c),d=null==d?120:d,f=null==f?100:f,a.hideDialog(),b(c,d,f))},f=function(c,d){if(null!=c){var f=e?null:k.getModel().getGeometry(k.getSelectionCell());null!=f?t(c,f.width,f.height,d):t(c,null,null,d)}else a.hideDialog(),b(null)};this.init=function(){n.focus();if(Graph.fileSupport){n.setAttribute("placeholder",mxResources.get("dragImagesHere"));var b=l.parentNode,c=null;mxEvent.addListener(b,"dragleave", function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(d){null==c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=a.highlightElement(b));d.stopPropagation();d.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(b){null!=c&&(c.parentNode.removeChild(c),c=null);if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,function(a,b,c,d,m,p,e,g){f(a, g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()},!mxEvent.isControlDown(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var d=b.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)($|\?)/i.test(d)&&f(decodeURIComponent(d))}b.stopPropagation();b.preventDefault()}),!1)}};d=document.createElement("div");d.style.marginTop=mxClient.IS_QUIRKS?"22px":"14px";d.style.textAlign="center";c=mxUtils.button(mxResources.get("cancel"), function(){a.spinner.stop();a.hideDialog()});c.className="geBtn";a.editor.cancelFirst&&d.appendChild(c);ImageDialog.filePicked=function(a){a.action==google.picker.Action.PICKED&&null!=a.docs[0].thumbnails&&(a=a.docs[0].thumbnails[a.docs[0].thumbnails.length-1],null!=a&&(n.value=a.url));n.focus()};if(Graph.fileSupport){if(null==a.imgDlgFileInputElt){var m=document.createElement("input");m.setAttribute("multiple","multiple");m.setAttribute("type","file");mxEvent.addListener(m,"change",function(b){null!= @@ -8356,11 +8356,11 @@ a.imageSearchPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build( a.photoPicker=b.setCallback(function(a){ImageDialog.filePicked(a)}).build()}a.photoPicker.setVisible(!0)}))}),p.className="geBtn",d.appendChild(p)));mxEvent.addListener(n,"keypress",function(a){13==a.keyCode&&f(n.value)});p=mxUtils.button(mxResources.get("apply"),function(){f(n.value)});p.className="geBtn gePrimaryBtn";d.appendChild(p);a.editor.cancelFirst||d.appendChild(c);Graph.fileSupport&&(d.style.marginTop="120px",l.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",l.style.backgroundPosition= "center 65%",l.style.backgroundRepeat="no-repeat",c=document.createElement("div"),c.style.position="absolute",c.style.width="420px",c.style.top="58%",c.style.textAlign="center",c.style.fontSize="18px",c.style.color="#a0c3ff",mxUtils.write(c,mxResources.get("dragImagesHere")),l.appendChild(c));l.appendChild(d);this.container=l},LinkDialog=function(a,c,d,b,e){function g(a,b,c){c=mxUtils.button("",c);c.className="geBtn";c.setAttribute("title",b);b=document.createElement("img");b.style.height="26px"; b.style.width="26px";b.setAttribute("src",a);c.style.minWidth="42px";c.style.verticalAlign="middle";c.appendChild(b);z.appendChild(c)}var k=document.createElement("div");mxUtils.write(k,mxResources.get("editLink")+":");var l=document.createElement("div");l.className="geTitle";l.style.backgroundColor="transparent";l.style.borderColor="transparent";l.style.whiteSpace="nowrap";l.style.textOverflow="clip";l.style.cursor="default";mxClient.IS_VML||(l.style.paddingRight="20px");var n=document.createElement("input"); -n.setAttribute("placeholder",mxResources.get("dragUrlsHere"));n.setAttribute("type","text");n.style.marginTop="6px";n.style.width="100%";n.style.boxSizing="border-box";n.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";n.style.backgroundRepeat="no-repeat";n.style.backgroundPosition="100% 50%";n.style.paddingRight="14px";var u=document.createElement("div");u.setAttribute("title",mxResources.get("reset"));u.style.position="relative";u.style.left="-16px";u.style.width="12px";u.style.height= -"14px";u.style.cursor="pointer";u.style.display=mxClient.IS_VML?"inline":"inline-block";u.style.top=(mxClient.IS_VML?0:3)+"px";u.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(u,"click",function(){n.value="";n.focus()});var f=document.createElement("input");f.style.cssText="margin-right:8px;margin-bottom:8px;";f.setAttribute("value","url");f.setAttribute("type","radio");f.setAttribute("name","current-linkdialog");var m=document.createElement("input");m.style.cssText="margin-right:8px;margin-bottom:8px;"; -m.setAttribute("value","url");m.setAttribute("type","radio");m.setAttribute("name","current-linkdialog");var p=document.createElement("select");p.style.width="100%";if(e&&null!=a.pages){null!=c&&"data:page/id,"==c.substring(0,13)?(m.setAttribute("checked","checked"),m.defaultChecked=!0):(n.setAttribute("value",c),f.setAttribute("checked","checked"),f.defaultChecked=!0);l.appendChild(f);l.appendChild(n);l.appendChild(u);mxUtils.br(l);l.appendChild(m);e=!1;for(u=0;u<a.pages.length;u++){var t=document.createElement("option"); -mxUtils.write(t,a.pages[u].getName()||mxResources.get("pageWithNumber",[u+1]));t.setAttribute("value","data:page/id,"+a.pages[u].getId());c==t.getAttribute("value")&&(t.setAttribute("selected","selected"),e=!0);p.appendChild(t)}if(!e&&m.checked){var v=document.createElement("option");mxUtils.write(v,mxResources.get("pageNotFound"));v.setAttribute("disabled","disabled");v.setAttribute("selected","selected");v.setAttribute("value","pageNotFound");p.appendChild(v);mxEvent.addListener(p,"change",function(){null== -v.parentNode||v.selected||v.parentNode.removeChild(v)})}l.appendChild(p)}else n.setAttribute("value",c),l.appendChild(n),l.appendChild(u);k.appendChild(l);var q=mxUtils.button(d,function(){a.hideDialog();b(m.checked?"pageNotFound"!==p.value?p.value:c:n.value,LinkDialog.selectedDocs)});q.style.verticalAlign="middle";q.className="geBtn gePrimaryBtn";this.init=function(){m.checked?p.focus():(n.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll", +n.setAttribute("placeholder",mxResources.get("dragUrlsHere"));n.setAttribute("type","text");n.style.marginTop="6px";n.style.width="100%";n.style.boxSizing="border-box";n.style.backgroundImage="url('"+Dialog.prototype.clearImage+"')";n.style.backgroundRepeat="no-repeat";n.style.backgroundPosition="100% 50%";n.style.paddingRight="14px";var t=document.createElement("div");t.setAttribute("title",mxResources.get("reset"));t.style.position="relative";t.style.left="-16px";t.style.width="12px";t.style.height= +"14px";t.style.cursor="pointer";t.style.display=mxClient.IS_VML?"inline":"inline-block";t.style.top=(mxClient.IS_VML?0:3)+"px";t.style.background="url('"+a.editor.transparentImage+"')";mxEvent.addListener(t,"click",function(){n.value="";n.focus()});var f=document.createElement("input");f.style.cssText="margin-right:8px;margin-bottom:8px;";f.setAttribute("value","url");f.setAttribute("type","radio");f.setAttribute("name","current-linkdialog");var m=document.createElement("input");m.style.cssText="margin-right:8px;margin-bottom:8px;"; +m.setAttribute("value","url");m.setAttribute("type","radio");m.setAttribute("name","current-linkdialog");var p=document.createElement("select");p.style.width="100%";if(e&&null!=a.pages){null!=c&&"data:page/id,"==c.substring(0,13)?(m.setAttribute("checked","checked"),m.defaultChecked=!0):(n.setAttribute("value",c),f.setAttribute("checked","checked"),f.defaultChecked=!0);l.appendChild(f);l.appendChild(n);l.appendChild(t);mxUtils.br(l);l.appendChild(m);e=!1;for(t=0;t<a.pages.length;t++){var u=document.createElement("option"); +mxUtils.write(u,a.pages[t].getName()||mxResources.get("pageWithNumber",[t+1]));u.setAttribute("value","data:page/id,"+a.pages[t].getId());c==u.getAttribute("value")&&(u.setAttribute("selected","selected"),e=!0);p.appendChild(u)}if(!e&&m.checked){var v=document.createElement("option");mxUtils.write(v,mxResources.get("pageNotFound"));v.setAttribute("disabled","disabled");v.setAttribute("selected","selected");v.setAttribute("value","pageNotFound");p.appendChild(v);mxEvent.addListener(p,"change",function(){null== +v.parentNode||v.selected||v.parentNode.removeChild(v)})}l.appendChild(p)}else n.setAttribute("value",c),l.appendChild(n),l.appendChild(t);k.appendChild(l);var q=mxUtils.button(d,function(){a.hideDialog();b(m.checked?"pageNotFound"!==p.value?p.value:c:n.value,LinkDialog.selectedDocs)});q.style.verticalAlign="middle";q.className="geBtn gePrimaryBtn";this.init=function(){m.checked?p.focus():(n.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll", !1,null));mxEvent.addListener(p,"focus",function(){f.removeAttribute("checked");m.setAttribute("checked","checked");m.checked=!0});mxEvent.addListener(n,"focus",function(){m.removeAttribute("checked");f.setAttribute("checked","checked");f.checked=!0});if(Graph.fileSupport){var b=k.parentNode,c=null;mxEvent.addListener(b,"dragleave",function(a){null!=c&&(c.parentNode.removeChild(c),c=null);a.stopPropagation();a.preventDefault()});mxEvent.addListener(b,"dragover",mxUtils.bind(this,function(d){null== c&&(!mxClient.IS_IE||10<document.documentMode)&&(c=a.highlightElement(b));d.stopPropagation();d.preventDefault()}));mxEvent.addListener(b,"drop",mxUtils.bind(this,function(a){null!=c&&(c.parentNode.removeChild(c),c=null);0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")&&(n.value=decodeURIComponent(a.dataTransfer.getData("text/uri-list")),f.setAttribute("checked","checked"),f.checked=!0,q.click());a.stopPropagation();a.preventDefault()}),!1)}};var z=document.createElement("div");z.style.marginTop= "20px";z.style.textAlign="center";d=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/solution/articles/16000080137")});d.style.verticalAlign="middle";d.className="geBtn";z.appendChild(d);a.isOffline()&&!mxClient.IS_CHROMEAPP&&(d.style.display="none");d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});d.style.verticalAlign="middle";d.className="geBtn";a.editor.cancelFirst&&z.appendChild(d);LinkDialog.selectedDocs=null;LinkDialog.filePicked=function(a){if(a.action== @@ -8378,40 +8378,40 @@ mxEvent.addListener(b,"change",function(){0<b.value.length&&0<g.test(b.value)?e. "14px";d.appendChild(k);var l=document.createElement("span");mxUtils.write(l," "+mxResources.get("includeCopyOfMyDiagram"));d.appendChild(l);mxEvent.addListener(l,"click",function(a){k.checked=!k.checked;mxEvent.consume(a)});c.appendChild(d);d=document.createElement("div");mxUtils.write(d,mxResources.get("feedback"));c.appendChild(d);var n=document.createElement("textarea");n.style.resize="none";n.style.width="600px";n.style.height="140px";n.style.marginTop="6px";n.setAttribute("placeholder",mxResources.get("comments")); c.appendChild(n);d=document.createElement("div");d.style.marginTop="26px";d.style.textAlign="right";l=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});l.className="geBtn";a.editor.cancelFirst?(d.appendChild(l),d.appendChild(e)):(d.appendChild(e),d.appendChild(l));c.appendChild(d);this.container=c};FeedbackDialog.maxAttachmentSize=1E6; var RevisionDialog=function(a,c,d){var b=document.createElement("div"),e=document.createElement("h3");e.style.marginTop="0px";mxUtils.write(e,mxResources.get("revisionHistory"));b.appendChild(e);var g=document.createElement("div");g.style.position="absolute";g.style.overflow="auto";g.style.width="170px";g.style.height="378px";b.appendChild(g);var k=document.createElement("div");k.style.position="absolute";k.style.border="1px solid lightGray";k.style.left="199px";k.style.width="470px";k.style.height= -"376px";k.style.overflow="hidden";mxEvent.disableContextMenu(k);b.appendChild(k);var l=new Graph(k);l.setTooltips(!1);l.setEnabled(!1);l.setPanning(!0);l.panningHandler.ignoreCell=!0;l.panningHandler.useLeftButtonForPanning=!0;l.minFitScale=null;l.maxFitScale=null;l.centerZoom=!0;var n=0,u=null,f=0,m=l.getGlobalVariable;l.getGlobalVariable=function(a){return"page"==a&&null!=u&&null!=u[f]?u[f].getAttribute("name"):"pagenumber"==a?f+1:"pagecount"==a?null!=u?u.length:1:m.apply(this,arguments)};l.getLinkForCell= -function(){return null};Editor.MathJaxRender&&l.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,c){a.editor.graph.mathEnabled&&Editor.MathJaxRender(l.container)}));var p=new Spinner({lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:"#000",speed:1.4,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"}),t=a.getCurrentFile(),v=null,q=null,z=null,y=null,D=mxUtils.button("",function(){null!=z&&l.zoomIn()});D.className="geSprite geSprite-zoomin"; -D.setAttribute("title",mxResources.get("zoomIn"));D.style.outline="none";D.style.border="none";D.style.margin="2px";D.setAttribute("disabled","disabled");mxUtils.setOpacity(D,20);var H=mxUtils.button("",function(){null!=z&&l.zoomOut()});H.className="geSprite geSprite-zoomout";H.setAttribute("title",mxResources.get("zoomOut"));H.style.outline="none";H.style.border="none";H.style.margin="2px";H.setAttribute("disabled","disabled");mxUtils.setOpacity(H,20);var x=mxUtils.button("",function(){null!=z&& -(l.maxFitScale=8,l.fit(8),l.center())});x.className="geSprite geSprite-fit";x.setAttribute("title",mxResources.get("fit"));x.style.outline="none";x.style.border="none";x.style.margin="2px";x.setAttribute("disabled","disabled");mxUtils.setOpacity(x,20);var A=mxUtils.button("",function(){null!=z&&(l.zoomActual(),l.center())});A.className="geSprite geSprite-actualsize";A.setAttribute("title",mxResources.get("actualSize"));A.style.outline="none";A.style.border="none";A.style.margin="2px";A.setAttribute("disabled", -"disabled");mxUtils.setOpacity(A,20);var C=document.createElement("div");C.style.position="absolute";C.style.textAlign="right";C.style.color="gray";C.style.marginTop="10px";C.style.backgroundColor="transparent";C.style.top="440px";C.style.right="32px";C.style.maxWidth="380px";C.style.cursor="default";var B=mxUtils.button(mxResources.get("download"),function(){if(null!=z){var b=mxUtils.getXml(z.documentElement),c=a.getBaseFilename()+".drawio";a.isLocalFileSave()?a.saveLocalFile(b,c,"text/xml"):(b= -"undefined"===typeof pako?"&xml="+encodeURIComponent(b):"&data="+encodeURIComponent(Graph.compress(b)),(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(c)+"&format=xml"+b)).simulate(document,"_blank"))}});B.className="geBtn";B.setAttribute("disabled","disabled");var I=mxUtils.button(mxResources.get("restore"),function(){null!=z&&null!=y&&a.confirm(mxResources.get("areYouSure"),function(){null!=d?d(y):a.spinner.spin(document.body,mxResources.get("restoring"))&&t.save(!0,function(b){a.spinner.stop(); -a.replaceFileData(y);a.hideDialog()},function(b){a.spinner.stop();a.editor.setStatus("");a.handleError(b,null!=b?mxResources.get("errorSavingFile"):null)})})});I.className="geBtn";I.setAttribute("disabled","disabled");var F=document.createElement("select");F.setAttribute("disabled","disabled");F.style.maxWidth="80px";F.style.position="relative";F.style.top="-2px";F.style.verticalAlign="bottom";F.style.marginRight="6px";F.style.display="none";var G=null;mxEvent.addListener(F,"change",function(a){null!= -G&&(G(a),mxEvent.consume(a))});var J=mxUtils.button(mxResources.get("edit"),function(){null!=z&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(z.documentElement)),a.openLink(a.getUrl(),null,!0))});J.className="geBtn";J.setAttribute("disabled","disabled");null!=d&&(J.style.display="none");var E=mxUtils.button(mxResources.get("show"),function(){null!=q&&a.openLink(q.getUrl(F.selectedIndex))});E.className="geBtn gePrimaryBtn";E.setAttribute("disabled", -"disabled");null!=d&&(E.style.display="none",I.className="geBtn gePrimaryBtn");e=document.createElement("div");e.style.position="absolute";e.style.top="482px";e.style.width="640px";e.style.textAlign="right";var K=document.createElement("div");K.className="geToolbarContainer";K.style.backgroundColor="transparent";K.style.padding="2px";K.style.border="none";K.style.left="199px";K.style.top="442px";var O=null;if(null!=c&&0<c.length){k.style.cursor="move";var R=document.createElement("table");R.style.border= +"376px";k.style.overflow="hidden";mxEvent.disableContextMenu(k);b.appendChild(k);var l=new Graph(k);l.setTooltips(!1);l.setEnabled(!1);l.setPanning(!0);l.panningHandler.ignoreCell=!0;l.panningHandler.useLeftButtonForPanning=!0;l.minFitScale=null;l.maxFitScale=null;l.centerZoom=!0;var n=0,t=null,f=0,m=l.getGlobalVariable;l.getGlobalVariable=function(a){return"page"==a&&null!=t&&null!=t[f]?t[f].getAttribute("name"):"pagenumber"==a?f+1:"pagecount"==a?null!=t?t.length:1:m.apply(this,arguments)};l.getLinkForCell= +function(){return null};Editor.MathJaxRender&&l.addListener(mxEvent.SIZE,mxUtils.bind(this,function(b,c){a.editor.graph.mathEnabled&&Editor.MathJaxRender(l.container)}));var p=new Spinner({lines:11,length:15,width:6,radius:10,corners:1,rotate:0,direction:1,color:"#000",speed:1.4,trail:60,shadow:!1,hwaccel:!1,className:"spinner",zIndex:2E9,top:"50%",left:"50%"}),u=a.getCurrentFile(),v=null,q=null,z=null,x=null,C=mxUtils.button("",function(){null!=z&&l.zoomIn()});C.className="geSprite geSprite-zoomin"; +C.setAttribute("title",mxResources.get("zoomIn"));C.style.outline="none";C.style.border="none";C.style.margin="2px";C.setAttribute("disabled","disabled");mxUtils.setOpacity(C,20);var H=mxUtils.button("",function(){null!=z&&l.zoomOut()});H.className="geSprite geSprite-zoomout";H.setAttribute("title",mxResources.get("zoomOut"));H.style.outline="none";H.style.border="none";H.style.margin="2px";H.setAttribute("disabled","disabled");mxUtils.setOpacity(H,20);var y=mxUtils.button("",function(){null!=z&& +(l.maxFitScale=8,l.fit(8),l.center())});y.className="geSprite geSprite-fit";y.setAttribute("title",mxResources.get("fit"));y.style.outline="none";y.style.border="none";y.style.margin="2px";y.setAttribute("disabled","disabled");mxUtils.setOpacity(y,20);var B=mxUtils.button("",function(){null!=z&&(l.zoomActual(),l.center())});B.className="geSprite geSprite-actualsize";B.setAttribute("title",mxResources.get("actualSize"));B.style.outline="none";B.style.border="none";B.style.margin="2px";B.setAttribute("disabled", +"disabled");mxUtils.setOpacity(B,20);var D=document.createElement("div");D.style.position="absolute";D.style.textAlign="right";D.style.color="gray";D.style.marginTop="10px";D.style.backgroundColor="transparent";D.style.top="440px";D.style.right="32px";D.style.maxWidth="380px";D.style.cursor="default";var A=mxUtils.button(mxResources.get("download"),function(){if(null!=z){var b=mxUtils.getXml(z.documentElement),c=a.getBaseFilename()+".drawio";a.isLocalFileSave()?a.saveLocalFile(b,c,"text/xml"):(b= +"undefined"===typeof pako?"&xml="+encodeURIComponent(b):"&data="+encodeURIComponent(Graph.compress(b)),(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(c)+"&format=xml"+b)).simulate(document,"_blank"))}});A.className="geBtn";A.setAttribute("disabled","disabled");var F=mxUtils.button(mxResources.get("restore"),function(){null!=z&&null!=x&&a.confirm(mxResources.get("areYouSure"),function(){null!=d?d(x):a.spinner.spin(document.body,mxResources.get("restoring"))&&u.save(!0,function(b){a.spinner.stop(); +a.replaceFileData(x);a.hideDialog()},function(b){a.spinner.stop();a.editor.setStatus("");a.handleError(b,null!=b?mxResources.get("errorSavingFile"):null)})})});F.className="geBtn";F.setAttribute("disabled","disabled");var G=document.createElement("select");G.setAttribute("disabled","disabled");G.style.maxWidth="80px";G.style.position="relative";G.style.top="-2px";G.style.verticalAlign="bottom";G.style.marginRight="6px";G.style.display="none";var I=null;mxEvent.addListener(G,"change",function(a){null!= +I&&(I(a),mxEvent.consume(a))});var J=mxUtils.button(mxResources.get("edit"),function(){null!=z&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(mxUtils.getXml(z.documentElement)),a.openLink(a.getUrl(),null,!0))});J.className="geBtn";J.setAttribute("disabled","disabled");null!=d&&(J.style.display="none");var E=mxUtils.button(mxResources.get("show"),function(){null!=q&&a.openLink(q.getUrl(G.selectedIndex))});E.className="geBtn gePrimaryBtn";E.setAttribute("disabled", +"disabled");null!=d&&(E.style.display="none",F.className="geBtn gePrimaryBtn");e=document.createElement("div");e.style.position="absolute";e.style.top="482px";e.style.width="640px";e.style.textAlign="right";var K=document.createElement("div");K.className="geToolbarContainer";K.style.backgroundColor="transparent";K.style.padding="2px";K.style.border="none";K.style.left="199px";K.style.top="442px";var O=null;if(null!=c&&0<c.length){k.style.cursor="move";var R=document.createElement("table");R.style.border= "1px solid lightGray";R.style.borderCollapse="collapse";R.style.borderSpacing="0px";R.style.width="100%";var X=document.createElement("tbody"),U=(new Date).toDateString();null!=a.currentPage&&null!=a.pages&&(n=mxUtils.indexOf(a.pages,a.currentPage));for(var L=c.length-1;0<=L;L--){var V=function(b){var d=new Date(b.modifiedDate),m=null;if(0<=d.getTime()){var e=function(c){p.stop();var e=mxUtils.parseXml(c),g=a.editor.extractGraphModel(e.documentElement,!0);if(null!=g){var q=function(a){null!=a&&(a= -v(mxUtils.parseXml(Graph.decompress(mxUtils.getTextContent(a))).documentElement));return a},v=function(a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";k.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,l.getModel());l.maxFitScale=1;l.fit(8);l.center();return a};F.style.display="none";F.innerHTML="";z=e;y=c;u=parseSelectFunction=null;f=0;if("mxfile"==g.nodeName){e=g.getElementsByTagName("diagram");u=[];for(c=0;c<e.length;c++)u.push(e[c]);f=Math.min(n, -u.length-1);0<u.length&&q(u[f]);if(1<u.length)for(F.removeAttribute("disabled"),F.style.display="",c=0;c<u.length;c++)e=document.createElement("option"),mxUtils.write(e,u[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),e.setAttribute("value",c),c==f&&e.setAttribute("selected","selected"),F.appendChild(e);G=function(){try{var b=parseInt(F.value);f=n=b;q(u[b])}catch(M){F.value=n,a.handleError(M)}}}else v(g);c=b.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0,20)+"..."); -C.innerHTML="";mxUtils.write(C,(null!=c?c+" ":"")+d.toLocaleDateString()+" "+d.toLocaleTimeString());C.setAttribute("title",m.getAttribute("title"));D.removeAttribute("disabled");H.removeAttribute("disabled");x.removeAttribute("disabled");A.removeAttribute("disabled");null!=t&&t.isRestricted()||(a.editor.graph.isEnabled()&&I.removeAttribute("disabled"),B.removeAttribute("disabled"),E.removeAttribute("disabled"),J.removeAttribute("disabled"));mxUtils.setOpacity(D,60);mxUtils.setOpacity(H,60);mxUtils.setOpacity(x, -60);mxUtils.setOpacity(A,60)}else F.style.display="none",F.innerHTML="",C.innerHTML="",mxUtils.write(C,mxResources.get("errorLoadingFile"))},m=document.createElement("tr");m.style.borderBottom="1px solid lightGray";m.style.fontSize="12px";m.style.cursor="pointer";var g=document.createElement("td");g.style.padding="6px";g.style.whiteSpace="nowrap";b==c[c.length-1]?mxUtils.write(g,mxResources.get("current")):d.toDateString()===U?mxUtils.write(g,d.toLocaleTimeString()):mxUtils.write(g,d.toLocaleDateString()+ -" "+d.toLocaleTimeString());m.appendChild(g);m.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString()+(null!=b.fileSize?" "+a.formatFileSize(parseInt(b.fileSize)):"")+(null!=b.lastModifyingUserName?" "+b.lastModifyingUserName:""));mxEvent.addListener(m,"click",function(a){q!=b&&(p.stop(),null!=v&&(v.style.backgroundColor=""),q=b,v=m,v.style.backgroundColor="#ebf2f9",y=z=null,C.removeAttribute("title"),C.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+"..."),k.style.backgroundColor= -"#ffffff",l.getModel().clear(),I.setAttribute("disabled","disabled"),B.setAttribute("disabled","disabled"),D.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"),A.setAttribute("disabled","disabled"),x.setAttribute("disabled","disabled"),J.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),F.setAttribute("disabled","disabled"),mxUtils.setOpacity(D,20),mxUtils.setOpacity(H,20),mxUtils.setOpacity(x,20),mxUtils.setOpacity(A,20),p.spin(k),b.getXml(function(a){if(q== -b)try{e(a)}catch(ca){C.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+ca.message)}},function(a){p.stop();F.style.display="none";F.innerHTML="";C.innerHTML="";mxUtils.write(C,mxResources.get("errorLoadingFile"))}),mxEvent.consume(a))});mxEvent.addListener(m,"dblclick",function(a){E.click();window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(a)},!1);X.appendChild(m)}return m}(c[L]);null!=V&&L==c.length-1&&(O=V)}R.appendChild(X); -g.appendChild(R)}else null==t||null==a.drive&&t.constructor==window.DriveFile||null==a.dropbox&&t.constructor==window.DropboxFile?(k.style.display="none",K.style.display="none",mxUtils.write(g,mxResources.get("notAvailable"))):(k.style.display="none",K.style.display="none",mxUtils.write(g,mxResources.get("noRevisions")));this.init=function(){null!=O&&O.click()};g=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});g.className="geBtn";K.appendChild(F);K.appendChild(D);K.appendChild(H); -K.appendChild(A);K.appendChild(x);a.editor.cancelFirst?(e.appendChild(g),e.appendChild(B),e.appendChild(J),e.appendChild(I),e.appendChild(E)):(e.appendChild(B),e.appendChild(J),e.appendChild(I),e.appendChild(E),e.appendChild(g));b.appendChild(e);b.appendChild(K);b.appendChild(C);this.container=b},DraftDialog=function(a,c,d,b,e,g,k,l,n){var u=document.createElement("div"),f=document.createElement("div");f.style.marginTop="0px";f.style.whiteSpace="nowrap";f.style.overflow="auto";f.style.lineHeight= -"normal";mxUtils.write(f,c);u.appendChild(f);var m=document.createElement("select"),p=mxUtils.bind(this,function(){D=mxUtils.parseXml(n[m.value].data);H=a.editor.extractGraphModel(D.documentElement,!0);x=0;this.init()});if(null!=n){m.style.marginLeft="4px";for(c=0;c<n.length;c++){var t=document.createElement("option");t.setAttribute("value",c);var v=new Date(n[c].created),q=new Date(n[c].modified);mxUtils.write(t,v.toLocaleDateString()+" "+v.toLocaleTimeString()+" - "+(v.toDateString(),q.toDateString(), -q.toLocaleDateString())+" "+q.toLocaleTimeString());m.appendChild(t)}f.appendChild(m);mxEvent.addListener(m,"change",p)}null==d&&(d=n[0].data);var z=document.createElement("div");z.style.position="absolute";z.style.border="1px solid lightGray";z.style.marginTop="10px";z.style.width="640px";z.style.top="46px";z.style.bottom="74px";z.style.overflow="hidden";mxEvent.disableContextMenu(z);u.appendChild(z);var y=new Graph(z);y.setEnabled(!1);y.setPanning(!0);y.panningHandler.ignoreCell=!0;y.panningHandler.useLeftButtonForPanning= -!0;y.minFitScale=null;y.maxFitScale=null;y.centerZoom=!0;var D=mxUtils.parseXml(d),H=a.editor.extractGraphModel(D.documentElement,!0),x=0,A=null,C=y.getGlobalVariable;y.getGlobalVariable=function(a){return"page"==a&&null!=A&&null!=A[x]?A[x].getAttribute("name"):"pagenumber"==a?x+1:"pagecount"==a?null!=A?A.length:1:C.apply(this,arguments)};y.getLinkForCell=function(){return null};d=mxUtils.button("",function(){y.zoomIn()});d.className="geSprite geSprite-zoomin";d.setAttribute("title",mxResources.get("zoomIn")); -d.style.outline="none";d.style.border="none";d.style.margin="2px";mxUtils.setOpacity(d,60);f=mxUtils.button("",function(){y.zoomOut()});f.className="geSprite geSprite-zoomout";f.setAttribute("title",mxResources.get("zoomOut"));f.style.outline="none";f.style.border="none";f.style.margin="2px";mxUtils.setOpacity(f,60);c=mxUtils.button("",function(){y.maxFitScale=8;y.fit(8);y.center()});c.className="geSprite geSprite-fit";c.setAttribute("title",mxResources.get("fit"));c.style.outline="none";c.style.border= -"none";c.style.margin="2px";mxUtils.setOpacity(c,60);t=mxUtils.button("",function(){y.zoomActual();y.center()});t.className="geSprite geSprite-actualsize";t.setAttribute("title",mxResources.get("actualSize"));t.style.outline="none";t.style.border="none";t.style.margin="2px";mxUtils.setOpacity(t,60);k=mxUtils.button(k||mxResources.get("discard"),function(){e.apply(this,[m.value,mxUtils.bind(this,function(){null!=m.parentNode&&(m.options[m.selectedIndex].parentNode.removeChild(m.options[m.selectedIndex]), -0<m.options.length?(m.value=m.options[0].value,p()):a.hideDialog(!0))})])});k.className="geBtn";var B=document.createElement("select");B.style.maxWidth="80px";B.style.position="relative";B.style.top="-2px";B.style.verticalAlign="bottom";B.style.marginRight="6px";B.style.display="none";g=mxUtils.button(g||mxResources.get("edit"),function(){b.apply(this,[m.value])});g.className="geBtn gePrimaryBtn";v=document.createElement("div");v.style.position="absolute";v.style.bottom="30px";v.style.width="640px"; -v.style.textAlign="right";q=document.createElement("div");q.className="geToolbarContainer";q.style.cssText="box-shadow:none !important;background-color:transparent;padding:2px;border-style:none !important;bottom:30px;";this.init=function(){function a(a){if(null!=a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";z.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,y.getModel());y.maxFitScale=1;y.fit(8);y.center()}}function b(b){null!=b&&(b=a(mxUtils.parseXml(Graph.decompress(mxUtils.getTextContent(b))).documentElement)); -return b}mxEvent.addListener(B,"change",function(a){x=parseInt(B.value);b(A[x]);mxEvent.consume(a)});if("mxfile"==H.nodeName){var c=H.getElementsByTagName("diagram");A=[];for(var d=0;d<c.length;d++)A.push(c[d]);0<A.length&&b(A[x]);B.innerHTML="";if(1<A.length)for(B.style.display="",d=0;d<A.length;d++)c=document.createElement("option"),mxUtils.write(c,A[d].getAttribute("name")||mxResources.get("pageWithNumber",[d+1])),c.setAttribute("value",d),d==x&&c.setAttribute("selected","selected"),B.appendChild(c); -else B.style.display="none"}else a(H)};q.appendChild(B);q.appendChild(d);q.appendChild(f);q.appendChild(t);q.appendChild(c);d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});d.className="geBtn";l=null!=l?mxUtils.button(mxResources.get("ignore"),l):null;null!=l&&(l.className="geBtn");a.editor.cancelFirst?(v.appendChild(d),null!=l&&v.appendChild(l),v.appendChild(k),v.appendChild(g)):(v.appendChild(g),v.appendChild(k),null!=l&&v.appendChild(l),v.appendChild(d));u.appendChild(v); -u.appendChild(q);this.container=u},FindWindow=function(a,c,d,b,e){function g(a,b,c){if("object"===typeof b.value&&null!=b.value.attributes){b=b.value.attributes;for(var d=0;d<b.length;d++)if("label"!=b[d].nodeName){var f=mxUtils.trim(b[d].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==a&&f.substring(0,c.length)===c||null!=a&&a.test(f))return!0}}return!1}function k(){var a=n.model.getDescendants(n.model.getRoot()),b=p.value.toLowerCase(),c=t.checked?new RegExp(b):null,d= -null;u!=b&&(u=b,f=null);var m=null==f;if(0<b.length)for(var e=0;e<a.length;e++){var k=n.view.getState(a[e]);if(null!=k&&null!=k.cell.value&&(m||null==d)&&(n.model.isVertex(k.cell)||n.model.isEdge(k.cell))&&(n.isHtmlLabel(k.cell)?(q.innerHTML=n.getLabel(k.cell),label=mxUtils.extractTextWithWhitespace([q])):label=n.getLabel(k.cell),label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase(),null==c&&(label.substring(0,b.length)===b||g(c,k.cell,b))||null!=c&&(c.test(label)||g(c, -k.cell,b))))if(m){d=k;break}else null==d&&(d=k);m=m||k==f}null!=d?(f=d,n.scrollCellToVisible(f.cell),n.isEnabled()?n.setSelectionCell(f.cell):n.highlightCell(f.cell)):n.isEnabled()&&n.clearSelection();return 0==b.length||null!=d}var l=a.actions.get("find"),n=a.editor.graph,u=null,f=null,m=document.createElement("div");m.style.userSelect="none";m.style.overflow="hidden";m.style.padding="10px";m.style.height="100%";var p=document.createElement("input");p.setAttribute("placeholder",mxResources.get("find")); -p.setAttribute("type","text");p.style.marginTop="4px";p.style.marginBottom="6px";p.style.width="200px";p.style.fontSize="12px";p.style.borderRadius="4px";p.style.padding="6px";m.appendChild(p);mxUtils.br(m);var t=document.createElement("input");t.setAttribute("type","checkbox");t.style.marginRight="4px";m.appendChild(t);mxUtils.write(m,mxResources.get("regularExpression"));var v=a.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000088250");v.style.position="relative";v.style.marginLeft= -"6px";v.style.top="-1px";m.appendChild(v);var q=document.createElement("div");mxUtils.br(m);v=mxUtils.button(mxResources.get("reset"),function(){p.value="";p.style.backgroundColor="";u=f=null;p.focus()});v.setAttribute("title",mxResources.get("reset"));v.style.marginTop="6px";v.style.marginRight="4px";v.className="geBtn";m.appendChild(v);v=mxUtils.button(mxResources.get("find"),function(){try{p.style.backgroundColor=k()?"":"#ffcfcf"}catch(y){a.handleError(y)}});v.setAttribute("title",mxResources.get("find")+ -" (Enter)");v.style.marginTop="6px";v.className="geBtn gePrimaryBtn";m.appendChild(v);mxEvent.addListener(p,"keyup",function(a){if(91==a.keyCode||17==a.keyCode)mxEvent.consume(a);else if(27==a.keyCode)l.funct();else if(u!=p.value.toLowerCase()||13==a.keyCode)try{p.style.backgroundColor=k()?"":"#ffcfcf"}catch(D){p.style.backgroundColor="#ffcfcf"}});mxEvent.addListener(m,"keydown",function(b){70==b.keyCode&&a.keyHandler.isControlDown(b)&&!mxEvent.isShiftDown(b)&&(l.funct(),mxEvent.consume(b))});this.window= +v(mxUtils.parseXml(Graph.decompress(mxUtils.getTextContent(a))).documentElement));return a},v=function(a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";k.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,l.getModel());l.maxFitScale=1;l.fit(8);l.center();return a};G.style.display="none";G.innerHTML="";z=e;x=c;t=parseSelectFunction=null;f=0;if("mxfile"==g.nodeName){e=g.getElementsByTagName("diagram");t=[];for(c=0;c<e.length;c++)t.push(e[c]);f=Math.min(n, +t.length-1);0<t.length&&q(t[f]);if(1<t.length)for(G.removeAttribute("disabled"),G.style.display="",c=0;c<t.length;c++)e=document.createElement("option"),mxUtils.write(e,t[c].getAttribute("name")||mxResources.get("pageWithNumber",[c+1])),e.setAttribute("value",c),c==f&&e.setAttribute("selected","selected"),G.appendChild(e);I=function(){try{var b=parseInt(G.value);f=n=b;q(t[b])}catch(M){G.value=n,a.handleError(M)}}}else v(g);c=b.lastModifyingUserName;null!=c&&20<c.length&&(c=c.substring(0,20)+"..."); +D.innerHTML="";mxUtils.write(D,(null!=c?c+" ":"")+d.toLocaleDateString()+" "+d.toLocaleTimeString());D.setAttribute("title",m.getAttribute("title"));C.removeAttribute("disabled");H.removeAttribute("disabled");y.removeAttribute("disabled");B.removeAttribute("disabled");null!=u&&u.isRestricted()||(a.editor.graph.isEnabled()&&F.removeAttribute("disabled"),A.removeAttribute("disabled"),E.removeAttribute("disabled"),J.removeAttribute("disabled"));mxUtils.setOpacity(C,60);mxUtils.setOpacity(H,60);mxUtils.setOpacity(y, +60);mxUtils.setOpacity(B,60)}else G.style.display="none",G.innerHTML="",D.innerHTML="",mxUtils.write(D,mxResources.get("errorLoadingFile"))},m=document.createElement("tr");m.style.borderBottom="1px solid lightGray";m.style.fontSize="12px";m.style.cursor="pointer";var g=document.createElement("td");g.style.padding="6px";g.style.whiteSpace="nowrap";b==c[c.length-1]?mxUtils.write(g,mxResources.get("current")):d.toDateString()===U?mxUtils.write(g,d.toLocaleTimeString()):mxUtils.write(g,d.toLocaleDateString()+ +" "+d.toLocaleTimeString());m.appendChild(g);m.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString()+(null!=b.fileSize?" "+a.formatFileSize(parseInt(b.fileSize)):"")+(null!=b.lastModifyingUserName?" "+b.lastModifyingUserName:""));mxEvent.addListener(m,"click",function(a){q!=b&&(p.stop(),null!=v&&(v.style.backgroundColor=""),q=b,v=m,v.style.backgroundColor="#ebf2f9",x=z=null,D.removeAttribute("title"),D.innerHTML=mxUtils.htmlEntities(mxResources.get("loading")+"..."),k.style.backgroundColor= +"#ffffff",l.getModel().clear(),F.setAttribute("disabled","disabled"),A.setAttribute("disabled","disabled"),C.setAttribute("disabled","disabled"),H.setAttribute("disabled","disabled"),B.setAttribute("disabled","disabled"),y.setAttribute("disabled","disabled"),J.setAttribute("disabled","disabled"),E.setAttribute("disabled","disabled"),G.setAttribute("disabled","disabled"),mxUtils.setOpacity(C,20),mxUtils.setOpacity(H,20),mxUtils.setOpacity(y,20),mxUtils.setOpacity(B,20),p.spin(k),b.getXml(function(a){if(q== +b)try{e(a)}catch(ca){D.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+": "+ca.message)}},function(a){p.stop();G.style.display="none";G.innerHTML="";D.innerHTML="";mxUtils.write(D,mxResources.get("errorLoadingFile"))}),mxEvent.consume(a))});mxEvent.addListener(m,"dblclick",function(a){E.click();window.getSelection?window.getSelection().removeAllRanges():document.selection&&document.selection.empty();mxEvent.consume(a)},!1);X.appendChild(m)}return m}(c[L]);null!=V&&L==c.length-1&&(O=V)}R.appendChild(X); +g.appendChild(R)}else null==u||null==a.drive&&u.constructor==window.DriveFile||null==a.dropbox&&u.constructor==window.DropboxFile?(k.style.display="none",K.style.display="none",mxUtils.write(g,mxResources.get("notAvailable"))):(k.style.display="none",K.style.display="none",mxUtils.write(g,mxResources.get("noRevisions")));this.init=function(){null!=O&&O.click()};g=mxUtils.button(mxResources.get("close"),function(){a.hideDialog()});g.className="geBtn";K.appendChild(G);K.appendChild(C);K.appendChild(H); +K.appendChild(B);K.appendChild(y);a.editor.cancelFirst?(e.appendChild(g),e.appendChild(A),e.appendChild(J),e.appendChild(F),e.appendChild(E)):(e.appendChild(A),e.appendChild(J),e.appendChild(F),e.appendChild(E),e.appendChild(g));b.appendChild(e);b.appendChild(K);b.appendChild(D);this.container=b},DraftDialog=function(a,c,d,b,e,g,k,l,n){var t=document.createElement("div"),f=document.createElement("div");f.style.marginTop="0px";f.style.whiteSpace="nowrap";f.style.overflow="auto";f.style.lineHeight= +"normal";mxUtils.write(f,c);t.appendChild(f);var m=document.createElement("select"),p=mxUtils.bind(this,function(){C=mxUtils.parseXml(n[m.value].data);H=a.editor.extractGraphModel(C.documentElement,!0);y=0;this.init()});if(null!=n){m.style.marginLeft="4px";for(c=0;c<n.length;c++){var u=document.createElement("option");u.setAttribute("value",c);var v=new Date(n[c].created),q=new Date(n[c].modified);mxUtils.write(u,v.toLocaleDateString()+" "+v.toLocaleTimeString()+" - "+(v.toDateString(),q.toDateString(), +q.toLocaleDateString())+" "+q.toLocaleTimeString());m.appendChild(u)}f.appendChild(m);mxEvent.addListener(m,"change",p)}null==d&&(d=n[0].data);var z=document.createElement("div");z.style.position="absolute";z.style.border="1px solid lightGray";z.style.marginTop="10px";z.style.width="640px";z.style.top="46px";z.style.bottom="74px";z.style.overflow="hidden";mxEvent.disableContextMenu(z);t.appendChild(z);var x=new Graph(z);x.setEnabled(!1);x.setPanning(!0);x.panningHandler.ignoreCell=!0;x.panningHandler.useLeftButtonForPanning= +!0;x.minFitScale=null;x.maxFitScale=null;x.centerZoom=!0;var C=mxUtils.parseXml(d),H=a.editor.extractGraphModel(C.documentElement,!0),y=0,B=null,D=x.getGlobalVariable;x.getGlobalVariable=function(a){return"page"==a&&null!=B&&null!=B[y]?B[y].getAttribute("name"):"pagenumber"==a?y+1:"pagecount"==a?null!=B?B.length:1:D.apply(this,arguments)};x.getLinkForCell=function(){return null};d=mxUtils.button("",function(){x.zoomIn()});d.className="geSprite geSprite-zoomin";d.setAttribute("title",mxResources.get("zoomIn")); +d.style.outline="none";d.style.border="none";d.style.margin="2px";mxUtils.setOpacity(d,60);f=mxUtils.button("",function(){x.zoomOut()});f.className="geSprite geSprite-zoomout";f.setAttribute("title",mxResources.get("zoomOut"));f.style.outline="none";f.style.border="none";f.style.margin="2px";mxUtils.setOpacity(f,60);c=mxUtils.button("",function(){x.maxFitScale=8;x.fit(8);x.center()});c.className="geSprite geSprite-fit";c.setAttribute("title",mxResources.get("fit"));c.style.outline="none";c.style.border= +"none";c.style.margin="2px";mxUtils.setOpacity(c,60);u=mxUtils.button("",function(){x.zoomActual();x.center()});u.className="geSprite geSprite-actualsize";u.setAttribute("title",mxResources.get("actualSize"));u.style.outline="none";u.style.border="none";u.style.margin="2px";mxUtils.setOpacity(u,60);k=mxUtils.button(k||mxResources.get("discard"),function(){e.apply(this,[m.value,mxUtils.bind(this,function(){null!=m.parentNode&&(m.options[m.selectedIndex].parentNode.removeChild(m.options[m.selectedIndex]), +0<m.options.length?(m.value=m.options[0].value,p()):a.hideDialog(!0))})])});k.className="geBtn";var A=document.createElement("select");A.style.maxWidth="80px";A.style.position="relative";A.style.top="-2px";A.style.verticalAlign="bottom";A.style.marginRight="6px";A.style.display="none";g=mxUtils.button(g||mxResources.get("edit"),function(){b.apply(this,[m.value])});g.className="geBtn gePrimaryBtn";v=document.createElement("div");v.style.position="absolute";v.style.bottom="30px";v.style.width="640px"; +v.style.textAlign="right";q=document.createElement("div");q.className="geToolbarContainer";q.style.cssText="box-shadow:none !important;background-color:transparent;padding:2px;border-style:none !important;bottom:30px;";this.init=function(){function a(a){if(null!=a){var b=a.getAttribute("background");if(null==b||""==b||b==mxConstants.NONE)b="#ffffff";z.style.backgroundColor=b;(new mxCodec(a.ownerDocument)).decode(a,x.getModel());x.maxFitScale=1;x.fit(8);x.center()}}function b(b){null!=b&&(b=a(mxUtils.parseXml(Graph.decompress(mxUtils.getTextContent(b))).documentElement)); +return b}mxEvent.addListener(A,"change",function(a){y=parseInt(A.value);b(B[y]);mxEvent.consume(a)});if("mxfile"==H.nodeName){var c=H.getElementsByTagName("diagram");B=[];for(var d=0;d<c.length;d++)B.push(c[d]);0<B.length&&b(B[y]);A.innerHTML="";if(1<B.length)for(A.style.display="",d=0;d<B.length;d++)c=document.createElement("option"),mxUtils.write(c,B[d].getAttribute("name")||mxResources.get("pageWithNumber",[d+1])),c.setAttribute("value",d),d==y&&c.setAttribute("selected","selected"),A.appendChild(c); +else A.style.display="none"}else a(H)};q.appendChild(A);q.appendChild(d);q.appendChild(f);q.appendChild(u);q.appendChild(c);d=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});d.className="geBtn";l=null!=l?mxUtils.button(mxResources.get("ignore"),l):null;null!=l&&(l.className="geBtn");a.editor.cancelFirst?(v.appendChild(d),null!=l&&v.appendChild(l),v.appendChild(k),v.appendChild(g)):(v.appendChild(g),v.appendChild(k),null!=l&&v.appendChild(l),v.appendChild(d));t.appendChild(v); +t.appendChild(q);this.container=t},FindWindow=function(a,c,d,b,e){function g(a,b,c){if("object"===typeof b.value&&null!=b.value.attributes){b=b.value.attributes;for(var d=0;d<b.length;d++)if("label"!=b[d].nodeName){var f=mxUtils.trim(b[d].nodeValue.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase();if(null==a&&f.substring(0,c.length)===c||null!=a&&a.test(f))return!0}}return!1}function k(){var a=n.model.getDescendants(n.model.getRoot()),b=p.value.toLowerCase(),c=u.checked?new RegExp(b):null,d= +null;t!=b&&(t=b,f=null);var m=null==f;if(0<b.length)for(var e=0;e<a.length;e++){var A=n.view.getState(a[e]);if(null!=A&&null!=A.cell.value&&(m||null==d)&&(n.model.isVertex(A.cell)||n.model.isEdge(A.cell))&&(n.isHtmlLabel(A.cell)?(q.innerHTML=n.getLabel(A.cell),label=mxUtils.extractTextWithWhitespace([q])):label=n.getLabel(A.cell),label=mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")).toLowerCase(),null==c&&(label.substring(0,b.length)===b||g(c,A.cell,b))||null!=c&&(c.test(label)||g(c, +A.cell,b))))if(m){d=A;break}else null==d&&(d=A);m=m||A==f}null!=d?(f=d,n.scrollCellToVisible(f.cell),n.isEnabled()?n.setSelectionCell(f.cell):n.highlightCell(f.cell)):n.isEnabled()&&n.clearSelection();return 0==b.length||null!=d}var l=a.actions.get("find"),n=a.editor.graph,t=null,f=null,m=document.createElement("div");m.style.userSelect="none";m.style.overflow="hidden";m.style.padding="10px";m.style.height="100%";var p=document.createElement("input");p.setAttribute("placeholder",mxResources.get("find")); +p.setAttribute("type","text");p.style.marginTop="4px";p.style.marginBottom="6px";p.style.width="200px";p.style.fontSize="12px";p.style.borderRadius="4px";p.style.padding="6px";m.appendChild(p);mxUtils.br(m);var u=document.createElement("input");u.setAttribute("type","checkbox");u.style.marginRight="4px";m.appendChild(u);mxUtils.write(m,mxResources.get("regularExpression"));var v=a.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000088250");v.style.position="relative";v.style.marginLeft= +"6px";v.style.top="-1px";m.appendChild(v);var q=document.createElement("div");mxUtils.br(m);v=mxUtils.button(mxResources.get("reset"),function(){p.value="";p.style.backgroundColor="";t=f=null;p.focus()});v.setAttribute("title",mxResources.get("reset"));v.style.marginTop="6px";v.style.marginRight="4px";v.className="geBtn";m.appendChild(v);v=mxUtils.button(mxResources.get("find"),function(){try{p.style.backgroundColor=k()?"":"#ffcfcf"}catch(x){a.handleError(x)}});v.setAttribute("title",mxResources.get("find")+ +" (Enter)");v.style.marginTop="6px";v.className="geBtn gePrimaryBtn";m.appendChild(v);mxEvent.addListener(p,"keyup",function(a){if(91==a.keyCode||17==a.keyCode)mxEvent.consume(a);else if(27==a.keyCode)l.funct();else if(t!=p.value.toLowerCase()||13==a.keyCode)try{p.style.backgroundColor=k()?"":"#ffcfcf"}catch(C){p.style.backgroundColor="#ffcfcf"}});mxEvent.addListener(m,"keydown",function(b){70==b.keyCode&&a.keyHandler.isControlDown(b)&&!mxEvent.isShiftDown(b)&&(l.funct(),mxEvent.consume(b))});this.window= new mxWindow(mxResources.get("find"),m,c,d,b,e,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.fit();this.window.isVisible()?(p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)):n.container.focus()}));this.window.setLocation=function(a,b){var c=window.innerHeight|| document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var z=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",z);this.destroy= function(){mxEvent.removeListener(window,"resize",z);this.window.destroy()}},FreehandWindow=function(a,c,d,b,e){var g=a.editor.graph;a=document.createElement("div");a.style.userSelect="none";a.style.overflow="hidden";a.style.height="100%";var k=mxUtils.button(mxResources.get("startDrawing"),function(){g.freehand.isDrawing()&&g.freehand.stopDrawing();g.freehand.startDrawing()});k.setAttribute("title",mxResources.get("startDrawing"));k.style.marginTop="8px";k.style.marginRight="4px";k.style.width="160px"; @@ -8419,70 +8419,70 @@ k.style.overflow="hidden";k.style.textOverflow="ellipsis";k.style.textAlign="cen this.window.setClosable(!0);g.addListener("freehandStateChanged",mxUtils.bind(this,function(){l.className="geBtn"+(g.freehand.isDrawing()?" gePrimaryBtn":"")}));this.window.addListener("show",mxUtils.bind(this,function(){this.window.fit()}));this.window.addListener("hide",mxUtils.bind(this,function(){g.freehand.isDrawing()&&g.freehand.stopDrawing()}));this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a, (window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var n=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",n);this.destroy=function(){mxEvent.removeListener(window,"resize",n);this.window.destroy()}},TagsWindow= function(a,c,d,b,e){var g=a.editor.graph,k="tags",l=document.createElement("div");l.style.userSelect="none";l.style.overflow="hidden";l.style.padding="10px";l.style.height="100%";var n=document.createElement("input");n.setAttribute("placeholder",mxResources.get("allTags"));n.setAttribute("type","text");n.style.marginTop="4px";n.style.width="260px";n.style.fontSize="12px";n.style.borderRadius="4px";n.style.padding="6px";l.appendChild(n);if(!a.isOffline()||mxClient.IS_CHROMEAPP){n.style.width="240px"; -var u=a.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000046966");u.firstChild.style.marginBottom="6px";u.style.marginLeft="6px";l.appendChild(u)}mxEvent.addListener(n,"dblclick",function(){var b=new FilenameDialog(a,k,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&(k=a)}),mxResources.get("enterPropertyName"));a.showDialog(b.container,300,80,!0,!0);b.init()});n.setAttribute("title",mxResources.get("doubleClickChangeProperty"));mxUtils.br(l);u=mxUtils.button(mxResources.get("hide"), -function(){var a=g.getCellsForTags(n.value.split(" "),void 0,k,!0);g.setCellsVisible(a,!1)});u.setAttribute("title",mxResources.get("hide"));u.style.marginTop="8px";u.style.marginRight="4px";u.className="geBtn";l.appendChild(u);u=mxUtils.button(mxResources.get("show"),function(){var a=g.getCellsForTags(n.value.split(" "),void 0,k,!0);g.setCellsVisible(a,!0);if(g.isEnabled()){for(var b=[],c=0;c<a.length;c++)(g.model.isVertex(a[c])||g.model.isEdge(a[c]))&&b.push(a[c]);g.setSelectionCells(b)}else for(c= -0;c<a.length;c++)g.highlightCell(a[c])});u.setAttribute("title",mxResources.get("show"));u.style.marginTop="8px";u.style.marginRight="4px";u.className="geBtn";l.appendChild(u);var f=a.actions.get("tags"),u=mxUtils.button(mxResources.get("close"),function(){f.funct()});u.setAttribute("title",mxResources.get("close")+" (Enter/Esc)");u.style.marginTop="8px";u.className="geBtn gePrimaryBtn";l.appendChild(u);mxEvent.addListener(n,"keyup",function(a){13!=a.keyCode&&27!=a.keyCode||f.funct()});this.window= +var t=a.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000046966");t.firstChild.style.marginBottom="6px";t.style.marginLeft="6px";l.appendChild(t)}mxEvent.addListener(n,"dblclick",function(){var b=new FilenameDialog(a,k,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&0<a.length&&(k=a)}),mxResources.get("enterPropertyName"));a.showDialog(b.container,300,80,!0,!0);b.init()});n.setAttribute("title",mxResources.get("doubleClickChangeProperty"));mxUtils.br(l);t=mxUtils.button(mxResources.get("hide"), +function(){var a=g.getCellsForTags(n.value.split(" "),void 0,k,!0);g.setCellsVisible(a,!1)});t.setAttribute("title",mxResources.get("hide"));t.style.marginTop="8px";t.style.marginRight="4px";t.className="geBtn";l.appendChild(t);t=mxUtils.button(mxResources.get("show"),function(){var a=g.getCellsForTags(n.value.split(" "),void 0,k,!0);g.setCellsVisible(a,!0);if(g.isEnabled()){for(var b=[],c=0;c<a.length;c++)(g.model.isVertex(a[c])||g.model.isEdge(a[c]))&&b.push(a[c]);g.setSelectionCells(b)}else for(c= +0;c<a.length;c++)g.highlightCell(a[c])});t.setAttribute("title",mxResources.get("show"));t.style.marginTop="8px";t.style.marginRight="4px";t.className="geBtn";l.appendChild(t);var f=a.actions.get("tags"),t=mxUtils.button(mxResources.get("close"),function(){f.funct()});t.setAttribute("title",mxResources.get("close")+" (Enter/Esc)");t.style.marginTop="8px";t.className="geBtn gePrimaryBtn";l.appendChild(t);mxEvent.addListener(n,"keyup",function(a){13!=a.keyCode&&27!=a.keyCode||f.funct()});this.window= new mxWindow(mxResources.get("tags"),l,c,d,b,e,!0,!0);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!1);this.window.setClosable(!0);this.window.addListener("show",mxUtils.bind(this,function(){this.window.fit();this.window.isVisible()?(n.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll",!1,null)):g.container.focus()}));this.window.setLocation=function(a,b){var c=window.innerHeight|| document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var m=mxUtils.bind(this,function(){var a=this.window.getX(),b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",m);this.destroy= function(){mxEvent.removeListener(window,"resize",m);this.window.destroy()}},AuthDialog=function(a,c,d,b){var e=document.createElement("div");e.style.textAlign="center";var g=document.createElement("p");g.style.fontSize="16pt";g.style.padding="0px";g.style.margin="0px";g.style.color="gray";mxUtils.write(g,mxResources.get("authorizationRequired"));var k="Unknown",l=document.createElement("img");l.setAttribute("border","0");l.setAttribute("align","absmiddle");l.style.marginRight="10px";c==a.drive?(k= mxResources.get("googleDrive"),l.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==a.dropbox?(k=mxResources.get("dropbox"),l.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==a.oneDrive?(k=mxResources.get("oneDrive"),l.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==a.gitHub?(k=mxResources.get("github"),l.src=IMAGE_PATH+"/github-logo-white.svg"):c==a.gitLab?(k=mxResources.get("gitlab"),l.src=IMAGE_PATH+"/gitlab-logo.svg",l.style.width="32px"):c==a.trello&&(k=mxResources.get("trello"),l.src=IMAGE_PATH+"/trello-logo-white.svg"); a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizeThisAppIn",[k]));var n=document.createElement("input");n.setAttribute("type","checkbox");k=mxUtils.button(mxResources.get("authorize"),function(){b(n.checked)});k.insertBefore(l,k.firstChild);k.style.marginTop="6px";k.className="geBigButton";k.style.fontSize="18px";k.style.padding="14px";e.appendChild(g);e.appendChild(a);e.appendChild(k);d&&(d=document.createElement("p"),d.style.marginTop="20px",d.appendChild(n),g=document.createElement("span"), -mxUtils.write(g," "+mxResources.get("rememberMe")),d.appendChild(g),e.appendChild(d),n.checked=!0,n.defaultChecked=!0,mxEvent.addListener(g,"click",function(a){n.checked=!n.checked;mxEvent.consume(a)}));this.container=e},MoreShapesDialog=function(a,c,d){d=null!=d?d:a.sidebar.entries;var b=document.createElement("div"),e=[];if(null!=a.sidebar.customEntries)for(var g=0;g<a.sidebar.customEntries.length;g++){for(var k=a.sidebar.customEntries[g],l={title:a.getResource(k.title),entries:[]},n=0;n<k.entries.length;n++){var u= -k.entries[n];l.entries.push({id:u.id,title:a.getResource(u.title),desc:a.getResource(u.desc),image:u.preview})}e.push(l)}for(g=0;g<d.length;g++)if(null==a.sidebar.enabledLibraries)e.push(d[g]);else{l={title:d[g].title,entries:[]};for(n=0;n<d[g].entries.length;n++)0<=mxUtils.indexOf(a.sidebar.enabledLibraries,d[g].entries[n].id)&&l.entries.push(d[g].entries[n]);0<l.entries.length&&e.push(l)}d=e;if(c){n=mxUtils.bind(this,function(b){for(var c=0;c<b.length;c++)(function(b){var d=v.cloneNode(!1);d.style.fontWeight= +mxUtils.write(g," "+mxResources.get("rememberMe")),d.appendChild(g),e.appendChild(d),n.checked=!0,n.defaultChecked=!0,mxEvent.addListener(g,"click",function(a){n.checked=!n.checked;mxEvent.consume(a)}));this.container=e},MoreShapesDialog=function(a,c,d){d=null!=d?d:a.sidebar.entries;var b=document.createElement("div"),e=[];if(null!=a.sidebar.customEntries)for(var g=0;g<a.sidebar.customEntries.length;g++){for(var k=a.sidebar.customEntries[g],l={title:a.getResource(k.title),entries:[]},n=0;n<k.entries.length;n++){var t= +k.entries[n];l.entries.push({id:t.id,title:a.getResource(t.title),desc:a.getResource(t.desc),image:t.preview})}e.push(l)}for(g=0;g<d.length;g++)if(null==a.sidebar.enabledLibraries)e.push(d[g]);else{l={title:d[g].title,entries:[]};for(n=0;n<d[g].entries.length;n++)0<=mxUtils.indexOf(a.sidebar.enabledLibraries,d[g].entries[n].id)&&l.entries.push(d[g].entries[n]);0<l.entries.length&&e.push(l)}d=e;if(c){n=mxUtils.bind(this,function(b){for(var c=0;c<b.length;c++)(function(b){var d=v.cloneNode(!1);d.style.fontWeight= "bold";d.style.backgroundColor="dark"==uiTheme?"#505759":"#e5e5e5";d.style.padding="6px 0px 6px 20px";mxUtils.write(d,b.title);f.appendChild(d);for(var e=0;e<b.entries.length;e++)(function(b){var d=v.cloneNode(!1);d.style.cursor="pointer";d.style.padding="4px 0px 4px 20px";d.style.whiteSpace="nowrap";d.style.overflow="hidden";d.style.textOverflow="ellipsis";d.setAttribute("title",b.title+" ("+b.id+")");var g=document.createElement("input");g.setAttribute("type","checkbox");g.checked=a.sidebar.isEntryVisible(b.id); g.defaultChecked=g.checked;d.appendChild(g);mxUtils.write(d," "+b.title);f.appendChild(d);var q=function(a){if(null==a||"INPUT"!=mxEvent.getSource(a).nodeName){m.style.textAlign="center";m.style.padding="0px";m.style.color="";m.innerHTML="";if(null!=b.desc){var c=document.createElement("pre");c.style.boxSizing="border-box";c.style.fontFamily="inherit";c.style.margin="20px";c.style.right="0px";c.style.textAlign="left";mxUtils.write(c,b.desc);m.appendChild(c)}null!=b.imageCallback?b.imageCallback(m): -null!=b.image?m.innerHTML+='<img border="0" src="'+b.image+'"/>':null==b.desc&&(m.style.padding="20px",m.style.color="rgb(179, 179, 179)",mxUtils.write(m,mxResources.get("noPreview")));null!=p&&(p.style.backgroundColor="");p=d;p.style.backgroundColor="dark"==uiTheme?"#505759":"#ebf2f9";null!=a&&mxEvent.consume(a)}};mxEvent.addListener(d,"click",q);mxEvent.addListener(d,"dblclick",function(a){g.checked=!g.checked;mxEvent.consume(a)});t.push(function(){return g.checked?b.id:null});0==c&&0==e&&q()})(b.entries[e])})(b[c])}); +null!=b.image?m.innerHTML+='<img border="0" src="'+b.image+'"/>':null==b.desc&&(m.style.padding="20px",m.style.color="rgb(179, 179, 179)",mxUtils.write(m,mxResources.get("noPreview")));null!=p&&(p.style.backgroundColor="");p=d;p.style.backgroundColor="dark"==uiTheme?"#505759":"#ebf2f9";null!=a&&mxEvent.consume(a)}};mxEvent.addListener(d,"click",q);mxEvent.addListener(d,"dblclick",function(a){g.checked=!g.checked;mxEvent.consume(a)});u.push(function(){return g.checked?b.id:null});0==c&&0==e&&q()})(b.entries[e])})(b[c])}); g=document.createElement("div");g.className="geDialogTitle";mxUtils.write(g,mxResources.get("shapes"));g.style.position="absolute";g.style.top="0px";g.style.left="0px";g.style.lineHeight="40px";g.style.height="40px";g.style.right="0px";mxClient.IS_QUIRKS&&(g.style.width="718px");var f=document.createElement("div"),m=document.createElement("div");f.style.position="absolute";f.style.top="40px";f.style.left="0px";f.style.width="202px";f.style.bottom="60px";f.style.overflow="auto";mxClient.IS_QUIRKS&& -(f.style.height="437px",f.style.marginTop="1px");m.style.position="absolute";m.style.left="202px";m.style.right="0px";m.style.top="40px";m.style.bottom="60px";m.style.overflow="auto";m.style.borderLeft="1px solid rgb(211, 211, 211)";m.style.textAlign="center";mxClient.IS_QUIRKS&&(m.style.width=parseInt(g.style.width)-202+"px",m.style.height=f.style.height,m.style.marginTop=f.style.marginTop);var p=null,t=[],v=document.createElement("div");v.style.position="relative";v.style.left="0px";v.style.right= +(f.style.height="437px",f.style.marginTop="1px");m.style.position="absolute";m.style.left="202px";m.style.right="0px";m.style.top="40px";m.style.bottom="60px";m.style.overflow="auto";m.style.borderLeft="1px solid rgb(211, 211, 211)";m.style.textAlign="center";mxClient.IS_QUIRKS&&(m.style.width=parseInt(g.style.width)-202+"px",m.style.height=f.style.height,m.style.marginTop=f.style.marginTop);var p=null,u=[],v=document.createElement("div");v.style.position="relative";v.style.left="0px";v.style.right= "0px";n(d);b.style.padding="30px";b.appendChild(g);b.appendChild(f);b.appendChild(m);d=document.createElement("div");d.className="geDialogFooter";d.style.position="absolute";d.style.paddingRight="16px";d.style.color="gray";d.style.left="0px";d.style.right="0px";d.style.bottom="0px";d.style.height="60px";d.style.lineHeight="52px";mxClient.IS_QUIRKS&&(d.style.width=g.style.width,d.style.paddingTop="12px");var q=document.createElement("input");q.setAttribute("type","checkbox");if(isLocalStorage||mxClient.IS_CHROMEAPP)g= document.createElement("span"),g.style.paddingRight="20px",g.appendChild(q),mxUtils.write(g," "+mxResources.get("rememberThisSetting")),q.checked=!0,q.defaultChecked=!0,mxEvent.addListener(g,"click",function(a){mxEvent.getSource(a)!=q&&(q.checked=!q.checked,mxEvent.consume(a))}),mxClient.IS_QUIRKS&&(g.style.position="relative",g.style.top="-6px"),d.appendChild(g);g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";n=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog(); -for(var b=[],c=0;c<t.length;c++){var d=t[c].apply(this,arguments);null!=d&&b.push(d)}a.sidebar.showEntries(b.join(";"),q.checked,!0)});n.className="geBtn gePrimaryBtn"}else{var z=document.createElement("table"),g=document.createElement("tbody");b.style.height="100%";b.style.overflow="auto";n=document.createElement("tr");z.style.width="100%";c=document.createElement("td");var e=document.createElement("td"),k=document.createElement("td"),y=mxUtils.bind(this,function(b,c,d){var f=document.createElement("input"); -f.type="checkbox";z.appendChild(f);f.checked=a.sidebar.isEntryVisible(d);var m=document.createElement("span");mxUtils.write(m,c);c=document.createElement("div");c.style.display="block";c.appendChild(f);c.appendChild(m);mxEvent.addListener(m,"click",function(a){f.checked=!f.checked;mxEvent.consume(a)});b.appendChild(c);return function(){return f.checked?d:null}});n.appendChild(c);n.appendChild(e);n.appendChild(k);g.appendChild(n);z.appendChild(g);for(var t=[],D=0,g=0;g<d.length;g++)for(n=0;n<d[g].entries.length;n++)D++; -for(var H=[c,e,k],x=0,g=0;g<d.length;g++)(function(a){for(var b=0;b<a.entries.length;b++){var c=a.entries[b];t.push(y(H[Math.floor(x/(D/3))],c.title,c.id));x++}})(d[g]);b.appendChild(z);d=document.createElement("div");d.style.marginTop="18px";d.style.textAlign="center";q=document.createElement("input");isLocalStorage&&(q.setAttribute("type","checkbox"),q.checked=!0,q.defaultChecked=!0,d.appendChild(q),g=document.createElement("span"),mxUtils.write(g," "+mxResources.get("rememberThisSetting")),d.appendChild(g), -mxEvent.addListener(g,"click",function(a){q.checked=!q.checked;mxEvent.consume(a)}));b.appendChild(d);g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";n=mxUtils.button(mxResources.get("apply"),function(){for(var b=["search"],c=0;c<t.length;c++){var d=t[c].apply(this,arguments);null!=d&&b.push(d)}a.sidebar.showEntries(0<b.length?b.join(";"):"",q.checked);a.hideDialog()});n.className="geBtn gePrimaryBtn";d=document.createElement("div");d.style.marginTop="26px"; +for(var b=[],c=0;c<u.length;c++){var d=u[c].apply(this,arguments);null!=d&&b.push(d)}a.sidebar.showEntries(b.join(";"),q.checked,!0)});n.className="geBtn gePrimaryBtn"}else{var z=document.createElement("table"),g=document.createElement("tbody");b.style.height="100%";b.style.overflow="auto";n=document.createElement("tr");z.style.width="100%";c=document.createElement("td");var e=document.createElement("td"),k=document.createElement("td"),x=mxUtils.bind(this,function(b,c,d){var f=document.createElement("input"); +f.type="checkbox";z.appendChild(f);f.checked=a.sidebar.isEntryVisible(d);var m=document.createElement("span");mxUtils.write(m,c);c=document.createElement("div");c.style.display="block";c.appendChild(f);c.appendChild(m);mxEvent.addListener(m,"click",function(a){f.checked=!f.checked;mxEvent.consume(a)});b.appendChild(c);return function(){return f.checked?d:null}});n.appendChild(c);n.appendChild(e);n.appendChild(k);g.appendChild(n);z.appendChild(g);for(var u=[],C=0,g=0;g<d.length;g++)for(n=0;n<d[g].entries.length;n++)C++; +for(var H=[c,e,k],y=0,g=0;g<d.length;g++)(function(a){for(var b=0;b<a.entries.length;b++){var c=a.entries[b];u.push(x(H[Math.floor(y/(C/3))],c.title,c.id));y++}})(d[g]);b.appendChild(z);d=document.createElement("div");d.style.marginTop="18px";d.style.textAlign="center";q=document.createElement("input");isLocalStorage&&(q.setAttribute("type","checkbox"),q.checked=!0,q.defaultChecked=!0,d.appendChild(q),g=document.createElement("span"),mxUtils.write(g," "+mxResources.get("rememberThisSetting")),d.appendChild(g), +mxEvent.addListener(g,"click",function(a){q.checked=!q.checked;mxEvent.consume(a)}));b.appendChild(d);g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});g.className="geBtn";n=mxUtils.button(mxResources.get("apply"),function(){for(var b=["search"],c=0;c<u.length;c++){var d=u[c].apply(this,arguments);null!=d&&b.push(d)}a.sidebar.showEntries(0<b.length?b.join(";"):"",q.checked);a.hideDialog()});n.className="geBtn gePrimaryBtn";d=document.createElement("div");d.style.marginTop="26px"; d.style.textAlign="right"}a.editor.cancelFirst?(d.appendChild(g),d.appendChild(n)):(d.appendChild(n),d.appendChild(g));b.appendChild(d);this.container=b},PluginsDialog=function(a){function c(){if(0==e.length)b.innerHTML=mxUtils.htmlEntities(mxResources.get("noPlugins"));else{b.innerHTML="";for(var d=0;d<e.length;d++){var m=document.createElement("span");m.style.whiteSpace="nowrap";var p=document.createElement("span");p.className="geSprite geSprite-delete";p.style.position="relative";p.style.cursor= "pointer";p.style.top="5px";p.style.marginRight="4px";p.style.display="inline-block";m.appendChild(p);mxUtils.write(m,e[d]);b.appendChild(m);mxUtils.br(b);mxEvent.addListener(p,"click",function(b){return function(){a.confirm(mxResources.get("delete")+' "'+e[b]+'"?',function(){e.splice(b,1);c()})}}(d))}}}var d=document.createElement("div"),b=document.createElement("div");b.style.height="120px";b.style.overflow="auto";var e=mxSettings.getPlugins().slice();d.appendChild(b);c();var g=mxUtils.button(mxResources.get("add"), function(){var b="",d=urlParams.p;if(null!=d&&0<d.length){for(var p=d.split(";"),d=0;d<p.length;d++){var g=App.pluginRegistry[p[d]];null!=g&&(b+=g+";")}";"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1))}b=new FilenameDialog(a,b,mxResources.get("add"),function(a){if(null!=a&&0<a.length){p=a.split(";");for(a=0;a<p.length;a++){var b=p[a],d=App.pluginRegistry[b];null!=d&&(b=d);0<b.length&&0>mxUtils.indexOf(e,b)&&e.push(b)}c()}},mxResources.get("enterValue")+" ("+mxResources.get("url")+")");a.showDialog(b.container, -300,80,!0,!0);b.init()});g.className="geBtn";var k=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});k.className="geBtn";var l=mxUtils.button(mxResources.get("apply"),function(){mxSettings.setPlugins(e);mxSettings.save();a.hideDialog();a.alert(mxResources.get("restartForChangeRequired"))});l.className="geBtn gePrimaryBtn";var n=document.createElement("div");n.style.marginTop="14px";n.style.textAlign="right";var u=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000056430")}); -u.className="geBtn";a.isOffline()&&!mxClient.IS_CHROMEAPP&&(u.style.display="none");n.appendChild(u);a.editor.cancelFirst?(n.appendChild(k),n.appendChild(g),n.appendChild(l)):(n.appendChild(g),n.appendChild(l),n.appendChild(k));d.appendChild(n);this.container=d},CropImageDialog=function(a,c,d){function b(a){null!=k&&k.destroy();k=a?new Croppie(g,{viewport:{width:150,height:150,type:"circle"},enableExif:!0,showZoomer:!1,enableResize:!1,enableOrientation:!0}):new Croppie(g,{viewport:{width:150,height:150, +300,80,!0,!0);b.init()});g.className="geBtn";var k=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});k.className="geBtn";var l=mxUtils.button(mxResources.get("apply"),function(){mxSettings.setPlugins(e);mxSettings.save();a.hideDialog();a.alert(mxResources.get("restartForChangeRequired"))});l.className="geBtn gePrimaryBtn";var n=document.createElement("div");n.style.marginTop="14px";n.style.textAlign="right";var t=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000056430")}); +t.className="geBtn";a.isOffline()&&!mxClient.IS_CHROMEAPP&&(t.style.display="none");n.appendChild(t);a.editor.cancelFirst?(n.appendChild(k),n.appendChild(g),n.appendChild(l)):(n.appendChild(g),n.appendChild(l),n.appendChild(k));d.appendChild(n);this.container=d},CropImageDialog=function(a,c,d){function b(a){null!=k&&k.destroy();k=a?new Croppie(g,{viewport:{width:150,height:150,type:"circle"},enableExif:!0,showZoomer:!1,enableResize:!1,enableOrientation:!0}):new Croppie(g,{viewport:{width:150,height:150, type:"square"},enableExif:!0,showZoomer:!1,enableResize:!0,enableOrientation:!0});k.bind({url:c})}var e=document.createElement("div"),g=document.createElement("div");g.style.width="300px";g.style.height="300px";e.appendChild(g);var k=null;this.init=function(){b()};var l=document.createElement("input");l.setAttribute("type","checkbox");l.setAttribute("id","croppieCircle");l.style.margin="5px";e.appendChild(l);var n=document.createElement("label");n.setAttribute("for","croppieCircle");mxUtils.write(n, -mxResources.get("circle"));e.appendChild(n);var u,f,m,p,n=document.createElement("div");u=document.createElement("button");f=document.createElement("button");n.appendChild(u);n.appendChild(f);m=document.createElement("i");p=document.createElement("i");u.appendChild(m);f.appendChild(p);n.className="cr-rotate-controls";n.style["float"]="right";n.style.position="inherit";u.className="cr-rotate-l";f.className="cr-rotate-r";e.appendChild(n);u.addEventListener("click",function(){k.rotate(-90)});f.addEventListener("click", -function(){k.rotate(90)});mxEvent.addListener(l,"change",function(){b(this.checked)});l=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});l.className="geBtn";n=mxUtils.button(mxResources.get("apply"),function(){k.result({type:"base64",size:"original"}).then(function(b){d(b);a.hideDialog()})});n.className="geBtn gePrimaryBtn";u=document.createElement("div");u.style.marginTop="20px";u.style.textAlign="right";a.editor.cancelFirst?(u.appendChild(l),u.appendChild(n)):(u.appendChild(n), -u.appendChild(l));e.appendChild(u);this.container=e},EditGeometryDialog=function(a,c){var d=a.editor.graph,b=1==c.length?d.getCellGeometry(c[0]):null,e=document.createElement("div"),g=document.createElement("table"),k=document.createElement("tbody"),l=document.createElement("tr"),n=document.createElement("td"),u=document.createElement("td");g.style.paddingLeft="6px";mxUtils.write(n,mxResources.get("relative")+":");var f=document.createElement("input");f.setAttribute("type","checkbox");null!=b&&b.relative&& -(f.setAttribute("checked","checked"),f.defaultChecked=!0);this.init=function(){f.focus()};u.appendChild(f);l.appendChild(n);l.appendChild(u);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td");u=document.createElement("td");mxUtils.write(n,mxResources.get("left")+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.width="100px";m.value=null!=b?b.x:"";u.appendChild(m);l.appendChild(n);l.appendChild(u);k.appendChild(l);l=document.createElement("tr"); -n=document.createElement("td");u=document.createElement("td");mxUtils.write(n,mxResources.get("top")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.width="100px";p.value=null!=b?b.y:"";u.appendChild(p);l.appendChild(n);l.appendChild(u);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td");u=document.createElement("td");mxUtils.write(n,mxResources.get("dx")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.width= -"100px";t.value=null!=b&&null!=b.offset?b.offset.x:"";u.appendChild(t);l.appendChild(n);l.appendChild(u);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td");u=document.createElement("td");mxUtils.write(n,mxResources.get("dy")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value=null!=b&&null!=b.offset?b.offset.y:"";u.appendChild(v);l.appendChild(n);l.appendChild(u);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td"); -u=document.createElement("td");mxUtils.write(n,mxResources.get("width")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.width="100px";q.value=null!=b?b.width:"";u.appendChild(q);l.appendChild(n);l.appendChild(u);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td");u=document.createElement("td");mxUtils.write(n,mxResources.get("height")+":");var z=document.createElement("input");z.setAttribute("type","text");z.style.width="100px";z.value=null!= -b?b.height:"";u.appendChild(z);l.appendChild(n);l.appendChild(u);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td");u=document.createElement("td");mxUtils.write(n,mxResources.get("rotation")+":");var y=document.createElement("input");y.setAttribute("type","text");y.style.width="100px";y.value=1==c.length?mxUtils.getValue(d.getCellStyle(c[0]),mxConstants.STYLE_ROTATION,0):"";u.appendChild(y);l.appendChild(n);l.appendChild(u);k.appendChild(l);g.appendChild(k);e.appendChild(g); -b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});b.className="geBtn";var D=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();d.getModel().beginUpdate();try{for(var b=0;b<c.length;b++){var e=d.getCellGeometry(c[b]);null!=e&&(e=e.clone(),d.isCellMovable(c[b])&&(e.relative=f.checked,0<mxUtils.trim(m.value).length&&(e.x=Number(m.value)),0<mxUtils.trim(p.value).length&&(e.y=Number(p.value)),0<mxUtils.trim(t.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.x= -Number(t.value)),0<mxUtils.trim(v.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.y=Number(v.value))),d.isCellResizable(c[b])&&(0<mxUtils.trim(q.value).length&&(e.width=Number(q.value)),0<mxUtils.trim(z.value).length&&(e.height=Number(z.value))),d.getModel().setGeometry(c[b],e));0<mxUtils.trim(y.value).length&&d.setCellStyles(mxConstants.STYLE_ROTATION,Number(y.value),[c[b]])}}finally{d.getModel().endUpdate()}});D.className="geBtn gePrimaryBtn";mxEvent.addListener(e,"keypress",function(a){13== -a.keyCode&&D.click()});g=document.createElement("div");g.style.marginTop="20px";g.style.textAlign="right";a.editor.cancelFirst?(g.appendChild(b),g.appendChild(D)):(g.appendChild(D),g.appendChild(b));e.appendChild(g);this.container=e},LibraryDialog=function(a,c,d,b,e,g){function k(a){for(a=document.elementFromPoint(a.clientX,a.clientY);null!=a&&a.parentNode!=t;)a=a.parentNode;var b=null;if(null!=a)for(var c=t.firstChild,b=0;null!=c&&c!=a;)c=c.nextSibling,b++;return b}function l(b,c,d,m,p,e,g,n,A){try{if(a.spinner.stop(), -null==c||"image/"==c.substring(0,6))if(null==b&&null!=g||null==q[b]){var B=function(){E.innerHTML="";E.style.cursor="pointer";E.style.whiteSpace="nowrap";E.style.textOverflow="ellipsis";mxUtils.write(E,null!=J.title&&0<J.title.length?J.title:mxResources.get("untitled"));E.style.color=null==J.title||0==J.title.length?"#d0d0d0":""};t.style.backgroundImage="";v.style.display="none";var y=p,C=e;if(p>a.maxImageSize||e>a.maxImageSize){var I=Math.min(1,Math.min(a.maxImageSize/Math.max(1,p)),a.maxImageSize/ -Math.max(1,e));p*=I;e*=I}y>C?(C=Math.round(100*C/y),y=100):(y=Math.round(100*y/C),C=100);var G=document.createElement("div");G.setAttribute("draggable","true");G.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";G.style.position="relative";G.style.cursor="move";mxUtils.setPrefixedStyle(G.style,"transition","transform .1s ease-in-out");if(null!=b){var F=document.createElement("img");F.setAttribute("src",H.convert(b));F.style.width=y+"px";F.style.height=C+"px";F.style.margin="10px";F.style.paddingBottom= -Math.floor((100-C)/2)+"px";F.style.paddingLeft=Math.floor((100-y)/2)+"px";G.appendChild(F)}else if(null!=g){var u=a.stringToCells(Graph.decompress(g.xml));0<u.length&&(a.sidebar.createThumb(u,100,100,G,null,!0,!1),G.firstChild.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",G.firstChild.style.cursor="")}var K=document.createElement("img");K.setAttribute("src",Editor.closeImage);K.setAttribute("border","0");K.setAttribute("title",mxResources.get("delete"));K.setAttribute("align","top");K.style.paddingTop= -"4px";K.style.position="absolute";K.style.marginLeft="-12px";K.style.zIndex="1";K.style.cursor="pointer";mxEvent.addListener(K,"dragstart",function(a){mxEvent.consume(a)});(function(a,b,c){mxEvent.addListener(K,"click",function(d){q[b]=null;for(var m=0;m<f.length;m++)if(null!=f[m].data&&f[m].data==b||null!=f[m].xml&&null!=c&&f[m].xml==c.xml){f.splice(m,1);break}G.parentNode.removeChild(a);0==f.length&&(t.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",v.style.display="");mxEvent.consume(d)}); -mxEvent.addListener(K,"dblclick",function(a){mxEvent.consume(a)})})(G,b,g);G.appendChild(K);G.style.marginBottom="30px";var E=document.createElement("div");E.style.position="absolute";E.style.boxSizing="border-box";E.style.bottom="-18px";E.style.left="10px";E.style.right="10px";E.style.backgroundColor="#ffffff";E.style.overflow="hidden";E.style.textAlign="center";var J=null;null!=b?(J={data:b,w:p,h:e,title:A},null!=n&&(J.aspect=n),q[b]=F,f.push(J)):null!=g&&(g.aspect="fixed",f.push(g),J=g);mxEvent.addListener(E, -"keydown",function(a){13==a.keyCode&&null!=D&&(D(),D=null,mxEvent.consume(a))});B();G.appendChild(E);mxEvent.addListener(E,"mousedown",function(a){"true"!=E.getAttribute("contentEditable")&&mxEvent.consume(a)});u=function(b){if(mxClient.IS_IOS||mxClient.IS_QUIRKS||mxClient.IS_FF||!(null==document.documentMode||9<document.documentMode)){var c=new FilenameDialog(a,J.title||"",mxResources.get("ok"),function(a){null!=a&&(J.title=a,B())},mxResources.get("enterValue"));a.showDialog(c.container,300,80,!0, -!0);c.init();mxEvent.consume(b)}else if("true"!=E.getAttribute("contentEditable")){null!=D&&(D(),D=null);if(null==J.title||0==J.title.length)E.innerHTML="";E.style.textOverflow="";E.style.whiteSpace="";E.style.cursor="text";E.style.color="";E.setAttribute("contentEditable","true");mxUtils.setPrefixedStyle(E.style,"user-select","text");E.focus();document.execCommand("selectAll",!1,null);D=function(){E.removeAttribute("contentEditable");E.style.cursor="pointer";J.title=E.innerHTML;B()};mxEvent.consume(b)}}; -mxEvent.addListener(E,"click",u);mxEvent.addListener(G,"dblclick",u);t.appendChild(G);mxEvent.addListener(G,"dragstart",function(a){null==b&&null!=g&&(K.style.visibility="hidden",E.style.visibility="hidden");mxClient.IS_FF&&null!=g.xml&&a.dataTransfer.setData("Text",g.xml);z=k(a);mxClient.IS_GC&&(G.style.opacity="0.9");window.setTimeout(function(){mxUtils.setPrefixedStyle(G.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(G,30);K.style.visibility="";E.style.visibility=""},0)});mxEvent.addListener(G, -"dragend",function(a){"hidden"==K.style.visibility&&(K.style.visibility="",E.style.visibility="");z=null;mxUtils.setOpacity(G,100);mxUtils.setPrefixedStyle(G.style,"transform",null)})}else x||(x=!0,a.handleError({message:mxResources.get("fileExists")}));else{p=!1;try{if(y=mxUtils.parseXml(b),"mxlibrary"==y.documentElement.nodeName){C=JSON.parse(mxUtils.getTextContent(y.documentElement));if(null!=C&&0<C.length)for(var O=0;O<C.length;O++)null!=C[O].xml?l(null,null,0,0,0,0,C[O]):l(C[O].data,null,0,0, -C[O].w,C[O].h,null,"fixed",C[O].title);p=!0}else if("mxfile"==y.documentElement.nodeName){for(var R=y.documentElement.getElementsByTagName("diagram"),O=0;O<R.length;O++){var C=mxUtils.getTextContent(R[O]),u=a.stringToCells(Graph.decompress(C)),Z=a.editor.graph.getBoundingBoxFromGeometry(u);l(null,null,0,0,0,0,{xml:C,w:Z.width,h:Z.height})}p=!0}}catch(da){}p||(a.spinner.stop(),a.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(da){}return null}function n(a){a.dataTransfer.dropEffect= -null!=z?"move":"copy";a.stopPropagation();a.preventDefault()}function u(b){b.stopPropagation();b.preventDefault();x=!1;y=k(b);if(null!=z)null!=y&&y<t.children.length?(f.splice(y>z?y-1:y,0,f.splice(z,1)[0]),t.insertBefore(t.children[z],t.children[y])):(f.push(f.splice(z,1)[0]),t.appendChild(t.children[z]));else if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,A(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var c=decodeURIComponent(b.dataTransfer.getData("text/uri-list")); -(/(\.jpg)($|\?)/i.test(c)||/(\.png)($|\?)/i.test(c)||/(\.gif)($|\?)/i.test(c)||/(\.svg)($|\?)/i.test(c))&&a.loadImage(c,function(a){l(c,null,0,0,a.width,a.height);t.scrollTop=t.scrollHeight})}b.stopPropagation();b.preventDefault()}var f=[];d=document.createElement("div");d.style.height="100%";var m=document.createElement("div");m.style.whiteSpace="nowrap";m.style.height="40px";d.appendChild(m);mxUtils.write(m,mxResources.get("filename")+":");null==c&&(c=a.defaultLibraryName+".xml");var p=document.createElement("input"); -p.setAttribute("value",c);p.style.marginRight="20px";p.style.marginLeft="10px";p.style.width="500px";null==e||e.isRenamable()||p.setAttribute("disabled","true");this.init=function(){if(null==e||e.isRenamable())p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)};m.appendChild(p);var t=document.createElement("div");t.style.borderWidth="1px 0px 1px 0px";t.style.borderColor="#d3d3d3";t.style.borderStyle="solid";t.style.marginTop= -"6px";t.style.overflow="auto";t.style.height="340px";t.style.backgroundPosition="center center";t.style.backgroundRepeat="no-repeat";0==f.length&&Graph.fileSupport&&(t.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')");var v=document.createElement("div");v.style.position="absolute";v.style.width="640px";v.style.top="260px";v.style.textAlign="center";v.style.fontSize="22px";v.style.color="#a0c3ff";mxUtils.write(v,mxResources.get("dragImagesHere"));d.appendChild(v);var q={},z=null,y=null, -D=null;c=function(a){"true"!=mxEvent.getSource(a).getAttribute("contentEditable")&&null!=D&&(D(),D=null,mxEvent.consume(a))};mxEvent.addListener(t,"mousedown",c);mxEvent.addListener(t,"pointerdown",c);mxEvent.addListener(t,"touchstart",c);var H=new mxUrlConverter,x=!1;if(null!=b)for(c=0;c<b.length;c++)m=b[c],l(m.data,null,0,0,m.w,m.h,m,m.aspect,m.title);mxEvent.addListener(t,"dragleave",function(a){v.style.cursor="";for(var b=mxEvent.getSource(a);null!=b;){if(b==t||b==v){a.stopPropagation();a.preventDefault(); -break}b=b.parentNode}});var A=function(b){return function(c,d,f,m,p,e,g,q,k){null!=k&&(/(\.vsdx)($|\?)/i.test(k.name)||/(\.vssx)($|\?)/i.test(k.name))?a.importVisio(k,mxUtils.bind(this,function(a){l(a,d,f,m,p,e,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," "))})):null!=k&&!a.isOffline()&&(new XMLHttpRequest).upload&&a.isRemoteFileFormat(c,k.name)?a.parseFile(k,mxUtils.bind(this,function(c){4==c.readyState&&(a.spinner.stop(),200<=c.status&&299>=c.status&&(l(c.responseText, -d,f,m,p,e,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," ")),t.scrollTop=t.scrollHeight))})):(l(c,d,f,m,p,e,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," ")),t.scrollTop=t.scrollHeight)}};mxEvent.addListener(t,"dragover",n);mxEvent.addListener(t,"drop",u);mxEvent.addListener(v,"dragover",n);mxEvent.addListener(v,"drop",u);d.appendChild(t);b=document.createElement("div");b.style.textAlign="right";b.style.marginTop="20px"; +mxResources.get("circle"));e.appendChild(n);var t,f,m,p,n=document.createElement("div");t=document.createElement("button");f=document.createElement("button");n.appendChild(t);n.appendChild(f);m=document.createElement("i");p=document.createElement("i");t.appendChild(m);f.appendChild(p);n.className="cr-rotate-controls";n.style["float"]="right";n.style.position="inherit";t.className="cr-rotate-l";f.className="cr-rotate-r";e.appendChild(n);t.addEventListener("click",function(){k.rotate(-90)});f.addEventListener("click", +function(){k.rotate(90)});mxEvent.addListener(l,"change",function(){b(this.checked)});l=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});l.className="geBtn";n=mxUtils.button(mxResources.get("apply"),function(){k.result({type:"base64",size:"original"}).then(function(b){d(b);a.hideDialog()})});n.className="geBtn gePrimaryBtn";t=document.createElement("div");t.style.marginTop="20px";t.style.textAlign="right";a.editor.cancelFirst?(t.appendChild(l),t.appendChild(n)):(t.appendChild(n), +t.appendChild(l));e.appendChild(t);this.container=e},EditGeometryDialog=function(a,c){var d=a.editor.graph,b=1==c.length?d.getCellGeometry(c[0]):null,e=document.createElement("div"),g=document.createElement("table"),k=document.createElement("tbody"),l=document.createElement("tr"),n=document.createElement("td"),t=document.createElement("td");g.style.paddingLeft="6px";mxUtils.write(n,mxResources.get("relative")+":");var f=document.createElement("input");f.setAttribute("type","checkbox");null!=b&&b.relative&& +(f.setAttribute("checked","checked"),f.defaultChecked=!0);this.init=function(){f.focus()};t.appendChild(f);l.appendChild(n);l.appendChild(t);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td");t=document.createElement("td");mxUtils.write(n,mxResources.get("left")+":");var m=document.createElement("input");m.setAttribute("type","text");m.style.width="100px";m.value=null!=b?b.x:"";t.appendChild(m);l.appendChild(n);l.appendChild(t);k.appendChild(l);l=document.createElement("tr"); +n=document.createElement("td");t=document.createElement("td");mxUtils.write(n,mxResources.get("top")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.width="100px";p.value=null!=b?b.y:"";t.appendChild(p);l.appendChild(n);l.appendChild(t);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td");t=document.createElement("td");mxUtils.write(n,mxResources.get("dx")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.width= +"100px";u.value=null!=b&&null!=b.offset?b.offset.x:"";t.appendChild(u);l.appendChild(n);l.appendChild(t);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td");t=document.createElement("td");mxUtils.write(n,mxResources.get("dy")+":");var v=document.createElement("input");v.setAttribute("type","text");v.style.width="100px";v.value=null!=b&&null!=b.offset?b.offset.y:"";t.appendChild(v);l.appendChild(n);l.appendChild(t);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td"); +t=document.createElement("td");mxUtils.write(n,mxResources.get("width")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.width="100px";q.value=null!=b?b.width:"";t.appendChild(q);l.appendChild(n);l.appendChild(t);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td");t=document.createElement("td");mxUtils.write(n,mxResources.get("height")+":");var z=document.createElement("input");z.setAttribute("type","text");z.style.width="100px";z.value=null!= +b?b.height:"";t.appendChild(z);l.appendChild(n);l.appendChild(t);k.appendChild(l);l=document.createElement("tr");n=document.createElement("td");t=document.createElement("td");mxUtils.write(n,mxResources.get("rotation")+":");var x=document.createElement("input");x.setAttribute("type","text");x.style.width="100px";x.value=1==c.length?mxUtils.getValue(d.getCellStyle(c[0]),mxConstants.STYLE_ROTATION,0):"";t.appendChild(x);l.appendChild(n);l.appendChild(t);k.appendChild(l);g.appendChild(k);e.appendChild(g); +b=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});b.className="geBtn";var C=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();d.getModel().beginUpdate();try{for(var b=0;b<c.length;b++){var e=d.getCellGeometry(c[b]);null!=e&&(e=e.clone(),d.isCellMovable(c[b])&&(e.relative=f.checked,0<mxUtils.trim(m.value).length&&(e.x=Number(m.value)),0<mxUtils.trim(p.value).length&&(e.y=Number(p.value)),0<mxUtils.trim(u.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.x= +Number(u.value)),0<mxUtils.trim(v.value).length&&(null==e.offset&&(e.offset=new mxPoint),e.offset.y=Number(v.value))),d.isCellResizable(c[b])&&(0<mxUtils.trim(q.value).length&&(e.width=Number(q.value)),0<mxUtils.trim(z.value).length&&(e.height=Number(z.value))),d.getModel().setGeometry(c[b],e));0<mxUtils.trim(x.value).length&&d.setCellStyles(mxConstants.STYLE_ROTATION,Number(x.value),[c[b]])}}finally{d.getModel().endUpdate()}});C.className="geBtn gePrimaryBtn";mxEvent.addListener(e,"keypress",function(a){13== +a.keyCode&&C.click()});g=document.createElement("div");g.style.marginTop="20px";g.style.textAlign="right";a.editor.cancelFirst?(g.appendChild(b),g.appendChild(C)):(g.appendChild(C),g.appendChild(b));e.appendChild(g);this.container=e},LibraryDialog=function(a,c,d,b,e,g){function k(a){for(a=document.elementFromPoint(a.clientX,a.clientY);null!=a&&a.parentNode!=u;)a=a.parentNode;var b=null;if(null!=a)for(var c=u.firstChild,b=0;null!=c&&c!=a;)c=c.nextSibling,b++;return b}function l(b,c,d,m,p,e,g,n,B){try{if(a.spinner.stop(), +null==c||"image/"==c.substring(0,6))if(null==b&&null!=g||null==q[b]){var A=function(){E.innerHTML="";E.style.cursor="pointer";E.style.whiteSpace="nowrap";E.style.textOverflow="ellipsis";mxUtils.write(E,null!=J.title&&0<J.title.length?J.title:mxResources.get("untitled"));E.style.color=null==J.title||0==J.title.length?"#d0d0d0":""};u.style.backgroundImage="";v.style.display="none";var x=p,F=e;if(p>a.maxImageSize||e>a.maxImageSize){var D=Math.min(1,Math.min(a.maxImageSize/Math.max(1,p)),a.maxImageSize/ +Math.max(1,e));p*=D;e*=D}x>F?(F=Math.round(100*F/x),x=100):(x=Math.round(100*x/F),F=100);var I=document.createElement("div");I.setAttribute("draggable","true");I.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";I.style.position="relative";I.style.cursor="move";mxUtils.setPrefixedStyle(I.style,"transition","transform .1s ease-in-out");if(null!=b){var G=document.createElement("img");G.setAttribute("src",H.convert(b));G.style.width=x+"px";G.style.height=F+"px";G.style.margin="10px";G.style.paddingBottom= +Math.floor((100-F)/2)+"px";G.style.paddingLeft=Math.floor((100-x)/2)+"px";I.appendChild(G)}else if(null!=g){var t=a.stringToCells(Graph.decompress(g.xml));0<t.length&&(a.sidebar.createThumb(t,100,100,I,null,!0,!1),I.firstChild.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",I.firstChild.style.cursor="")}var K=document.createElement("img");K.setAttribute("src",Editor.closeImage);K.setAttribute("border","0");K.setAttribute("title",mxResources.get("delete"));K.setAttribute("align","top");K.style.paddingTop= +"4px";K.style.position="absolute";K.style.marginLeft="-12px";K.style.zIndex="1";K.style.cursor="pointer";mxEvent.addListener(K,"dragstart",function(a){mxEvent.consume(a)});(function(a,b,c){mxEvent.addListener(K,"click",function(d){q[b]=null;for(var m=0;m<f.length;m++)if(null!=f[m].data&&f[m].data==b||null!=f[m].xml&&null!=c&&f[m].xml==c.xml){f.splice(m,1);break}I.parentNode.removeChild(a);0==f.length&&(u.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')",v.style.display="");mxEvent.consume(d)}); +mxEvent.addListener(K,"dblclick",function(a){mxEvent.consume(a)})})(I,b,g);I.appendChild(K);I.style.marginBottom="30px";var E=document.createElement("div");E.style.position="absolute";E.style.boxSizing="border-box";E.style.bottom="-18px";E.style.left="10px";E.style.right="10px";E.style.backgroundColor="#ffffff";E.style.overflow="hidden";E.style.textAlign="center";var J=null;null!=b?(J={data:b,w:p,h:e,title:B},null!=n&&(J.aspect=n),q[b]=G,f.push(J)):null!=g&&(g.aspect="fixed",f.push(g),J=g);mxEvent.addListener(E, +"keydown",function(a){13==a.keyCode&&null!=C&&(C(),C=null,mxEvent.consume(a))});A();I.appendChild(E);mxEvent.addListener(E,"mousedown",function(a){"true"!=E.getAttribute("contentEditable")&&mxEvent.consume(a)});t=function(b){if(mxClient.IS_IOS||mxClient.IS_QUIRKS||mxClient.IS_FF||!(null==document.documentMode||9<document.documentMode)){var c=new FilenameDialog(a,J.title||"",mxResources.get("ok"),function(a){null!=a&&(J.title=a,A())},mxResources.get("enterValue"));a.showDialog(c.container,300,80,!0, +!0);c.init();mxEvent.consume(b)}else if("true"!=E.getAttribute("contentEditable")){null!=C&&(C(),C=null);if(null==J.title||0==J.title.length)E.innerHTML="";E.style.textOverflow="";E.style.whiteSpace="";E.style.cursor="text";E.style.color="";E.setAttribute("contentEditable","true");mxUtils.setPrefixedStyle(E.style,"user-select","text");E.focus();document.execCommand("selectAll",!1,null);C=function(){E.removeAttribute("contentEditable");E.style.cursor="pointer";J.title=E.innerHTML;A()};mxEvent.consume(b)}}; +mxEvent.addListener(E,"click",t);mxEvent.addListener(I,"dblclick",t);u.appendChild(I);mxEvent.addListener(I,"dragstart",function(a){null==b&&null!=g&&(K.style.visibility="hidden",E.style.visibility="hidden");mxClient.IS_FF&&null!=g.xml&&a.dataTransfer.setData("Text",g.xml);z=k(a);mxClient.IS_GC&&(I.style.opacity="0.9");window.setTimeout(function(){mxUtils.setPrefixedStyle(I.style,"transform","scale(0.5,0.5)");mxUtils.setOpacity(I,30);K.style.visibility="";E.style.visibility=""},0)});mxEvent.addListener(I, +"dragend",function(a){"hidden"==K.style.visibility&&(K.style.visibility="",E.style.visibility="");z=null;mxUtils.setOpacity(I,100);mxUtils.setPrefixedStyle(I.style,"transform",null)})}else y||(y=!0,a.handleError({message:mxResources.get("fileExists")}));else{p=!1;try{if(x=mxUtils.parseXml(b),"mxlibrary"==x.documentElement.nodeName){F=JSON.parse(mxUtils.getTextContent(x.documentElement));if(null!=F&&0<F.length)for(var O=0;O<F.length;O++)null!=F[O].xml?l(null,null,0,0,0,0,F[O]):l(F[O].data,null,0,0, +F[O].w,F[O].h,null,"fixed",F[O].title);p=!0}else if("mxfile"==x.documentElement.nodeName){for(var R=x.documentElement.getElementsByTagName("diagram"),O=0;O<R.length;O++){var F=mxUtils.getTextContent(R[O]),t=a.stringToCells(Graph.decompress(F)),Z=a.editor.graph.getBoundingBoxFromGeometry(t);l(null,null,0,0,0,0,{xml:F,w:Z.width,h:Z.height})}p=!0}}catch(da){}p||(a.spinner.stop(),a.handleError({message:mxResources.get("errorLoadingFile")}))}}catch(da){}return null}function n(a){a.dataTransfer.dropEffect= +null!=z?"move":"copy";a.stopPropagation();a.preventDefault()}function t(b){b.stopPropagation();b.preventDefault();y=!1;x=k(b);if(null!=z)null!=x&&x<u.children.length?(f.splice(x>z?x-1:x,0,f.splice(z,1)[0]),u.insertBefore(u.children[z],u.children[x])):(f.push(f.splice(z,1)[0]),u.appendChild(u.children[z]));else if(0<b.dataTransfer.files.length)a.importFiles(b.dataTransfer.files,0,0,a.maxImageSize,B(b));else if(0<=mxUtils.indexOf(b.dataTransfer.types,"text/uri-list")){var c=decodeURIComponent(b.dataTransfer.getData("text/uri-list")); +(/(\.jpg)($|\?)/i.test(c)||/(\.png)($|\?)/i.test(c)||/(\.gif)($|\?)/i.test(c)||/(\.svg)($|\?)/i.test(c))&&a.loadImage(c,function(a){l(c,null,0,0,a.width,a.height);u.scrollTop=u.scrollHeight})}b.stopPropagation();b.preventDefault()}var f=[];d=document.createElement("div");d.style.height="100%";var m=document.createElement("div");m.style.whiteSpace="nowrap";m.style.height="40px";d.appendChild(m);mxUtils.write(m,mxResources.get("filename")+":");null==c&&(c=a.defaultLibraryName+".xml");var p=document.createElement("input"); +p.setAttribute("value",c);p.style.marginRight="20px";p.style.marginLeft="10px";p.style.width="500px";null==e||e.isRenamable()||p.setAttribute("disabled","true");this.init=function(){if(null==e||e.isRenamable())p.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?p.select():document.execCommand("selectAll",!1,null)};m.appendChild(p);var u=document.createElement("div");u.style.borderWidth="1px 0px 1px 0px";u.style.borderColor="#d3d3d3";u.style.borderStyle="solid";u.style.marginTop= +"6px";u.style.overflow="auto";u.style.height="340px";u.style.backgroundPosition="center center";u.style.backgroundRepeat="no-repeat";0==f.length&&Graph.fileSupport&&(u.style.backgroundImage="url('"+IMAGE_PATH+"/droptarget.png')");var v=document.createElement("div");v.style.position="absolute";v.style.width="640px";v.style.top="260px";v.style.textAlign="center";v.style.fontSize="22px";v.style.color="#a0c3ff";mxUtils.write(v,mxResources.get("dragImagesHere"));d.appendChild(v);var q={},z=null,x=null, +C=null;c=function(a){"true"!=mxEvent.getSource(a).getAttribute("contentEditable")&&null!=C&&(C(),C=null,mxEvent.consume(a))};mxEvent.addListener(u,"mousedown",c);mxEvent.addListener(u,"pointerdown",c);mxEvent.addListener(u,"touchstart",c);var H=new mxUrlConverter,y=!1;if(null!=b)for(c=0;c<b.length;c++)m=b[c],l(m.data,null,0,0,m.w,m.h,m,m.aspect,m.title);mxEvent.addListener(u,"dragleave",function(a){v.style.cursor="";for(var b=mxEvent.getSource(a);null!=b;){if(b==u||b==v){a.stopPropagation();a.preventDefault(); +break}b=b.parentNode}});var B=function(b){return function(c,d,f,m,p,e,g,q,k){null!=k&&(/(\.vsdx)($|\?)/i.test(k.name)||/(\.vssx)($|\?)/i.test(k.name))?a.importVisio(k,mxUtils.bind(this,function(a){l(a,d,f,m,p,e,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," "))})):null!=k&&!a.isOffline()&&(new XMLHttpRequest).upload&&a.isRemoteFileFormat(c,k.name)?a.parseFile(k,mxUtils.bind(this,function(c){4==c.readyState&&(a.spinner.stop(),200<=c.status&&299>=c.status&&(l(c.responseText, +d,f,m,p,e,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," ")),u.scrollTop=u.scrollHeight))})):(l(c,d,f,m,p,e,g,"fixed",mxEvent.isAltDown(b)?null:g.substring(0,g.lastIndexOf(".")).replace(/_/g," ")),u.scrollTop=u.scrollHeight)}};mxEvent.addListener(u,"dragover",n);mxEvent.addListener(u,"drop",t);mxEvent.addListener(v,"dragover",n);mxEvent.addListener(v,"drop",t);d.appendChild(u);b=document.createElement("div");b.style.textAlign="right";b.style.marginTop="20px"; c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog(!0)});c.setAttribute("id","btnCancel");c.className="geBtn";a.editor.cancelFirst&&b.appendChild(c);m=mxUtils.button(mxResources.get("export"),function(){var b=a.createLibraryDataFromImages(f),c=p.value;/(\.xml)$/i.test(c)||(c+=".xml");a.isLocalFileSave()?a.saveLocalFile(b,c,"text/xml",null,null,!0):(new mxXmlRequest(SAVE_URL,"filename="+encodeURIComponent(c)+"&format=xml&xml="+encodeURIComponent(b))).simulate(document,"_blank")});m.setAttribute("id", -"btnDownload");m.className="geBtn";b.appendChild(m);if(Graph.fileSupport){if(null==a.libDlgFileInputElt){var C=document.createElement("input");C.setAttribute("multiple","multiple");C.setAttribute("type","file");mxEvent.addListener(C,"change",function(b){x=!1;a.importFiles(C.files,0,0,a.maxImageSize,function(a,c,d,f,m,p,e,g,q){null!=C.files&&(A(b)(a,c,d,f,m,p,e,g,q),C.type="",C.type="file",C.value="")});t.scrollTop=t.scrollHeight});C.style.display="none";document.body.appendChild(C);a.libDlgFileInputElt= -C}m=mxUtils.button(mxResources.get("import"),function(){null!=D&&(D(),D=null);a.libDlgFileInputElt.click()});m.setAttribute("id","btnAddImage");m.className="geBtn";b.appendChild(m)}m=mxUtils.button(mxResources.get("addImageUrl"),function(){null!=D&&(D(),D=null);a.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,c){x=!1;if(null!=a){if("data:image/"==a.substring(0,11)){var d=a.indexOf(",");0<d&&(a=a.substring(0,d)+";base64,"+a.substring(d+1))}l(a,null,0,0,b,c);t.scrollTop=t.scrollHeight}})}); -m.setAttribute("id","btnAddImageUrl");m.className="geBtn";b.appendChild(m);this.saveBtnClickHandler=function(b,c,d,f){a.saveLibrary(b,c,d,f)};m=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=D&&(D(),D=null);this.saveBtnClickHandler(p.value,f,e,g)}));m.setAttribute("id","btnSave");m.className="geBtn gePrimaryBtn";b.appendChild(m);a.editor.cancelFirst||b.appendChild(c);d.appendChild(b);this.container=d},EditShapeDialog=function(a,c,d,b,e){b=null!=b?b:300;e=null!=e?e:120;var g, -k,l=document.createElement("table"),n=document.createElement("tbody");l.style.cellPadding="4px";g=document.createElement("tr");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";mxUtils.write(k,d);g.appendChild(k);n.appendChild(g);g=document.createElement("tr");k=document.createElement("td");var u=document.createElement("textarea");u.style.outline="none";u.style.resize="none";u.style.width=b-200+"px";u.style.height=e+"px";this.textarea=u;this.init=function(){u.focus(); -u.scrollTop=0};k.appendChild(u);g.appendChild(k);k=document.createElement("td");d=document.createElement("div");d.style.position="relative";d.style.border="1px solid gray";d.style.top="6px";d.style.width="200px";d.style.height=e+4+"px";d.style.overflow="hidden";d.style.marginBottom="16px";mxEvent.disableContextMenu(d);k.appendChild(d);var f=new Graph(d);f.setEnabled(!1);var m=a.editor.graph.cloneCell(c);f.addCells([m]);d=f.view.getState(m);var p="";null!=d.shape&&null!=d.shape.stencil&&(p=mxUtils.getPrettyXml(d.shape.stencil.desc)); -mxUtils.write(u,p||"");d=f.getGraphBounds();e=Math.min(160/d.width,(e-40)/d.height);f.view.scaleAndTranslate(e,20/e-d.x,20/e-d.y);g.appendChild(k);n.appendChild(g);g=document.createElement("tr");k=document.createElement("td");k.setAttribute("colspan","2");k.style.paddingTop="2px";k.style.whiteSpace="nowrap";k.setAttribute("align","right");a.isOffline()||(e=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000052874")}),e.className="geBtn", -k.appendChild(e));e=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});e.className="geBtn";a.editor.cancelFirst&&k.appendChild(e);var t=function(b,c,d){var f=u.value,m=mxUtils.parseXml(f),f=mxUtils.getPrettyXml(m.documentElement),m=m.documentElement.getElementsByTagName("parsererror");if(null!=m&&0<m.length)a.showError(mxResources.get("error"),mxResources.get("containsValidationErrors"),mxResources.get("ok"));else if(d&&a.hideDialog(),m=!b.model.contains(c),!d||m||f!=p){f=Graph.compress(f); -b.getModel().beginUpdate();try{if(m){var e=a.editor.graph.getFreeInsertPoint();c.geometry.x=e.x;c.geometry.y=e.y;b.addCell(c)}b.setCellStyles(mxConstants.STYLE_SHAPE,"stencil("+f+")",[c])}catch(x){throw x;}finally{b.getModel().endUpdate()}m&&(b.setSelectionCell(c),b.scrollCellToVisible(c))}};d=mxUtils.button(mxResources.get("preview"),function(){t(f,m,!1)});d.className="geBtn";k.appendChild(d);d=mxUtils.button(mxResources.get("apply"),function(){t(a.editor.graph,c,!0)});d.className="geBtn gePrimaryBtn"; +"btnDownload");m.className="geBtn";b.appendChild(m);if(Graph.fileSupport){if(null==a.libDlgFileInputElt){var D=document.createElement("input");D.setAttribute("multiple","multiple");D.setAttribute("type","file");mxEvent.addListener(D,"change",function(b){y=!1;a.importFiles(D.files,0,0,a.maxImageSize,function(a,c,d,f,m,p,e,g,q){null!=D.files&&(B(b)(a,c,d,f,m,p,e,g,q),D.type="",D.type="file",D.value="")});u.scrollTop=u.scrollHeight});D.style.display="none";document.body.appendChild(D);a.libDlgFileInputElt= +D}m=mxUtils.button(mxResources.get("import"),function(){null!=C&&(C(),C=null);a.libDlgFileInputElt.click()});m.setAttribute("id","btnAddImage");m.className="geBtn";b.appendChild(m)}m=mxUtils.button(mxResources.get("addImageUrl"),function(){null!=C&&(C(),C=null);a.showImageDialog(mxResources.get("addImageUrl"),"",function(a,b,c){y=!1;if(null!=a){if("data:image/"==a.substring(0,11)){var d=a.indexOf(",");0<d&&(a=a.substring(0,d)+";base64,"+a.substring(d+1))}l(a,null,0,0,b,c);u.scrollTop=u.scrollHeight}})}); +m.setAttribute("id","btnAddImageUrl");m.className="geBtn";b.appendChild(m);this.saveBtnClickHandler=function(b,c,d,f){a.saveLibrary(b,c,d,f)};m=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(){null!=C&&(C(),C=null);this.saveBtnClickHandler(p.value,f,e,g)}));m.setAttribute("id","btnSave");m.className="geBtn gePrimaryBtn";b.appendChild(m);a.editor.cancelFirst||b.appendChild(c);d.appendChild(b);this.container=d},EditShapeDialog=function(a,c,d,b,e){b=null!=b?b:300;e=null!=e?e:120;var g, +k,l=document.createElement("table"),n=document.createElement("tbody");l.style.cellPadding="4px";g=document.createElement("tr");k=document.createElement("td");k.setAttribute("colspan","2");k.style.fontSize="10pt";mxUtils.write(k,d);g.appendChild(k);n.appendChild(g);g=document.createElement("tr");k=document.createElement("td");var t=document.createElement("textarea");t.style.outline="none";t.style.resize="none";t.style.width=b-200+"px";t.style.height=e+"px";this.textarea=t;this.init=function(){t.focus(); +t.scrollTop=0};k.appendChild(t);g.appendChild(k);k=document.createElement("td");d=document.createElement("div");d.style.position="relative";d.style.border="1px solid gray";d.style.top="6px";d.style.width="200px";d.style.height=e+4+"px";d.style.overflow="hidden";d.style.marginBottom="16px";mxEvent.disableContextMenu(d);k.appendChild(d);var f=new Graph(d);f.setEnabled(!1);var m=a.editor.graph.cloneCell(c);f.addCells([m]);d=f.view.getState(m);var p="";null!=d.shape&&null!=d.shape.stencil&&(p=mxUtils.getPrettyXml(d.shape.stencil.desc)); +mxUtils.write(t,p||"");d=f.getGraphBounds();e=Math.min(160/d.width,(e-40)/d.height);f.view.scaleAndTranslate(e,20/e-d.x,20/e-d.y);g.appendChild(k);n.appendChild(g);g=document.createElement("tr");k=document.createElement("td");k.setAttribute("colspan","2");k.style.paddingTop="2px";k.style.whiteSpace="nowrap";k.setAttribute("align","right");a.isOffline()||(e=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://desk.draw.io/support/solutions/articles/16000052874")}),e.className="geBtn", +k.appendChild(e));e=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});e.className="geBtn";a.editor.cancelFirst&&k.appendChild(e);var u=function(b,c,d){var f=t.value,m=mxUtils.parseXml(f),f=mxUtils.getPrettyXml(m.documentElement),m=m.documentElement.getElementsByTagName("parsererror");if(null!=m&&0<m.length)a.showError(mxResources.get("error"),mxResources.get("containsValidationErrors"),mxResources.get("ok"));else if(d&&a.hideDialog(),m=!b.model.contains(c),!d||m||f!=p){f=Graph.compress(f); +b.getModel().beginUpdate();try{if(m){var e=a.editor.graph.getFreeInsertPoint();c.geometry.x=e.x;c.geometry.y=e.y;b.addCell(c)}b.setCellStyles(mxConstants.STYLE_SHAPE,"stencil("+f+")",[c])}catch(y){throw y;}finally{b.getModel().endUpdate()}m&&(b.setSelectionCell(c),b.scrollCellToVisible(c))}};d=mxUtils.button(mxResources.get("preview"),function(){u(f,m,!1)});d.className="geBtn";k.appendChild(d);d=mxUtils.button(mxResources.get("apply"),function(){u(a.editor.graph,c,!0)});d.className="geBtn gePrimaryBtn"; k.appendChild(d);a.editor.cancelFirst||k.appendChild(e);g.appendChild(k);n.appendChild(g);l.appendChild(n);this.container=l},CustomDialog=function(a,c,d,b,e,g,k,l){var n=document.createElement("div");n.appendChild(c);c=document.createElement("div");c.style.marginTop="16px";c.style.textAlign="center";null!=k&&c.appendChild(k);a.isOffline()||null==g||(k=mxUtils.button(mxResources.get("help"),function(){a.openLink(g)}),k.className="geBtn",c.appendChild(k));k=mxUtils.button(mxResources.get("cancel"), function(){a.hideDialog();null!=b&&b()});k.className="geBtn";l&&(k.style.display="none");a.editor.cancelFirst&&c.appendChild(k);e=mxUtils.button(e||mxResources.get("ok"),function(){a.hideDialog();null!=d&&d()});c.appendChild(e);e.className="geBtn gePrimaryBtn";a.editor.cancelFirst||c.appendChild(k);n.appendChild(c);this.cancelBtn=k;this.okButton=e;this.container=n},TemplatesDialog=function(){var a='<div class="geTempDlgHeader"><img src="/images/draw.io-logo.svg" class="geTempDlgHeaderLogo"><input type="search" class="geTempDlgSearchBox" placeholder="'+ mxResources.get("search",null,"Search")+'"></div><div class="geTemplatesList"><div class="geTempDlgNewDiagramlbl">'+mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgHLine"></div><div class="geTemplatesLbl">'+mxResources.get("templates",null,"Templates")+'</div></div><div class="geTempDlgContent"><div class="geTempDlgNewDiagramCat"><div class="geTempDlgNewDiagramCatLbl">'+mxResources.get("newDiagram",null,"New Diagram")+'</div><div class="geTempDlgNewDiagramCatList"></div><div class="geTempDlgNewDiagramCatFooter"><div class="geTempDlgShowAllBtn">'+ @@ -8490,41 +8490,41 @@ mxResources.get("showAll",null,"+ Show all")+'</div></div></div><div class="geTe mxResources.get("allDiagrams",null,"All diagrams")+'</span></div><div class="geTempDlgSpacer"> </div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall geTempDlgRadioBtnActive" data-id="tilesBtn"><img src="/images/tiles-sel.svg" class="geTempDlgTilesBtnImg"></div><div class="geTempDlgRadioBtn geTempDlgRadioBtnSmall" data-id="listBtn"><img src="/images/list.svg" class="geTempDlgListBtnImg"></div></div></div><div class="geTempDlgDiagramsTiles"></div></div></div><br style="clear:both;"/><div class="geTempDlgFooter"><span class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramHint">🛈 '+ mxResources.get("linkToDiagramHint",null,"Add a link to this diagram. The diagram can only be edited from the page that owns it.")+'</span><button class="geTempDlgLinkToDiagram geTempDlgLinkToDiagramBtn">'+mxResources.get("linkToDiagram",null,"Link to Diagram")+'</button><div class="geTempDlgCreateBtn">'+mxResources.get("create",null,"Create")+'</div><div class="geTempDlgCancelBtn">'+mxResources.get("cancel",null,"Cancel")+"</div></div>",c=document.createElement("div");c.innerHTML=a;c.className="geTemplateDlg"; var a=window.innerWidth,d=window.innerHeight,b=987,e=712;.9*a<b&&(b=Math.max(.9*a,600),c.style.width=b+"px");.9*d<e&&(e=Math.max(.9*d,300),c.style.height=e+"px");this.width=b;this.height=e;this.container=c}; -TemplatesDialog.prototype.init=function(a,c,d,b,e,g,k,l,n,u){function f(){null!=I&&(I.style.fontWeight="normal",I.style.textDecoration="none",I=null)}function m(a,b,c,d,f,m,p){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";A.querySelector(".geTempDlgRadioBtn[data-id="+d+"]").className="geTempDlgRadioBtn "+(p?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");A.querySelector("."+b).src="/images/"+c+"-sel.svg";A.querySelector("."+f).src="/images/"+ -m+".svg";return!0}function p(a){function b(a){W.removeChild(d);A.removeChild(c);W.scrollTop=m}a=a.prevImgUrl||a.imgUrl||TEMPLATE_PATH+"/"+a.url.substring(0,a.url.length-4)+".png";var c=document.createElement("div");c.className="geTempDlgDialogMask";A.appendChild(c);var d=document.createElement("div");d.className="geTempDlgDiagramPreviewBox";var f=document.createElement("img");f.src=a;d.appendChild(f);a=document.createElement("img");a.src="/images/close.png";a.className="geTempDlgPreviewCloseBtn"; -a.setAttribute("title",mxResources.get("close"));d.appendChild(a);var m=W.scrollTop;mxEvent.addListener(a,"click",b);mxEvent.addListener(c,"click",b);W.appendChild(d);W.scrollTop=0;d.style.lineHeight=d.clientHeight+"px"}function t(a,b,c){if(null!=F){for(var d=F.className.split(" "),f=0;f<d.length;f++)if(-1<d[f].indexOf("Active")){d.splice(f,1);break}F.className=d.join(" ")}null!=a?(F=a,F.className+=" "+b,G=c,Y.className="geTempDlgCreateBtn"):(G=F=null,Y.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled")} -function v(b){if(null!=G){var d=G;G=null;Y.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";d.isExternal?(1==b?u(d.url,d,"nameInput.value"):n(d.url,d,"nameInput.value"),a.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+d.url,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(c(b.getText(),"nameInput.value"),a.hideDialog(!0))}))}}function q(a){a=a?"":"none";for(var b=A.querySelectorAll(".geTempDlgLinkToDiagram"),c=0;c<b.length;c++)b[c].style.display= -a}function z(a,b,c){function d(){Y.innerHTML=b?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));q(!b)}U.innerHTML="";t();O=a;var f=null;if(c){f=document.createElement("table");f.className="geTempDlgDiagramsListGrid";var m=document.createElement("tr"),e=document.createElement("th");e.style.width="50%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));m.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML= -mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));m.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));m.appendChild(e);f.appendChild(m);U.appendChild(f)}for(m=0;m<a.length;m++){a[m].isExternal=!b;var g=a[m].url,e=mxUtils.htmlEntities(a[m].title),k=a[m].tooltip||a[m].title,x=a[m].imgUrl,B=mxUtils.htmlEntities(a[m].changedBy||""),l=mxUtils.htmlEntities(a[m].lastModifiedOn|| -"");x||(x=TEMPLATE_PATH+"/"+g.substring(0,g.length-4)+".png");g=c?50:15;null!=e&&e.length>g&&(e=e.substring(0,g)+"…");if(c){var n=document.createElement("tr"),x=document.createElement("td"),A=document.createElement("img");A.src="/images/icon-search.svg";A.className="geTempDlgDiagramListPreviewBtn";A.setAttribute("title",mxResources.get("preview"));x.appendChild(A);k=document.createElement("span");k.className="geTempDlgDiagramTitle";k.innerHTML=e;x.appendChild(k);n.appendChild(x);x=document.createElement("td"); -x.innerHTML=B;n.appendChild(x);x=document.createElement("td");x.innerHTML=l;n.appendChild(x);f.appendChild(n);null==F&&(d(),t(n,"geTempDlgDiagramsListGridActive",a[m]));(function(a,b){mxEvent.addListener(n,"click",function(){F!=b&&(d(),t(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(n,"dblclick",v);mxEvent.addListener(A,"click",function(){p(a)})})(a[m],n)}else{var y=document.createElement("div");y.className="geTempDlgDiagramTile";y.setAttribute("title",k);null==F&&(d(),t(y,"geTempDlgDiagramTileActive", -a[m]));B=document.createElement("div");B.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var C=document.createElement("img");C.style.display="none";(function(a,b){C.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};C.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(C,B);C.src=x;B.appendChild(C);y.appendChild(B);B=document.createElement("div");B.className="geTempDlgDiagramTileLbl";B.innerHTML=null!=e?e:"";y.appendChild(B); -A=document.createElement("img");A.src="/images/icon-search.svg";A.className="geTempDlgDiagramPreviewBtn";A.setAttribute("title",mxResources.get("preview"));y.appendChild(A);(function(a,b){mxEvent.addListener(y,"click",function(){F!=b&&(d(),t(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(y,"dblclick",v);mxEvent.addListener(A,"click",function(){p(a)})})(a[m],y);U.appendChild(y)}}}function y(a,b){ba.innerHTML="";t();for(var c=!b&&5<a.length?5:a.length,d=0;d<c;d++){var f=a[d];f.isCategory= -!0;var m=document.createElement("div"),p=mxResources.get(f.title);null==p&&(p=f.title.substring(0,1).toUpperCase()+f.title.substring(1));m.className="geTempDlgNewDiagramCatItem";m.setAttribute("title",p);p=mxUtils.htmlEntities(p);15<p.length&&(p=p.substring(0,15)+"…");null==F&&(Y.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),q(),t(m,"geTempDlgNewDiagramCatItemActive",f));var e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemImg";var g=document.createElement("img"); -g.src=NEW_DIAGRAM_CATS_PATH+"/"+f.img;e.appendChild(g);m.appendChild(e);e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemLbl";e.innerHTML=p;m.appendChild(e);ba.appendChild(m);(function(a,b){mxEvent.addListener(m,"click",function(){F!=b&&(Y.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),q(),t(b,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(m,"dblclick",v)})(f,m)}X.style.display=5>a.length?"none":""}function D(a){var b=A.querySelector(".geTemplatesList"), -c;for(c in a){var d=document.createElement("div"),f=mxResources.get(c),m=a[c];null==f&&(f=c.substring(0,1).toUpperCase()+c.substring(1));d.className="geTemplateCatLink";d.setAttribute("title",f+" ("+m.length+")");f=mxUtils.htmlEntities(f);15<f.length&&(f=f.substring(0,15)+"…");d.innerHTML=f+" ("+m.length+")";b.appendChild(d);(function(b,c,f){mxEvent.addListener(d,"click",function(){I!=f&&(null!=I?(I.style.fontWeight="normal",I.style.textDecoration="none"):(fa.style.display="none",ga.style.minHeight= -"100%"),I=f,I.style.fontWeight="bold",I.style.textDecoration="underline",W.scrollTop=0,C&&(B=!0),L.innerHTML=c,V.style.display="none",z(a[b],!0))})})(c,f,d)}}function H(a){k&&(W.scrollTop=0,U.innerHTML="",aa.spin(U),B=!1,C=!0,L.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),R=null,k(M,a?null:g))}function x(a){f();W.scrollTop=0;U.innerHTML="";aa.spin(U);B=!1;C=!0;ea=null;L.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+' "'+ -mxUtils.htmlEntities(a)+'"';l(a,M,E?null:g);R=a}b=null!=b?b:TEMPLATE_PATH+"/index.xml";e=null!=e?e:NEW_DIAGRAM_CATS_PATH+"/index.xml";var A=this.container,C=!1,B=!1,I=null,F=null,G=null,J=!1,E=!0,K=!1,O=[],R,X=A.querySelector(".geTempDlgShowAllBtn"),U=A.querySelector(".geTempDlgDiagramsTiles"),L=A.querySelector(".geTempDlgDiagramsListTitle"),V=A.querySelector(".geTempDlgDiagramsListBtns"),W=A.querySelector(".geTempDlgContent"),ga=A.querySelector(".geTempDlgDiagramsList"),fa=A.querySelector(".geTempDlgNewDiagramCat"), -ba=A.querySelector(".geTempDlgNewDiagramCatList"),Y=A.querySelector(".geTempDlgCreateBtn"),aa=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(A.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){f();fa.style.display="";ga.style.minHeight="calc(100% - 280px)";H(E)});mxEvent.addListener(A.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){m(this,"geTempDlgAllDiagramsBtnImg", -"all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(E=!0,null==R?H(E):x(R))});mxEvent.addListener(A.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){m(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(E=!1,null==R?H(E):x(R))});mxEvent.addListener(A.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){m(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg", -"tiles",!1)&&(K=!0,z(O,!1,K))});mxEvent.addListener(A.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){m(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(K=!1,z(O,!1,K))});mxEvent.addListener(X,"click",function(){J?(fa.style.height="280px",ba.style.height="190px",X.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),y(da)):(fa.style.height="440px",ba.style.height="355px",X.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess", -null,"- Show less")),y(da,!0));J=!J});var P=!1,ca=!1,Z={},da=[],Q=1;mxUtils.get(b,function(a){if(!P){P=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var c=b.indexOf("/"),b=b.substring(0,c),c=Z[b];null==c&&(Q++,c=[],Z[b]=c);c.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),clibs:a.getAttribute("clibs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),imgUrl:a.getAttribute("imgUrl")})}}a= -a.nextSibling}D(Z)}});mxUtils.get(e,function(a){if(!ca){ca=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&da.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),clibs:a.getAttribute("clibs"),title:a.getAttribute("title")}),a=a.nextSibling;y(da)}});var M=function(a,b){V.style.display="";aa.stop();C=!1;B?B=!1:b?U.innerHTML=b:0==a.length?U.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")): -z(a,!1,K)};H(E);var ea=null;l&&mxEvent.addListener(A.querySelector(".geTempDlgSearchBox"),"keyup",function(a){var b=this;null!=ea&&clearTimeout(ea);13==a.keyCode?x(b.value):ea=setTimeout(function(){x(b.value)},500)});mxEvent.addListener(Y,"click",v);mxEvent.addListener(A.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){v(!0)});mxEvent.addListener(A.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=d&&d();a.hideDialog(!0)})}; +TemplatesDialog.prototype.init=function(a,c,d,b,e,g,k,l,n,t){function f(){null!=F&&(F.style.fontWeight="normal",F.style.textDecoration="none",F=null)}function m(a,b,c,d,f,m,p){if(-1<a.className.indexOf("geTempDlgRadioBtnActive"))return!1;a.className+=" geTempDlgRadioBtnActive";B.querySelector(".geTempDlgRadioBtn[data-id="+d+"]").className="geTempDlgRadioBtn "+(p?"geTempDlgRadioBtnLarge":"geTempDlgRadioBtnSmall");B.querySelector("."+b).src="/images/"+c+"-sel.svg";B.querySelector("."+f).src="/images/"+ +m+".svg";return!0}function p(a){function b(a){W.removeChild(d);B.removeChild(c);W.scrollTop=m}a=a.prevImgUrl||a.imgUrl||TEMPLATE_PATH+"/"+a.url.substring(0,a.url.length-4)+".png";var c=document.createElement("div");c.className="geTempDlgDialogMask";B.appendChild(c);var d=document.createElement("div");d.className="geTempDlgDiagramPreviewBox";var f=document.createElement("img");f.src=a;d.appendChild(f);a=document.createElement("img");a.src="/images/close.png";a.className="geTempDlgPreviewCloseBtn"; +a.setAttribute("title",mxResources.get("close"));d.appendChild(a);var m=W.scrollTop;mxEvent.addListener(a,"click",b);mxEvent.addListener(c,"click",b);W.appendChild(d);W.scrollTop=0;d.style.lineHeight=d.clientHeight+"px"}function u(a,b,c){if(null!=G){for(var d=G.className.split(" "),f=0;f<d.length;f++)if(-1<d[f].indexOf("Active")){d.splice(f,1);break}G.className=d.join(" ")}null!=a?(G=a,G.className+=" "+b,I=c,Y.className="geTempDlgCreateBtn"):(I=G=null,Y.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled")} +function v(b){if(null!=I){var d=I;I=null;Y.className="geTempDlgCreateBtn geTempDlgCreateBtnDisabled geTempDlgCreateBtnBusy";d.isExternal?(1==b?t(d.url,d,"nameInput.value"):n(d.url,d,"nameInput.value"),a.hideDialog(!0)):mxUtils.get(TEMPLATE_PATH+"/"+d.url,mxUtils.bind(this,function(b){200<=b.getStatus()&&299>=b.getStatus()&&(c(b.getText(),"nameInput.value"),a.hideDialog(!0))}))}}function q(a){a=a?"":"none";for(var b=B.querySelectorAll(".geTempDlgLinkToDiagram"),c=0;c<b.length;c++)b[c].style.display= +a}function z(a,b,c){function d(){Y.innerHTML=b?mxUtils.htmlEntities(mxResources.get("create")):mxUtils.htmlEntities(mxResources.get("copy"));q(!b)}U.innerHTML="";u();O=a;var f=null;if(c){f=document.createElement("table");f.className="geTempDlgDiagramsListGrid";var m=document.createElement("tr"),e=document.createElement("th");e.style.width="50%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("diagram",null,"Diagram"));m.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML= +mxUtils.htmlEntities(mxResources.get("changedBy",null,"Changed By"));m.appendChild(e);e=document.createElement("th");e.style.width="25%";e.innerHTML=mxUtils.htmlEntities(mxResources.get("lastModifiedOn",null,"Last modified on"));m.appendChild(e);f.appendChild(m);U.appendChild(f)}for(m=0;m<a.length;m++){a[m].isExternal=!b;var g=a[m].url,e=mxUtils.htmlEntities(a[m].title),k=a[m].tooltip||a[m].title,y=a[m].imgUrl,A=mxUtils.htmlEntities(a[m].changedBy||""),l=mxUtils.htmlEntities(a[m].lastModifiedOn|| +"");y||(y=TEMPLATE_PATH+"/"+g.substring(0,g.length-4)+".png");g=c?50:15;null!=e&&e.length>g&&(e=e.substring(0,g)+"…");if(c){var n=document.createElement("tr"),y=document.createElement("td"),B=document.createElement("img");B.src="/images/icon-search.svg";B.className="geTempDlgDiagramListPreviewBtn";B.setAttribute("title",mxResources.get("preview"));y.appendChild(B);k=document.createElement("span");k.className="geTempDlgDiagramTitle";k.innerHTML=e;y.appendChild(k);n.appendChild(y);y=document.createElement("td"); +y.innerHTML=A;n.appendChild(y);y=document.createElement("td");y.innerHTML=l;n.appendChild(y);f.appendChild(n);null==G&&(d(),u(n,"geTempDlgDiagramsListGridActive",a[m]));(function(a,b){mxEvent.addListener(n,"click",function(){G!=b&&(d(),u(b,"geTempDlgDiagramsListGridActive",a))});mxEvent.addListener(n,"dblclick",v);mxEvent.addListener(B,"click",function(){p(a)})})(a[m],n)}else{var x=document.createElement("div");x.className="geTempDlgDiagramTile";x.setAttribute("title",k);null==G&&(d(),u(x,"geTempDlgDiagramTileActive", +a[m]));A=document.createElement("div");A.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgLoading";var F=document.createElement("img");F.style.display="none";(function(a,b){F.onload=function(){b.className="geTempDlgDiagramTileImg";a.style.display=""};F.onerror=function(){b.className="geTempDlgDiagramTileImg geTempDlgDiagramTileImgError"}})(F,A);F.src=y;A.appendChild(F);x.appendChild(A);A=document.createElement("div");A.className="geTempDlgDiagramTileLbl";A.innerHTML=null!=e?e:"";x.appendChild(A); +B=document.createElement("img");B.src="/images/icon-search.svg";B.className="geTempDlgDiagramPreviewBtn";B.setAttribute("title",mxResources.get("preview"));x.appendChild(B);(function(a,b){mxEvent.addListener(x,"click",function(){G!=b&&(d(),u(b,"geTempDlgDiagramTileActive",a))});mxEvent.addListener(x,"dblclick",v);mxEvent.addListener(B,"click",function(){p(a)})})(a[m],x);U.appendChild(x)}}}function x(a,b){ba.innerHTML="";u();for(var c=!b&&5<a.length?5:a.length,d=0;d<c;d++){var f=a[d];f.isCategory= +!0;var m=document.createElement("div"),p=mxResources.get(f.title);null==p&&(p=f.title.substring(0,1).toUpperCase()+f.title.substring(1));m.className="geTempDlgNewDiagramCatItem";m.setAttribute("title",p);p=mxUtils.htmlEntities(p);15<p.length&&(p=p.substring(0,15)+"…");null==G&&(Y.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),q(),u(m,"geTempDlgNewDiagramCatItemActive",f));var e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemImg";var g=document.createElement("img"); +g.src=NEW_DIAGRAM_CATS_PATH+"/"+f.img;e.appendChild(g);m.appendChild(e);e=document.createElement("div");e.className="geTempDlgNewDiagramCatItemLbl";e.innerHTML=p;m.appendChild(e);ba.appendChild(m);(function(a,b){mxEvent.addListener(m,"click",function(){G!=b&&(Y.innerHTML=mxUtils.htmlEntities(mxResources.get("create")),q(),u(b,"geTempDlgNewDiagramCatItemActive",a))});mxEvent.addListener(m,"dblclick",v)})(f,m)}X.style.display=5>a.length?"none":""}function C(a){var b=B.querySelector(".geTemplatesList"), +c;for(c in a){var d=document.createElement("div"),f=mxResources.get(c),m=a[c];null==f&&(f=c.substring(0,1).toUpperCase()+c.substring(1));d.className="geTemplateCatLink";d.setAttribute("title",f+" ("+m.length+")");f=mxUtils.htmlEntities(f);15<f.length&&(f=f.substring(0,15)+"…");d.innerHTML=f+" ("+m.length+")";b.appendChild(d);(function(b,c,f){mxEvent.addListener(d,"click",function(){F!=f&&(null!=F?(F.style.fontWeight="normal",F.style.textDecoration="none"):(fa.style.display="none",ga.style.minHeight= +"100%"),F=f,F.style.fontWeight="bold",F.style.textDecoration="underline",W.scrollTop=0,D&&(A=!0),L.innerHTML=c,V.style.display="none",z(a[b],!0))})})(c,f,d)}}function H(a){k&&(W.scrollTop=0,U.innerHTML="",aa.spin(U),A=!1,D=!0,L.innerHTML=mxUtils.htmlEntities(mxResources.get("recentDiag",null,"Recent Diagrams")),R=null,k(M,a?null:g))}function y(a){f();W.scrollTop=0;U.innerHTML="";aa.spin(U);A=!1;D=!0;ea=null;L.innerHTML=mxUtils.htmlEntities(mxResources.get("searchResults",null,"Search Results"))+' "'+ +mxUtils.htmlEntities(a)+'"';l(a,M,E?null:g);R=a}b=null!=b?b:TEMPLATE_PATH+"/index.xml";e=null!=e?e:NEW_DIAGRAM_CATS_PATH+"/index.xml";var B=this.container,D=!1,A=!1,F=null,G=null,I=null,J=!1,E=!0,K=!1,O=[],R,X=B.querySelector(".geTempDlgShowAllBtn"),U=B.querySelector(".geTempDlgDiagramsTiles"),L=B.querySelector(".geTempDlgDiagramsListTitle"),V=B.querySelector(".geTempDlgDiagramsListBtns"),W=B.querySelector(".geTempDlgContent"),ga=B.querySelector(".geTempDlgDiagramsList"),fa=B.querySelector(".geTempDlgNewDiagramCat"), +ba=B.querySelector(".geTempDlgNewDiagramCatList"),Y=B.querySelector(".geTempDlgCreateBtn"),aa=new Spinner({lines:12,length:10,width:5,radius:10,rotate:0,color:"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"50px",zIndex:2E9});mxEvent.addListener(B.querySelector(".geTempDlgNewDiagramlbl"),"click",function(){f();fa.style.display="";ga.style.minHeight="calc(100% - 280px)";H(E)});mxEvent.addListener(B.querySelector(".geTempDlgRadioBtn[data-id=allDiagramsBtn]"),"click",function(){m(this,"geTempDlgAllDiagramsBtnImg", +"all-diagrams","myDiagramsBtn","geTempDlgMyDiagramsBtnImg","my-diagrams",!0)&&(E=!0,null==R?H(E):y(R))});mxEvent.addListener(B.querySelector(".geTempDlgRadioBtn[data-id=myDiagramsBtn]"),"click",function(){m(this,"geTempDlgMyDiagramsBtnImg","my-diagrams","allDiagramsBtn","geTempDlgAllDiagramsBtnImg","all-diagrams",!0)&&(E=!1,null==R?H(E):y(R))});mxEvent.addListener(B.querySelector(".geTempDlgRadioBtn[data-id=listBtn]"),"click",function(){m(this,"geTempDlgListBtnImg","list","tilesBtn","geTempDlgTilesBtnImg", +"tiles",!1)&&(K=!0,z(O,!1,K))});mxEvent.addListener(B.querySelector(".geTempDlgRadioBtn[data-id=tilesBtn]"),"click",function(){m(this,"geTempDlgTilesBtnImg","tiles","listBtn","geTempDlgListBtnImg","list",!1)&&(K=!1,z(O,!1,K))});mxEvent.addListener(X,"click",function(){J?(fa.style.height="280px",ba.style.height="190px",X.innerHTML=mxUtils.htmlEntities(mxResources.get("showAll",null,"+ Show all")),x(da)):(fa.style.height="440px",ba.style.height="355px",X.innerHTML=mxUtils.htmlEntities(mxResources.get("showLess", +null,"- Show less")),x(da,!0));J=!J});var P=!1,ca=!1,Z={},da=[],Q=1;mxUtils.get(b,function(a){if(!P){P=!0;for(a=a.getXml().documentElement.firstChild;null!=a;){if("undefined"!==typeof a.getAttribute){var b=a.getAttribute("url");if(null!=b){var c=b.indexOf("/"),b=b.substring(0,c),c=Z[b];null==c&&(Q++,c=[],Z[b]=c);c.push({url:a.getAttribute("url"),libs:a.getAttribute("libs"),clibs:a.getAttribute("clibs"),title:a.getAttribute("title"),tooltip:a.getAttribute("url"),imgUrl:a.getAttribute("imgUrl")})}}a= +a.nextSibling}C(Z)}});mxUtils.get(e,function(a){if(!ca){ca=!0;for(a=a.getXml().documentElement.firstChild;null!=a;)"undefined"!==typeof a.getAttribute&&null!=a.getAttribute("title")&&da.push({img:a.getAttribute("img"),libs:a.getAttribute("libs"),clibs:a.getAttribute("clibs"),title:a.getAttribute("title")}),a=a.nextSibling;x(da)}});var M=function(a,b){V.style.display="";aa.stop();D=!1;A?A=!1:b?U.innerHTML=b:0==a.length?U.innerHTML=mxUtils.htmlEntities(mxResources.get("noDiagrams",null,"No Diagrams Found")): +z(a,!1,K)};H(E);var ea=null;l&&mxEvent.addListener(B.querySelector(".geTempDlgSearchBox"),"keyup",function(a){var b=this;null!=ea&&clearTimeout(ea);13==a.keyCode?y(b.value):ea=setTimeout(function(){y(b.value)},500)});mxEvent.addListener(Y,"click",v);mxEvent.addListener(B.querySelector(".geTempDlgLinkToDiagramBtn"),"click",function(a){v(!0)});mxEvent.addListener(B.querySelector(".geTempDlgCancelBtn"),"click",function(){null!=d&&d();a.hideDialog(!0)})}; var BtnDialog=function(a,c,d,b){var e=document.createElement("div");e.style.textAlign="center";var g=document.createElement("p");g.style.fontSize="16pt";g.style.padding="0px";g.style.margin="0px";g.style.color="gray";mxUtils.write(g,mxResources.get("done"));var k="Unknown",l=document.createElement("img");l.setAttribute("border","0");l.setAttribute("align","absmiddle");l.style.marginRight="10px";c==a.drive?(k=mxResources.get("googleDrive"),l.src=IMAGE_PATH+"/google-drive-logo-white.svg"):c==a.dropbox? (k=mxResources.get("dropbox"),l.src=IMAGE_PATH+"/dropbox-logo-white.svg"):c==a.oneDrive?(k=mxResources.get("oneDrive"),l.src=IMAGE_PATH+"/onedrive-logo-white.svg"):c==a.gitHub?(k=mxResources.get("github"),l.src=IMAGE_PATH+"/github-logo-white.svg"):c==a.gitLab?(k=mxResources.get("gitlab"),l.src=IMAGE_PATH+"/gitlab-logo.svg"):c==a.trello&&(k=mxResources.get("trello"),l.src=IMAGE_PATH+"/trello-logo-white.svg");a=document.createElement("p");mxUtils.write(a,mxResources.get("authorizedIn",[k],"You are now authorized in {1}")); -d=mxUtils.button(d,b);d.insertBefore(l,d.firstChild);d.style.marginTop="6px";d.className="geBigButton";d.style.fontSize="18px";d.style.padding="14px";e.appendChild(g);e.appendChild(a);e.appendChild(d);this.container=e},FontDialog=function(a,c,d,b,e){function g(a){this.style.border="";13==a.keyCode&&D.click()}var k,l,n,u=document.createElement("table"),f=document.createElement("tbody");u.style.marginTop="8px";k=document.createElement("tr");l=document.createElement("td");l.colSpan=2;l.style.whiteSpace= +d=mxUtils.button(d,b);d.insertBefore(l,d.firstChild);d.style.marginTop="6px";d.className="geBigButton";d.style.fontSize="18px";d.style.padding="14px";e.appendChild(g);e.appendChild(a);e.appendChild(d);this.container=e},FontDialog=function(a,c,d,b,e){function g(a){this.style.border="";13==a.keyCode&&C.click()}var k,l,n,t=document.createElement("table"),f=document.createElement("tbody");t.style.marginTop="8px";k=document.createElement("tr");l=document.createElement("td");l.colSpan=2;l.style.whiteSpace= "nowrap";l.style.fontSize="10pt";l.style.fontWeight="bold";var m=document.createElement("input");m.style.cssText="margin-right:8px;margin-bottom:8px;";m.setAttribute("value","sysfonts");m.setAttribute("type","radio");m.setAttribute("name","current-fontdialog");m.setAttribute("id","fontdialog-sysfonts");l.appendChild(m);n=document.createElement("label");n.setAttribute("for","fontdialog-sysfonts");mxUtils.write(n,mxResources.get("sysFonts",null,"System Fonts"));l.appendChild(n);k.appendChild(l);f.appendChild(k); k=document.createElement("tr");l=document.createElement("td");l.style.whiteSpace="nowrap";l.style.fontSize="10pt";l.style.width="120px";l.style.paddingLeft="15px";mxUtils.write(l,mxResources.get("fontname",null,"Font Name")+":");k.appendChild(l);var p=document.createElement("input");"s"==b&&p.setAttribute("value",c);p.style.marginLeft="4px";p.style.width="250px";p.className="dlg_fontName_s";l=document.createElement("td");l.appendChild(p);k.appendChild(l);f.appendChild(k);k=document.createElement("tr"); -l=document.createElement("td");l.colSpan=2;l.style.whiteSpace="nowrap";l.style.fontSize="10pt";l.style.fontWeight="bold";var t=document.createElement("input");t.style.cssText="margin-right:8px;margin-bottom:8px;";t.setAttribute("value","googlefonts");t.setAttribute("type","radio");t.setAttribute("name","current-fontdialog");t.setAttribute("id","fontdialog-googlefonts");l.appendChild(t);n=document.createElement("label");n.setAttribute("for","fontdialog-googlefonts");mxUtils.write(n,mxResources.get("googleFonts", +l=document.createElement("td");l.colSpan=2;l.style.whiteSpace="nowrap";l.style.fontSize="10pt";l.style.fontWeight="bold";var u=document.createElement("input");u.style.cssText="margin-right:8px;margin-bottom:8px;";u.setAttribute("value","googlefonts");u.setAttribute("type","radio");u.setAttribute("name","current-fontdialog");u.setAttribute("id","fontdialog-googlefonts");l.appendChild(u);n=document.createElement("label");n.setAttribute("for","fontdialog-googlefonts");mxUtils.write(n,mxResources.get("googleFonts", null,"Google Fonts"));l.appendChild(n);k.appendChild(l);f.appendChild(k);k=document.createElement("tr");l=document.createElement("td");l.style.whiteSpace="nowrap";l.style.fontSize="10pt";l.style.width="120px";l.style.paddingLeft="15px";mxUtils.write(l,mxResources.get("fontname",null,"Font Name")+":");k.appendChild(l);var v=document.createElement("input");"g"==b&&v.setAttribute("value",c);v.style.marginLeft="4px";v.style.width="250px";v.className="dlg_fontName_g";l=document.createElement("td");l.appendChild(v); k.appendChild(l);f.appendChild(k);k=document.createElement("tr");l=document.createElement("td");l.colSpan=2;l.style.whiteSpace="nowrap";l.style.fontSize="10pt";l.style.fontWeight="bold";var q=document.createElement("input");q.style.cssText="margin-right:8px;margin-bottom:8px;";q.setAttribute("value","webfonts");q.setAttribute("type","radio");q.setAttribute("name","current-fontdialog");q.setAttribute("id","fontdialog-webfonts");l.appendChild(q);n=document.createElement("label");n.setAttribute("for", "fontdialog-webfonts");mxUtils.write(n,mxResources.get("webfonts",null,"Web Fonts"));l.appendChild(n);k.appendChild(l);f.appendChild(k);k=document.createElement("tr");l=document.createElement("td");l.style.whiteSpace="nowrap";l.style.fontSize="10pt";l.style.width="120px";l.style.paddingLeft="15px";mxUtils.write(l,mxResources.get("fontname",null,"Font Name")+":");k.appendChild(l);var z=document.createElement("input");"w"==b&&z.setAttribute("value",c);z.style.marginLeft="4px";z.style.width="250px"; -z.className="dlg_fontName_w";l=document.createElement("td");l.appendChild(z);k.appendChild(l);f.appendChild(k);k=document.createElement("tr");l=document.createElement("td");l.style.whiteSpace="nowrap";l.style.fontSize="10pt";l.style.width="120px";l.style.paddingLeft="15px";mxUtils.write(l,mxResources.get("fontUrl",null,"Font URL")+":");k.appendChild(l);var y=document.createElement("input");y.setAttribute("value",d||"");y.style.marginLeft="4px";y.style.width="250px";y.className="dlg_fontUrl";l=document.createElement("td"); -l.appendChild(y);k.appendChild(l);f.appendChild(k);this.init=function(){var a=p;"g"==b?a=v:"w"==b&&(a=z);a.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?a.select():document.execCommand("selectAll",!1,null)};k=document.createElement("tr");l=document.createElement("td");l.colSpan=2;l.style.paddingTop="20px";l.style.whiteSpace="nowrap";l.setAttribute("align","right");a.isOffline()||(c=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://www.diagrams.net/blog/external-fonts")}), -c.className="geBtn",l.appendChild(c));c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});c.className="geBtn";a.editor.cancelFirst&&l.appendChild(c);var D=mxUtils.button(mxResources.get("apply"),function(){var b,c,d;m.checked?(b=p.value,d="s"):t.checked?(b=v.value,c=Editor.GOOGLE_FONTS+encodeURIComponent(b).replace(/%20/g,"+"),d="g"):q.checked&&(b=z.value,c=y.value,d="w");var f;f=c;var g=d,k=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;null== -b||0==b.length?(u.querySelector(".dlg_fontName_"+g).style.border="1px solid red",f=!1):"w"!=g||k.test(f)?f=!0:(u.querySelector(".dlg_fontUrl").style.border="1px solid red",f=!1);f&&(e(b,c,d),a.hideDialog())});D.className="geBtn gePrimaryBtn";mxEvent.addListener(p,"keypress",g);mxEvent.addListener(v,"keypress",g);mxEvent.addListener(z,"keypress",g);mxEvent.addListener(y,"keypress",g);mxEvent.addListener(p,"focus",function(){m.setAttribute("checked","checked");m.checked=!0});mxEvent.addListener(v,"focus", -function(){t.setAttribute("checked","checked");t.checked=!0});mxEvent.addListener(z,"focus",function(){q.setAttribute("checked","checked");q.checked=!0});mxEvent.addListener(y,"focus",function(){q.setAttribute("checked","checked");q.checked=!0});l.appendChild(D);a.editor.cancelFirst||l.appendChild(c);k.appendChild(l);f.appendChild(k);u.appendChild(f);this.container=u}; +z.className="dlg_fontName_w";l=document.createElement("td");l.appendChild(z);k.appendChild(l);f.appendChild(k);k=document.createElement("tr");l=document.createElement("td");l.style.whiteSpace="nowrap";l.style.fontSize="10pt";l.style.width="120px";l.style.paddingLeft="15px";mxUtils.write(l,mxResources.get("fontUrl",null,"Font URL")+":");k.appendChild(l);var x=document.createElement("input");x.setAttribute("value",d||"");x.style.marginLeft="4px";x.style.width="250px";x.className="dlg_fontUrl";l=document.createElement("td"); +l.appendChild(x);k.appendChild(l);f.appendChild(k);this.init=function(){var a=p;"g"==b?a=v:"w"==b&&(a=z);a.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?a.select():document.execCommand("selectAll",!1,null)};k=document.createElement("tr");l=document.createElement("td");l.colSpan=2;l.style.paddingTop="20px";l.style.whiteSpace="nowrap";l.setAttribute("align","right");a.isOffline()||(c=mxUtils.button(mxResources.get("help"),function(){a.openLink("https://www.diagrams.net/blog/external-fonts")}), +c.className="geBtn",l.appendChild(c));c=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});c.className="geBtn";a.editor.cancelFirst&&l.appendChild(c);var C=mxUtils.button(mxResources.get("apply"),function(){var b,c,d;m.checked?(b=p.value,d="s"):u.checked?(b=v.value,c=Editor.GOOGLE_FONTS+encodeURIComponent(b).replace(/%20/g,"+"),d="g"):q.checked&&(b=z.value,c=x.value,d="w");var f;f=c;var g=d,k=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;null== +b||0==b.length?(t.querySelector(".dlg_fontName_"+g).style.border="1px solid red",f=!1):"w"!=g||k.test(f)?f=!0:(t.querySelector(".dlg_fontUrl").style.border="1px solid red",f=!1);f&&(e(b,c,d),a.hideDialog())});C.className="geBtn gePrimaryBtn";mxEvent.addListener(p,"keypress",g);mxEvent.addListener(v,"keypress",g);mxEvent.addListener(z,"keypress",g);mxEvent.addListener(x,"keypress",g);mxEvent.addListener(p,"focus",function(){m.setAttribute("checked","checked");m.checked=!0});mxEvent.addListener(v,"focus", +function(){u.setAttribute("checked","checked");u.checked=!0});mxEvent.addListener(z,"focus",function(){q.setAttribute("checked","checked");q.checked=!0});mxEvent.addListener(x,"focus",function(){q.setAttribute("checked","checked");q.checked=!0});l.appendChild(C);a.editor.cancelFirst||l.appendChild(c);k.appendChild(l);f.appendChild(k);t.appendChild(f);this.container=t}; function AspectDialog(a,c,d,b,e){this.aspect={pageId:c||a.pages[0].getId(),layerIds:d||[]};c=document.createElement("div");var g=document.createElement("h5");g.style.margin="0 0 10px";mxUtils.write(g,mxResources.get("pages"));c.appendChild(g);d=document.createElement("div");d.className="geAspectDlgList";c.appendChild(d);g=document.createElement("h5");g.style.margin="0 0 10px";mxUtils.write(g,mxResources.get("layers"));c.appendChild(g);g=document.createElement("div");g.className="geAspectDlgList"; c.appendChild(g);this.pagesContainer=d;this.layersContainer=g;this.ui=a;d=document.createElement("div");d.style.marginTop="16px";d.style.textAlign="center";g=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog();null!=e&&e()});g.className="geBtn";a.editor.cancelFirst&&d.appendChild(g);var k=mxUtils.button(mxResources.get("ok"),mxUtils.bind(this,function(){a.hideDialog();b({pageId:this.selectedPage,layerIds:Object.keys(this.selectedLayers)})}));d.appendChild(k);k.className="geBtn gePrimaryBtn"; a.editor.cancelFirst||d.appendChild(g);k.setAttribute("disabled","disabled");this.okBtn=k;c.appendChild(d);this.container=c}AspectDialog.prototype.init=function(){this.ui.getFileData(!0);for(var a=0;a<this.ui.pages.length;a++){var c=this.ui.updatePageRoot(this.ui.pages[a]);this.createPageItem(c.getId(),c.getName(),c.node,c.root)}}; @@ -8553,10 +8553,11 @@ type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal enumList:[{val:"visible",dispName:"Visible"},{val:"hidden",dispName:"Hidden"},{val:"fill",dispName:"Fill"},{val:"width",dispName:"Width"}]},{name:"noLabel",dispName:"Hide Label",type:"bool",defVal:!1},{name:"labelPadding",dispName:"Label Padding",type:"float",defVal:0},{name:"direction",dispName:"Direction",type:"enum",defVal:"east",enumList:[{val:"north",dispName:"North"},{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraint",dispName:"Constraint", type:"enum",defVal:"none",enumList:[{val:"none",dispName:"None"},{val:"north",dispName:"North"},{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraintRotation",dispName:"Rotate Constraint",type:"bool",defVal:!1},{name:"connectable",dispName:"Connectable",type:"bool",defVal:!0},{name:"allowArrows",dispName:"Allow Arrows",type:"bool",defVal:!0},{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"perimeter",dispName:"Perimeter", defVal:"none",type:"enum",enumList:[{val:"none",dispName:"None"},{val:"rectanglePerimeter",dispName:"Rectangle"},{val:"ellipsePerimeter",dispName:"Ellipse"},{val:"rhombusPerimeter",dispName:"Rhombus"},{val:"trianglePerimeter",dispName:"Triangle"},{val:"hexagonPerimeter2",dispName:"Hexagon"},{val:"lifelinePerimeter",dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter", -dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1.5,isVisible:function(a){return"1"==mxUtils.getValue(a.style,"comic","0")}},{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"collapsible",dispName:"Collapsible",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1},{name:"recursiveResize", -dispName:"Resize Children",type:"bool",defVal:!0},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(a,b){var c=0<a.vertices.length?b.editorUi.editor.graph.getCellGeometry(a.vertices[0]): -null;return null!=c&&!c.relative}},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving", -dispName:"Tree Moving",type:"bool",defVal:!1},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(a,b){return 0<a.vertices.length&&b.editorUi.editor.graph.isContainer(a.vertices[0])}}];Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## The label is concatenated in the form fromlabel + label + tolabel if all are defined.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle or a JSON string as used in Layout, Apply.\n## Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nEvan Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nRon Donovan,System Admin,rdo,Office 3,Evan Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nTessa Valet,HR Director,tva,Office 4,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\n'; +dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1.5,isVisible:function(a,b){return"1"==mxUtils.getValue(a.style,"comic","0")}},{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(a,b){return 1==a.vertices.length&&0==a.edges.length&& +0==b.editorUi.editor.graph.model.getChildCount(a.vertices[0])}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(a,b){var c=1==a.vertices.length&&0==a.edges.length?a.vertices[0]:null,d=b.editorUi.editor.graph;return null!=c&&(d.isContainer(c)&&"0"!=a.style.collapsible||!d.isContainer(c)&&"1"==a.style.collapsible)},isVisible:function(a,b){return 1==a.vertices.length&&0==a.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(a, +b){return 1==a.vertices.length&&0==a.edges.length&&!b.editorUi.editor.graph.isSwimlane(a.vertices[0])&&null==mxUtils.getValue(a.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label", +type:"bool",defVal:!1,isVisible:function(a,b){var c=0<a.vertices.length?b.editorUi.editor.graph.getCellGeometry(a.vertices[0]):null;return null!=c&&!c.relative}},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable", +dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(a,b){return 0<a.vertices.length&&b.editorUi.editor.graph.isContainer(a.vertices[0])}}];Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## The label is concatenated in the form fromlabel + label + tolabel if all are defined.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle or a JSON string as used in Layout, Apply.\n## Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nEvan Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nRon Donovan,System Admin,rdo,Office 3,Evan Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nTessa Valet,HR Director,tva,Office 4,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\n'; Editor.fastCompress=function(a){return null==a||0==a.length||"undefined"===typeof pako?a:pako.deflateRaw(a,{to:"string"})};Editor.fastDecompress=function(a){return null==a||0==a.length||"undefined"===typeof pako?a:pako.inflateRaw(a,{to:"string"})};Editor.extractGraphModel=function(a,b){if(null!=a&&"undefined"!==typeof pako){var c=a.ownerDocument.getElementsByTagName("div"),d=[];if(null!=c&&0<c.length)for(var f=0;f<c.length;f++)if("mxgraph"==c[f].getAttribute("class")){d.push(c[f]);break}0<d.length&& (c=d[0].getAttribute("data-mxgraph"),null!=c?(d=JSON.parse(c),null!=d&&null!=d.xml&&(d=mxUtils.parseXml(d.xml),a=d.documentElement)):(d=d[0].getElementsByTagName("div"),0<d.length&&(c=mxUtils.getTextContent(d[0]),c=Graph.decompress(c),0<c.length&&(d=mxUtils.parseXml(c),a=d.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(c=a.getAttribute("content"),null!=c&&"<"!=c.charAt(0)&&"%"!=c.charAt(0)&&(c=unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c)), null!=c&&0<c.length)a=mxUtils.parseXml(c).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||b||(d=null,"diagram"==a.nodeName?d=a:"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),0<c.length&&(d=c[Math.max(0,Math.min(c.length-1,urlParams.page||0))])),null!=d&&(a=Editor.parseDiagramNode(d)));null==a||"mxGraphModel"==a.nodeName||b&&"mxfile"==a.nodeName||(a=null);return a};Editor.parseDiagramNode=function(a){var b=mxUtils.trim(mxUtils.getTextContent(a)),c=null;0< @@ -8577,7 +8578,7 @@ Editor.prototype.setGraphXml=function(b){b=null!=b&&"mxlibrary"!=b.nodeName?this c.width,c.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==b.getAttribute("shadow"),!1);if(c=b.getAttribute("extFonts"))try{for(c=c.split("|").map(function(a){a=a.split("^");return{name:a[0],url:a[1]}}),d=0;d<c.length;d++)this.graph.addExtFont(c[d].name, c[d].url)}catch(J){console.log("ExtFonts format error: "+J.message)}}a.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var c=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(a){a=null!=a?a:!0;var b=c.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&b.setAttribute("style",this.graph.currentStyle);null!=this.graph.backgroundImage&&b.setAttribute("backgroundImage", JSON.stringify(this.graph.backgroundImage));b.setAttribute("math",this.graph.mathEnabled?"1":"0");b.setAttribute("shadow",this.graph.shadowVisible?"1":"0");if(null!=this.graph.extFonts&&0<this.graph.extFonts.length){var d=this.graph.extFonts.map(function(a){return a.name+"^"+a.url});b.setAttribute("extFonts",d.join("|"))}return b};Editor.prototype.isDataSvg=function(a){try{var b=mxUtils.parseXml(a).documentElement.getAttribute("content");if(null!=b&&(null!=b&&"<"!=b.charAt(0)&&"%"!=b.charAt(0)&&(b= -unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b)),null!=b&&0<b.length)){var c=mxUtils.parseXml(b).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(G){}return!1};Editor.prototype.extractGraphModel=function(a,b){return Editor.extractGraphModel.apply(this,arguments)};var d=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0= +unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b)),null!=b&&0<b.length)){var c=mxUtils.parseXml(b).documentElement;return"mxfile"==c.nodeName||"mxGraphModel"==c.nodeName}}catch(I){}return!1};Editor.prototype.extractGraphModel=function(a,b){return Editor.extractGraphModel.apply(this,arguments)};var d=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0= null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();d.apply(this,arguments)};var b=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){b.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject; this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(a,b){a=null!=a?a:DRAW_MATH_URL+"/MathJax.js?config=TeX-MML-AM_HTMLorMML";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(a){window.setTimeout(function(){"hidden"!=a.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,a])},0)};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(b|| {jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}});MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<Editor.mathJaxQueue.length;a++)Editor.doMathJaxRender(Editor.mathJaxQueue[a])})}};Editor.MathJaxRender=function(a){"undefined"!== @@ -8596,15 +8597,15 @@ f=0;f<a.length;f++)d[f]=String.fromCharCode(a[f]);d=d.join("")}m=null!=m?m:"data if("svg"==g||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==g||"embedded-opentype"==g||/(\.otf)($|\?)/i.test(a))b="application/x-font-opentype";else if("woff"==g||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==g||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==g||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==g||/(\.sfnt)($|\?)/i.test(a))b="application/font-sfnt";var c=a;/^https?:\/\//.test(c)&&!this.isCorsEnabledForUrl(c)&& (c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){f[a]=b;d--;m()}),mxUtils.bind(this,function(a){d--;m()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(b(c[p].substring(0,e)),g)}}else a()};Editor.prototype.addMathCss=function(a){a=a.getElementsByTagName("defs");if(null!=a&&0<a.length)for(var b=document.getElementsByTagName("style"),c=0;c<b.length;c++)0<mxUtils.getTextContent(b[c]).indexOf("MathJax")&&a[0].appendChild(b[c].cloneNode(!0))};Editor.prototype.addFontCss= function(a,b){b=null!=b?b:this.fontCss;if(null!=b){var c=a.getElementsByTagName("defs"),d=a.ownerDocument;0==c.length?(c=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"defs"):d.createElement("defs"),null!=a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)):c=c[0];d=null!=d.createElementNS?d.createElementNS(mxConstants.NS_SVG,"style"):d.createElement("style");d.setAttribute("type","text/css");mxUtils.setTextContent(d,b);c.appendChild(d)}};Editor.prototype.isExportToCanvas= -function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport&&(!this.graph.mathEnabled||!mxClient.IS_SF&&!((mxClient.IS_GC||mxClient.IS_EDGE)&&!mxClient.IS_MAC))};Editor.prototype.exportToCanvas=function(a,b,c,d,f,m,p,e,g,q,k,x,t,l){m=null!=m?m:!0;x=null!=x?x:this.graph;t=null!=t?t:0;var v=g?null:x.background;v==mxConstants.NONE&&(v=null);null==v&&(v=d);null==v&&0==g&&(v=this.graph.defaultPageBackgroundColor);this.convertImages(x.getSvg(v,null,null,l,null,null!=p?p:!0,null,null,null,q),mxUtils.bind(this, -function(c){var d=new Image;d.onload=mxUtils.bind(this,function(){try{var p=document.createElement("canvas"),g=parseInt(c.getAttribute("width")),q=parseInt(c.getAttribute("height"));e=null!=e?e:1;null!=b&&(e=m?Math.min(1,Math.min(3*b/(4*q),b/g)):b/g);g=Math.ceil(e*g)+2*t;q=Math.ceil(e*q)+2*t;p.setAttribute("width",g);p.setAttribute("height",q);var k=p.getContext("2d");null!=v&&(k.beginPath(),k.rect(0,0,g,q),k.fillStyle=v,k.fill());k.scale(e,e);mxClient.IS_SF?window.setTimeout(function(){k.drawImage(d, -t/e,t/e);a(p)},0):(k.drawImage(d,t/e,t/e),a(p))}catch(da){null!=f&&f(da)}});d.onerror=function(a){null!=f&&f(a)};try{q&&this.graph.addSvgShadow(c);var p=mxUtils.bind(this,function(){if(null!=this.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}x.mathEnabled&&this.addMathCss(c);d.src=this.createSvgDataUri(mxUtils.getXml(c))});this.loadFonts(p)}catch(aa){null!=f&&f(aa)}}),c,k)}; +function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport&&(!this.graph.mathEnabled||!mxClient.IS_SF&&!((mxClient.IS_GC||mxClient.IS_EDGE)&&!mxClient.IS_MAC))};Editor.prototype.exportToCanvas=function(a,b,c,d,f,m,p,e,g,q,k,y,u,l){m=null!=m?m:!0;y=null!=y?y:this.graph;u=null!=u?u:0;var v=g?null:y.background;v==mxConstants.NONE&&(v=null);null==v&&(v=d);null==v&&0==g&&(v=this.graph.defaultPageBackgroundColor);this.convertImages(y.getSvg(v,null,null,l,null,null!=p?p:!0,null,null,null,q),mxUtils.bind(this, +function(c){var d=new Image;d.onload=mxUtils.bind(this,function(){try{var p=document.createElement("canvas"),g=parseInt(c.getAttribute("width")),q=parseInt(c.getAttribute("height"));e=null!=e?e:1;null!=b&&(e=m?Math.min(1,Math.min(3*b/(4*q),b/g)):b/g);g=Math.ceil(e*g)+2*u;q=Math.ceil(e*q)+2*u;p.setAttribute("width",g);p.setAttribute("height",q);var k=p.getContext("2d");null!=v&&(k.beginPath(),k.rect(0,0,g,q),k.fillStyle=v,k.fill());k.scale(e,e);mxClient.IS_SF?window.setTimeout(function(){k.drawImage(d, +u/e,u/e);a(p)},0):(k.drawImage(d,u/e,u/e),a(p))}catch(da){null!=f&&f(da)}});d.onerror=function(a){null!=f&&f(a)};try{q&&this.graph.addSvgShadow(c);var p=mxUtils.bind(this,function(){if(null!=this.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.resolvedFontCss;c.getElementsByTagName("defs")[0].appendChild(a)}y.mathEnabled&&this.addMathCss(c);d.src=this.createSvgDataUri(mxUtils.getXml(c))});this.loadFonts(p)}catch(aa){null!=f&&f(aa)}}),c,k)}; Editor.prototype.writeGraphModelToPng=function(a,b,c,d,f){function m(a,b){var c=g;g+=b;return a.substring(c,g)}function p(a){a=m(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function e(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var g=0;if(m(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=f&&f();else if(m(a,4),"IHDR"!=m(a,4))null!= f&&f();else{m(a,17);f=a.substring(0,g);do{var q=p(a);if("IDAT"==m(a,4)){f=a.substring(0,g-8);c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+d;d=4294967295;d=EditorUi.prototype.updateCRC(d,b,0,4);d=EditorUi.prototype.updateCRC(d,c,0,c.length);f+=e(c.length)+b+c+e(d^4294967295);f+=a.substring(g-8,a.length);break}f+=a.substring(g-8,g-4+q);m(a,q);m(a,4)}while(q);return"data:image/png;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink= "https://desk.draw.io/support/solutions/articles/16000091426";var e=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,b){e.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var g=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){g.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,b){var c=null;null!=a.editor.graph.getModel().getParent(b)? c=b.getId():null!=a.currentPage&&(c=a.currentPage.getId());return c});if(null!=window.StyleFormatPanel){var k=Format.prototype.init;Format.prototype.init=function(){k.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var l=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?l.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a= this.editorUi.getCurrentFile();return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var n=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(a){a=n.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var b=this.editorUi,c=b.editor.graph,d=this.createOption(mxResources.get("shadow"),function(){return c.shadowVisible},function(a){var d=new ChangePageSetup(b); -d.ignoreColor=!0;d.ignoreImage=!0;d.shadowVisible=a;c.model.execute(d)},{install:function(a){this.listener=function(){a(c.shadowVisible)};b.addListener("shadowVisibleChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});Editor.shadowOptionEnabled||(d.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(d,60));a.appendChild(d)}return a};var u=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=u.apply(this, +d.ignoreColor=!0;d.ignoreImage=!0;d.shadowVisible=a;c.model.execute(d)},{install:function(a){this.listener=function(){a(c.shadowVisible)};b.addListener("shadowVisibleChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});Editor.shadowOptionEnabled||(d.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(d,60));a.appendChild(d)}return a};var t=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=t.apply(this, arguments);var b=this.editorUi,c=b.editor.graph;if(c.isEnabled()){var d=b.getCurrentFile();if(null!=d&&d.isAutosaveOptional()){var f=this.createOption(mxResources.get("autosave"),function(){return b.editor.autosave},function(a){b.editor.setAutosave(a);b.editor.autosave&&d.isModified()&&d.fileChanged()},{install:function(a){this.listener=function(){a(b.editor.autosave)};b.editor.addListener("autosaveChanged",this.listener)},destroy:function(){b.editor.removeListener(this.listener)}});a.appendChild(f)}}if(this.isMathOptionVisible()&& c.isEnabled()&&"undefined"!==typeof MathJax){f=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return c.mathEnabled},function(a){b.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(c.mathEnabled)};b.addListener("mathEnabledChanged",this.listener)},destroy:function(){b.removeListener(this.listener)}});f.style.paddingTop="5px";a.appendChild(f);var m=b.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875"); m.style.position="relative";m.style.marginLeft="6px";m.style.top="2px";f.appendChild(m)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties= @@ -8632,28 +8633,28 @@ null;StyleFormatPanel.prototype.findCommonProperties=function(a,b,c){if(null!=b) Editor.commonVertexProperties):Array.prototype.push.apply(f.shape.customProperties,Editor.commonEdgeProperties)),d(f.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{d(JSON.parse(a))}catch(E){}}};var f=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"==a.style.shape||a.containsLabel||this.container.appendChild(this.addStyles(this.createPanel()));f.apply(this,arguments);if(Editor.enableCustomProperties){for(var b= {},c=a.vertices,d=a.edges,m=0;m<c.length;m++)this.findCommonProperties(c[m],b,0==m);for(m=0;m<d.length;m++)this.findCommonProperties(d[m],b,0==c.length&&0==m);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var m=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var b=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("copyStyle").funct()})); b.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";b.style.marginRight="2px";a.appendChild(b);b=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));b.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")");b.style.marginBottom="2px";b.style.width="100px";a.appendChild(b); -mxUtils.br(a);return m.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,b,c){function d(a,b,c,d){x.getModel().beginUpdate();try{var f=[],m=[];if(null!=c.index){for(var p=[],e=c.parentRow.nextSibling;e&&e.getAttribute("data-pName")==a;)p.push(e.getAttribute("data-pValue")),e=e.nextSibling;c.index<p.length?null!=d?p.splice(d,1):p[c.index]=b:p.push(b);null!=c.size&&p.length>c.size&&(p=p.slice(0,c.size));b=p.join(",");null!=c.countProperty&& -(x.setCellStyles(c.countProperty,p.length,x.getSelectionCells()),f.push(c.countProperty),m.push(p.length))}x.setCellStyles(a,b,x.getSelectionCells());f.push(a);m.push(b);if(null!=c.dependentProps)for(a=0;a<c.dependentProps.length;a++){var g=c.dependentPropsDefVal[a],q=c.dependentPropsVals[a];if(q.length>b)q=q.slice(0,b);else for(var t=q.length;t<b;t++)q.push(g);q=q.join(",");x.setCellStyles(c.dependentProps[a],q,x.getSelectionCells());f.push(c.dependentProps[a]);m.push(q)}if("function"==typeof c.onChange)c.onChange(x, -b);k.editorUi.fireEvent(new mxEventObject("styleChanged","keys",f,"values",m,"cells",x.getSelectionCells()))}finally{x.getModel().endUpdate()}}function f(b,c,d){var f=mxUtils.getOffset(a,!0),m=mxUtils.getOffset(b,!0);c.style.position="absolute";c.style.left=m.x-f.x+"px";c.style.top=m.y-f.y+"px";c.style.width=b.offsetWidth+"px";c.style.height=b.offsetHeight-(d?4:0)+"px";c.style.zIndex=5}function m(a,b,c){var f=document.createElement("div");f.style.width="32px";f.style.height="4px";f.style.margin="2px"; -f.style.border="1px solid black";f.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(k,function(m){this.editorUi.pickColor(b,function(b){f.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;d(a,b,c)});mxEvent.consume(m)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(f);return btn}function p(a,b,c,f,m,p,e){null!=b&&(b=b.split(","),t.push({name:a,values:b,type:c,defVal:f,countProperty:m, -parentRow:p,isDeletable:!0,flipBkg:e}));btn=mxUtils.button("+",mxUtils.bind(k,function(b){for(var g=p,k=0;null!=g.nextSibling;)if(g.nextSibling.getAttribute("data-pName")==a)g=g.nextSibling,k++;else break;var x={type:c,parentRow:p,index:k,isDeletable:!0,defVal:f,countProperty:m},k=q(a,"",x,0==k%2,e);d(a,f,x);g.parentNode.insertBefore(k,g.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function e(a,b,c,d,f,m,p){if(0<f){var e=Array(f); -b=null!=b?b.split(","):[];for(var g=0;g<f;g++)e[g]=null!=b[g]?b[g]:null!=d?d:"";t.push({name:a,values:e,type:c,defVal:d,parentRow:m,flipBkg:p,size:f})}return document.createElement("div")}function g(a,b,c){var f=document.createElement("input");f.type="checkbox";f.checked="1"==b;mxEvent.addListener(f,"change",function(){d(a,f.checked?"1":"0",c)});return f}function q(b,c,q,x,t){var v=q.dispName,l=q.type,n=document.createElement("tr");n.className="gePropRow"+(t?"Dark":"")+(x?"Alt":"")+" gePropNonHeaderRow"; -n.setAttribute("data-pName",b);n.setAttribute("data-pValue",c);x=!1;null!=q.index&&(n.setAttribute("data-index",q.index),v=(null!=v?v:"")+"["+q.index+"]",x=!0);var A=document.createElement("td");A.className="gePropRowCell";A.innerHTML=mxUtils.htmlEntities(mxResources.get(v,null,v));x&&(A.style.textAlign="right");n.appendChild(A);A=document.createElement("td");A.className="gePropRowCell";if("color"==l)A.appendChild(m(b,c,q));else if("bool"==l||"boolean"==l)A.appendChild(g(b,c,q));else if("enum"==l){var y= -q.enumList;for(t=0;t<y.length;t++)if(v=y[t],v.val==c){A.innerHTML=mxUtils.htmlEntities(mxResources.get(v.dispName,null,v.dispName));break}mxEvent.addListener(A,"click",mxUtils.bind(k,function(){var m=document.createElement("select");f(A,m);for(var p=0;p<y.length;p++){var e=y[p],g=document.createElement("option");g.value=mxUtils.htmlEntities(e.val);g.innerHTML=mxUtils.htmlEntities(mxResources.get(e.dispName,null,e.dispName));m.appendChild(g)}m.value=c;a.appendChild(m);mxEvent.addListener(m,"change", -function(){var a=mxUtils.htmlEntities(m.value);d(b,a,q)});m.focus();mxEvent.addListener(m,"blur",function(){a.removeChild(m)})}))}else"dynamicArr"==l?A.appendChild(p(b,c,q.subType,q.subDefVal,q.countProperty,n,t)):"staticArr"==l?A.appendChild(e(b,c,q.subType,q.subDefVal,q.size,n,t)):(A.innerHTML=c,mxEvent.addListener(A,"click",mxUtils.bind(k,function(){function m(){var a=p.value,a=0==a.length&&"string"!=l?0:a;q.allowAuto&&(null!=a.trim&&"auto"==a.trim().toLowerCase()?(a="auto",l="string"):(a=parseFloat(a), -a=isNaN(a)?0:a));null!=q.min&&a<q.min?a=q.min:null!=q.max&&a>q.max&&(a=q.max);a=mxUtils.htmlEntities(("int"==l?parseInt(a):a)+"");d(b,a,q)}var p=document.createElement("input");f(A,p,!0);p.value=c;p.className="gePropEditor";"int"!=l&&"float"!=l||q.allowAuto||(p.type="number",p.step="int"==l?"1":"any",null!=q.min&&(p.min=parseFloat(q.min)),null!=q.max&&(p.max=parseFloat(q.max)));a.appendChild(p);mxEvent.addListener(p,"keypress",function(a){13==a.keyCode&&m()});p.focus();mxEvent.addListener(p,"blur", -function(){m()})})));q.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(k,function(a){d(b,"",q,q.index);mxEvent.consume(a)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",A.appendChild(t));n.appendChild(A);return n}var k=this,x=this.editorUi.editor.graph,t=[];a.style.position="relative";a.style.padding="0";var l=document.createElement("table");l.style.whiteSpace="nowrap";l.style.width="100%";var v=document.createElement("tr");v.className="gePropHeader"; -var n=document.createElement("th");n.className="gePropHeaderCell";var A=document.createElement("img");A.src=Sidebar.prototype.expandedImage;n.appendChild(A);mxUtils.write(n,mxResources.get("property"));v.style.cursor="pointer";var y=function(){var b=l.querySelectorAll(".gePropNonHeaderRow"),c;if(k.editorUi.propertiesCollapsed){A.src=Sidebar.prototype.collapsedImage;c="none";for(var d=a.childNodes.length-1;0<=d;d--)try{var f=a.childNodes[d],m=f.nodeName.toUpperCase();"INPUT"!=m&&"SELECT"!=m||a.removeChild(f)}catch(ka){}}else A.src= -Sidebar.prototype.expandedImage,c="";for(d=0;d<b.length;d++)b[d].style.display=c};mxEvent.addListener(v,"click",function(){k.editorUi.propertiesCollapsed=!k.editorUi.propertiesCollapsed;y()});v.appendChild(n);n=document.createElement("th");n.className="gePropHeaderCell";n.innerHTML=mxResources.get("value");v.appendChild(n);l.appendChild(v);var C=!1,z=!1,B;for(B in b)if(v=b[B],"function"!=typeof v.isVisible||v.isVisible(c,this)){var D=null!=c.style[B]?mxUtils.htmlEntities(c.style[B]+""):v.defVal;if("separator"== -v.type)z=!z;else{if("staticArr"==v.type)v.size=parseInt(c.style[v.sizeProperty]||b[v.sizeProperty].defVal)||0;else if(null!=v.dependentProps){for(var u=v.dependentProps,I=[],H=[],n=0;n<u.length;n++){var F=c.style[u[n]];H.push(b[u[n]].subDefVal);I.push(null!=F?F.split(","):[])}v.dependentPropsDefVal=H;v.dependentPropsVals=I}l.appendChild(q(B,D,v,C,z));C=!C}}for(n=0;n<t.length;n++)for(v=t[n],b=v.parentRow,c=0;c<v.values.length;c++)B=q(v.name,v.values[c],{type:v.type,parentRow:v.parentRow,isDeletable:v.isDeletable, -index:c,defVal:v.defVal,countProperty:v.countProperty,size:v.size},0==c%2,v.flipBkg),b.parentNode.insertBefore(B,b.nextSibling),b=B;a.appendChild(l);y();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){d.getModel().beginUpdate();try{var c=d.getSelectionCells();for(b=0;b<c.length;b++){for(var f=d.getModel().getStyle(c[b]),p=0;p<m.length;p++)f=mxUtils.removeStylename(f,m[p]);var e=d.getModel().isVertex(c[b])?d.defaultVertexStyle: -d.defaultEdgeStyle;null!=a?(f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),f=""==a.fill?mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,null)),f=""==a.stroke?mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR, -null)),d.getModel().isVertex(c[b])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null)))):(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,"#ffffff")),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,"#000000")),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),d.getModel().isVertex(c[b])&& -(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null))));d.getModel().setStyle(c[b],f)}}finally{d.getModel().endUpdate()}});b.className="geStyleButton";b.style.width="36px";b.style.height="30px";b.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?b.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)": -b.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor=""==a.fill?mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"):a.fill||mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"),b.style.border=a.stroke==mxConstants.NONE?"1px solid transparent":""==a.stroke?"1px solid "+ -mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"):"1px solid "+(a.stroke||mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"));else{var c=mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),p=mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");b.style.backgroundColor=c;b.style.border="1px solid "+p}f.appendChild(b)}f.innerHTML="";for(var c= -0;c<a.length;c++)0<c&&0==mxUtils.mod(c,4)&&mxUtils.br(f),b(a[c])}function c(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var d=this.editorUi.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.paddingLeft="24px";f.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(f);var m="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "); -null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var p=document.createElement("div");p.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; +mxUtils.br(a);return m.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,b,c){function d(a,b,c,d){y.getModel().beginUpdate();try{var f=[],m=[];if(null!=c.index){for(var p=[],e=c.parentRow.nextSibling;e&&e.getAttribute("data-pName")==a;)p.push(e.getAttribute("data-pValue")),e=e.nextSibling;c.index<p.length?null!=d?p.splice(d,1):p[c.index]=b:p.push(b);null!=c.size&&p.length>c.size&&(p=p.slice(0,c.size));b=p.join(",");null!=c.countProperty&& +(y.setCellStyles(c.countProperty,p.length,y.getSelectionCells()),f.push(c.countProperty),m.push(p.length))}y.setCellStyles(a,b,y.getSelectionCells());f.push(a);m.push(b);if(null!=c.dependentProps)for(a=0;a<c.dependentProps.length;a++){var g=c.dependentPropsDefVal[a],q=c.dependentPropsVals[a];if(q.length>b)q=q.slice(0,b);else for(var u=q.length;u<b;u++)q.push(g);q=q.join(",");y.setCellStyles(c.dependentProps[a],q,y.getSelectionCells());f.push(c.dependentProps[a]);m.push(q)}if("function"==typeof c.onChange)c.onChange(y, +b);k.editorUi.fireEvent(new mxEventObject("styleChanged","keys",f,"values",m,"cells",y.getSelectionCells()))}finally{y.getModel().endUpdate()}}function f(b,c,d){var f=mxUtils.getOffset(a,!0),m=mxUtils.getOffset(b,!0);c.style.position="absolute";c.style.left=m.x-f.x+"px";c.style.top=m.y-f.y+"px";c.style.width=b.offsetWidth+"px";c.style.height=b.offsetHeight-(d?4:0)+"px";c.style.zIndex=5}function m(a,b,c){var f=document.createElement("div");f.style.width="32px";f.style.height="4px";f.style.margin="2px"; +f.style.border="1px solid black";f.style.background=b&&"none"!=b?b:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(k,function(m){this.editorUi.pickColor(b,function(b){f.style.background="none"==b?"url('"+Dialog.prototype.noColorImage+"')":b;d(a,b,c)});mxEvent.consume(m)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(f);return btn}function p(a,b,c,f,m,p,e){null!=b&&(b=b.split(","),u.push({name:a,values:b,type:c,defVal:f,countProperty:m, +parentRow:p,isDeletable:!0,flipBkg:e}));btn=mxUtils.button("+",mxUtils.bind(k,function(b){for(var g=p,k=0;null!=g.nextSibling;)if(g.nextSibling.getAttribute("data-pName")==a)g=g.nextSibling,k++;else break;var y={type:c,parentRow:p,index:k,isDeletable:!0,defVal:f,countProperty:m},k=q(a,"",y,0==k%2,e);d(a,f,y);g.parentNode.insertBefore(k,g.nextSibling);mxEvent.consume(b)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function e(a,b,c,d,f,m,p){if(0<f){var e=Array(f); +b=null!=b?b.split(","):[];for(var g=0;g<f;g++)e[g]=null!=b[g]?b[g]:null!=d?d:"";u.push({name:a,values:e,type:c,defVal:d,parentRow:m,flipBkg:p,size:f})}return document.createElement("div")}function g(a,b,c){var f=document.createElement("input");f.type="checkbox";f.checked="1"==b;mxEvent.addListener(f,"change",function(){d(a,f.checked?"1":"0",c)});return f}function q(b,c,q,y,u){var v=q.dispName,l=q.type,n=document.createElement("tr");n.className="gePropRow"+(u?"Dark":"")+(y?"Alt":"")+" gePropNonHeaderRow"; +n.setAttribute("data-pName",b);n.setAttribute("data-pValue",c);y=!1;null!=q.index&&(n.setAttribute("data-index",q.index),v=(null!=v?v:"")+"["+q.index+"]",y=!0);var B=document.createElement("td");B.className="gePropRowCell";B.innerHTML=mxUtils.htmlEntities(mxResources.get(v,null,v));y&&(B.style.textAlign="right");n.appendChild(B);B=document.createElement("td");B.className="gePropRowCell";if("color"==l)B.appendChild(m(b,c,q));else if("bool"==l||"boolean"==l)B.appendChild(g(b,c,q));else if("enum"==l){var x= +q.enumList;for(u=0;u<x.length;u++)if(v=x[u],v.val==c){B.innerHTML=mxUtils.htmlEntities(mxResources.get(v.dispName,null,v.dispName));break}mxEvent.addListener(B,"click",mxUtils.bind(k,function(){var m=document.createElement("select");f(B,m);for(var p=0;p<x.length;p++){var e=x[p],g=document.createElement("option");g.value=mxUtils.htmlEntities(e.val);g.innerHTML=mxUtils.htmlEntities(mxResources.get(e.dispName,null,e.dispName));m.appendChild(g)}m.value=c;a.appendChild(m);mxEvent.addListener(m,"change", +function(){var a=mxUtils.htmlEntities(m.value);d(b,a,q)});m.focus();mxEvent.addListener(m,"blur",function(){a.removeChild(m)})}))}else"dynamicArr"==l?B.appendChild(p(b,c,q.subType,q.subDefVal,q.countProperty,n,u)):"staticArr"==l?B.appendChild(e(b,c,q.subType,q.subDefVal,q.size,n,u)):(B.innerHTML=c,mxEvent.addListener(B,"click",mxUtils.bind(k,function(){function m(){var a=p.value,a=0==a.length&&"string"!=l?0:a;q.allowAuto&&(null!=a.trim&&"auto"==a.trim().toLowerCase()?(a="auto",l="string"):(a=parseFloat(a), +a=isNaN(a)?0:a));null!=q.min&&a<q.min?a=q.min:null!=q.max&&a>q.max&&(a=q.max);a=mxUtils.htmlEntities(("int"==l?parseInt(a):a)+"");d(b,a,q)}var p=document.createElement("input");f(B,p,!0);p.value=c;p.className="gePropEditor";"int"!=l&&"float"!=l||q.allowAuto||(p.type="number",p.step="int"==l?"1":"any",null!=q.min&&(p.min=parseFloat(q.min)),null!=q.max&&(p.max=parseFloat(q.max)));a.appendChild(p);mxEvent.addListener(p,"keypress",function(a){13==a.keyCode&&m()});p.focus();mxEvent.addListener(p,"blur", +function(){m()})})));q.isDeletable&&(u=mxUtils.button("-",mxUtils.bind(k,function(a){d(b,"",q,q.index);mxEvent.consume(a)})),u.style.height="16px",u.style.width="25px",u.style["float"]="right",u.className="geColorBtn",B.appendChild(u));n.appendChild(B);return n}var k=this,y=this.editorUi.editor.graph,u=[];a.style.position="relative";a.style.padding="0";var l=document.createElement("table");l.style.whiteSpace="nowrap";l.style.width="100%";var v=document.createElement("tr");v.className="gePropHeader"; +var n=document.createElement("th");n.className="gePropHeaderCell";var B=document.createElement("img");B.src=Sidebar.prototype.expandedImage;n.appendChild(B);mxUtils.write(n,mxResources.get("property"));v.style.cursor="pointer";var x=function(){var b=l.querySelectorAll(".gePropNonHeaderRow"),c;if(k.editorUi.propertiesCollapsed){B.src=Sidebar.prototype.collapsedImage;c="none";for(var d=a.childNodes.length-1;0<=d;d--)try{var f=a.childNodes[d],m=f.nodeName.toUpperCase();"INPUT"!=m&&"SELECT"!=m||a.removeChild(f)}catch(ka){}}else B.src= +Sidebar.prototype.expandedImage,c="";for(d=0;d<b.length;d++)b[d].style.display=c};mxEvent.addListener(v,"click",function(){k.editorUi.propertiesCollapsed=!k.editorUi.propertiesCollapsed;x()});v.appendChild(n);n=document.createElement("th");n.className="gePropHeaderCell";n.innerHTML=mxResources.get("value");v.appendChild(n);l.appendChild(v);var A=!1,D=!1,z;for(z in b)if(v=b[z],"function"!=typeof v.isVisible||v.isVisible(c,this)){var C=null!=c.style[z]?mxUtils.htmlEntities(c.style[z]+""):null!=v.getDefaultValue? +v.getDefaultValue(c,this):v.defVal;if("separator"==v.type)D=!D;else{if("staticArr"==v.type)v.size=parseInt(c.style[v.sizeProperty]||b[v.sizeProperty].defVal)||0;else if(null!=v.dependentProps){for(var t=v.dependentProps,F=[],H=[],n=0;n<t.length;n++){var G=c.style[t[n]];H.push(b[t[n]].subDefVal);F.push(null!=G?G.split(","):[])}v.dependentPropsDefVal=H;v.dependentPropsVals=F}l.appendChild(q(z,C,v,A,D));A=!A}}for(n=0;n<u.length;n++)for(v=u[n],b=v.parentRow,c=0;c<v.values.length;c++)z=q(v.name,v.values[c], +{type:v.type,parentRow:v.parentRow,isDeletable:v.isDeletable,index:c,defVal:v.defVal,countProperty:v.countProperty,size:v.size},0==c%2,v.flipBkg),b.parentNode.insertBefore(z,b.nextSibling),b=z;a.appendChild(l);x();return a};StyleFormatPanel.prototype.addStyles=function(a){function b(a){function b(a){var b=mxUtils.button("",function(b){d.getModel().beginUpdate();try{var c=d.getSelectionCells();for(b=0;b<c.length;b++){for(var f=d.getModel().getStyle(c[b]),p=0;p<m.length;p++)f=mxUtils.removeStylename(f, +m[p]);var e=d.getModel().isVertex(c[b])?d.defaultVertexStyle:d.defaultEdgeStyle;null!=a?(f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(e,mxConstants.STYLE_GRADIENTCOLOR,null)),f=""==a.fill?mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,null)),f=""==a.stroke?mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR, +a.stroke||mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,null)),d.getModel().isVertex(c[b])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null)))):(f=mxUtils.setStyle(f,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FILLCOLOR,"#ffffff")),f=mxUtils.setStyle(f,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(e,mxConstants.STYLE_STROKECOLOR,"#000000")),f=mxUtils.setStyle(f,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(e, +mxConstants.STYLE_GRADIENTCOLOR,null)),d.getModel().isVertex(c[b])&&(f=mxUtils.setStyle(f,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(e,mxConstants.STYLE_FONTCOLOR,null))));d.getModel().setStyle(c[b],f)}}finally{d.getModel().endUpdate()}});b.className="geStyleButton";b.style.width="36px";b.style.height="30px";b.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?b.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+ +a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":b.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?b.style.background="url('"+Dialog.prototype.noColorImage+"')":b.style.backgroundColor=""==a.fill?mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"):a.fill||mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"),b.style.border=a.stroke==mxConstants.NONE? +"1px solid transparent":""==a.stroke?"1px solid "+mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"):"1px solid "+(a.stroke||mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"));else{var c=mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),p=mxUtils.getValue(d.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");b.style.backgroundColor=c;b.style.border="1px solid "+ +p}f.appendChild(b)}f.innerHTML="";for(var c=0;c<a.length;c++)0<c&&0==mxUtils.mod(c,4)&&mxUtils.br(f),b(a[c])}function c(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var d=this.editorUi.editor.graph,f=document.createElement("div");f.style.whiteSpace="nowrap";f.style.paddingLeft="24px";f.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(f); +var m="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var p=document.createElement("div");p.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));var e=document.createElement("div");e.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);"; 1<this.defaultColorSchemes.length&&(a.appendChild(p),a.appendChild(e));mxEvent.addListener(e,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);b(this.defaultColorSchemes[this.editorUi.currentScheme])}));c(p);c(e);b(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var b=this.format.getSelectionState(),c=null;1==this.editorUi.editor.graph.getSelectionCount()&& (c=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),c.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),c.style.width="202px",c.style.marginBottom="2px",a.appendChild(c));var d=this.editorUi.editor.graph,f=d.view.getState(d.getSelectionCell());1==d.getSelectionCount()&&null!=f&&null!=f.shape&&null!=f.shape.stencil?(b=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this, @@ -8663,18 +8664,18 @@ function(a){this.editorUi.actions.get("editShape").funct()})),b.setAttribute("ti a.button,b.relatedTarget=a.relatedTarget}catch(E){}}p.apply(this,arguments);window.mxFreehand&&(this.freehand=new mxFreehand(this));var b=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){b=null});this.isMouseInsertPoint=function(){return null!=b};var c=this.getInsertPoint;this.getInsertPoint=function(){return null!=b?this.getPointForEvent(b):c.apply(this,arguments)};var d=this.layoutManager.getLayout; this.layoutManager.getLayout=function(a){var b=this.graph.getCellStyle(a);if(null!=b){if("rack"==b.childLayout){var c=new mxStackLayout(this.graph,!1);c.gridSize=null!=b.rackUnitSize?parseFloat(b.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;c.fill=!0;c.marginLeft=b.marginLeft||0;c.marginRight=b.marginRight||0;c.marginTop=b.marginTop||0;c.marginBottom=b.marginBottom||0;c.allowGaps=b.allowGaps||0;c.resizeParent=!1;return c}if("undefined"!==typeof mxTableLayout&&"tableLayout"== b.childLayout)return c=new mxTableLayout(this.graph),c.rows=b.tableRows||2,c.columns=b.tableColumns||2,c.colPercentages=b.colPercentages,c.rowPercentages=b.rowPercentages,c.equalColumns="1"==mxUtils.getValue(b,"equalColumns",c.colPercentages?"0":"1"),c.equalRows="1"==mxUtils.getValue(b,"equalRows",c.rowPercentages?"0":"1"),c.resizeParent="1"==mxUtils.getValue(b,"resizeParent","1"),c.border=b.tableBorder||c.border,c.marginLeft=b.marginLeft||0,c.marginRight=b.marginRight||0,c.marginTop=b.marginTop|| -0,c.marginBottom=b.marginBottom||0,c.autoAddCol="1"==mxUtils.getValue(b,"autoAddCol","0"),c.autoAddRow="1"==mxUtils.getValue(b,"autoAddRow",c.autoAddCol?"0":"1"),c.colWidths=b.colWidths||"100",c.rowHeights=b.rowHeights||"50",c}return d.apply(this,arguments)};this.updateGlobalUrlVariables()};var t=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return t.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars= -Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var a=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=a)for(var b in a)this.globalVars[b]=a[b]}catch(F){null!=window.console&&console.log("Error in vars URL parameter: "+F)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var v=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var b= -v.apply(this,arguments);null==b&&null!=this.globalVars&&(b=this.globalVars[a]);return b};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var q=Graph.prototype.getSvg;Graph.prototype.getSvg=function(a,b,c,d,f,m,p,e,g,k,x){var t=null;null!=this.themes&&"darkTheme"==this.defaultThemeName&& -(t=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var v=q.apply(this,arguments);if(x&&null!=this.extFonts&&0<this.extFonts.length){var l=v.ownerDocument,n=null!=l.createElementNS?l.createElementNS(mxConstants.NS_SVG,"style"):l.createElement("style");null!=l.setAttributeNS?n.setAttributeNS("type","text/css"):n.setAttribute("type","text/css");for(var A="",y="",C=0;C<this.extFonts.length;C++){var z=this.extFonts[C].name,B=this.extFonts[C].url;0==B.indexOf(Editor.GOOGLE_FONTS)? -A+="@import url("+B+");\n":y+='@font-face {\nfont-family: "'+z+'";\nsrc: url("'+B+'");\n}\n'}n.appendChild(l.createTextNode(A+y));v.getElementsByTagName("defs")[0].appendChild(n)}null!=t&&(this.stylesheet=t,this.refresh());return v};var z=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var a=z.apply(this,arguments);if(this.mathEnabled){this.container.getBoundingClientRect();var b=a.drawText;a.drawText=function(a,c){if(null!=a.text&&null!=a.text.value&&a.text.checkBounds()&& -(mxUtils.isNode(a.text.value)||a.text.dialect==mxConstants.DIALECT_STRICTHTML)){var d=a.text.getContentNode();if(null!=d){d=d.cloneNode(!0);if(d.getElementsByTagNameNS)for(var f=d.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<f.length;)f[0].parentNode.removeChild(f[0]);null!=d.innerHTML&&(f=a.text.value,a.text.value=d.innerHTML,b.apply(this,arguments),a.text.value=f)}}else b.apply(this,arguments)}}return a};var y=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage= -function(){y.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&& -this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var D=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){D.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"== +0,c.marginBottom=b.marginBottom||0,c.autoAddCol="1"==mxUtils.getValue(b,"autoAddCol","0"),c.autoAddRow="1"==mxUtils.getValue(b,"autoAddRow",c.autoAddCol?"0":"1"),c.colWidths=b.colWidths||"100",c.rowHeights=b.rowHeights||"50",c}return d.apply(this,arguments)};this.updateGlobalUrlVariables()};var u=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return u.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars= +Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var a=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=a)for(var b in a)this.globalVars[b]=a[b]}catch(G){null!=window.console&&console.log("Error in vars URL parameter: "+G)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var v=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var b= +v.apply(this,arguments);null==b&&null!=this.globalVars&&(b=this.globalVars[a]);return b};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var q=Graph.prototype.getSvg;Graph.prototype.getSvg=function(a,b,c,d,f,m,p,e,g,k,y){var u=null;null!=this.themes&&"darkTheme"==this.defaultThemeName&& +(u=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var v=q.apply(this,arguments);if(y&&null!=this.extFonts&&0<this.extFonts.length){var l=v.ownerDocument,n=null!=l.createElementNS?l.createElementNS(mxConstants.NS_SVG,"style"):l.createElement("style");null!=l.setAttributeNS?n.setAttributeNS("type","text/css"):n.setAttribute("type","text/css");for(var B="",x="",A=0;A<this.extFonts.length;A++){var D=this.extFonts[A].name,z=this.extFonts[A].url;0==z.indexOf(Editor.GOOGLE_FONTS)? +B+="@import url("+z+");\n":x+='@font-face {\nfont-family: "'+D+'";\nsrc: url("'+z+'");\n}\n'}n.appendChild(l.createTextNode(B+x));v.getElementsByTagName("defs")[0].appendChild(n)}null!=u&&(this.stylesheet=u,this.refresh());return v};var z=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var a=z.apply(this,arguments);if(this.mathEnabled){this.container.getBoundingClientRect();var b=a.drawText;a.drawText=function(a,c){if(null!=a.text&&null!=a.text.value&&a.text.checkBounds()&& +(mxUtils.isNode(a.text.value)||a.text.dialect==mxConstants.DIALECT_STRICTHTML)){var d=a.text.getContentNode();if(null!=d){d=d.cloneNode(!0);if(d.getElementsByTagNameNS)for(var f=d.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<f.length;)f[0].parentNode.removeChild(f[0]);null!=d.innerHTML&&(f=a.text.value,a.text.value=d.innerHTML,b.apply(this,arguments),a.text.value=f)}}else b.apply(this,arguments)}}return a};var x=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage= +function(){x.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&& +this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var C=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){C.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"== a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var b=0;b<a.actions.length;b++){var c=a.actions[b];if(null!=c.open)if(this.isCustomLink(c.open)){if(!this.customLinkClicked(c.open))return}else this.openLink(c.open)}this.model.beginUpdate();try{for(b=0;b<a.actions.length;b++)c=a.actions[b],null!=c.toggle&&this.toggleCells(this.getCellsForAction(c.toggle,!0)),null!=c.show&&this.setCellsVisible(this.getCellsForAction(c.show,!0),!0),null!=c.hide&&this.setCellsVisible(this.getCellsForAction(c.hide, !0),!1)}finally{this.model.endUpdate()}for(b=0;b<a.actions.length;b++){var c=a.actions[b],d=[];null!=c.select&&this.isEnabled()&&(d=this.getCellsForAction(c.select),this.setSelectionCells(d));null!=c.highlight&&(d=this.getCellsForAction(c.highlight),this.highlightCells(d,c.highlight.color,c.highlight.duration,c.highlight.opacity));null!=c.scroll&&(d=this.getCellsForAction(c.scroll));0<d.length&&this.scrollCellToVisible(d[0])}}};Graph.prototype.updateCustomLinksForCell=function(a,b){var c=this.getLinkForCell(b); null!=c&&"data:action/json,"==c.substring(0,17)&&this.setLinkForCell(b,this.updateCustomLink(a,c));if(this.isHtmlLabel(b)){var d=document.createElement("div");d.innerHTML=this.getLabel(b);for(var f=d.getElementsByTagName("a"),m=!1,p=0;p<f.length;p++)c=f[p].getAttribute("href"),null!=c&&"data:action/json,"==c.substring(0,17)&&(f[p].setAttribute("href",this.updateCustomLink(a,c)),m=!0);m&&this.labelChanged(b,d.innerHTML)}};Graph.prototype.updateCustomLink=function(a,b){if("data:action/json,"==b.substring(0, -17))try{var c=JSON.parse(b.substring(17));null!=c.actions&&(this.updateCustomLinkActions(a,c.actions),b="data:action/json,"+JSON.stringify(c))}catch(G){}return b};Graph.prototype.updateCustomLinkActions=function(a,b){for(var c=0;c<b.length;c++){var d=b[c];this.updateCustomLinkAction(a,d.toggle);this.updateCustomLinkAction(a,d.show);this.updateCustomLinkAction(a,d.hide);this.updateCustomLinkAction(a,d.select);this.updateCustomLinkAction(a,d.highlight);this.updateCustomLinkAction(a,d.scroll)}};Graph.prototype.updateCustomLinkAction= +17))try{var c=JSON.parse(b.substring(17));null!=c.actions&&(this.updateCustomLinkActions(a,c.actions),b="data:action/json,"+JSON.stringify(c))}catch(I){}return b};Graph.prototype.updateCustomLinkActions=function(a,b){for(var c=0;c<b.length;c++){var d=b[c];this.updateCustomLinkAction(a,d.toggle);this.updateCustomLinkAction(a,d.show);this.updateCustomLinkAction(a,d.hide);this.updateCustomLinkAction(a,d.select);this.updateCustomLinkAction(a,d.highlight);this.updateCustomLinkAction(a,d.scroll)}};Graph.prototype.updateCustomLinkAction= function(a,b){if(null!=b&&null!=b.cells){for(var c=[],d=0;d<b.cells.length;d++)if("*"==b.cells[d])c.push(b.cells[d]);else{var f=a[b.cells[d]];null!=f?""!=f&&c.push(f):c.push(b.cells[d])}b.cells=c}};Graph.prototype.getCellsForAction=function(a,b){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags,null,null,b))};Graph.prototype.getCellsById=function(a){var b=[];if(null!=a)for(var c=0;c<a.length;c++)if("*"==a[c])var d=this.getDefaultParent(),b=b.concat(this.model.filterDescendants(function(a){return a!= d},d));else{var f=this.model.getCell(a[c]);null!=f&&b.push(f)}return b};Graph.prototype.getCellsForTags=function(a,b,c,d){var f=[];if(null!=a){b=null!=b?b:this.model.getDescendants(this.model.getRoot());c=null!=c?c:"tags";for(var m=0,p={},e=0;e<a.length;e++)0<a[e].length&&(p[a[e].toLowerCase()]=!0,m++);for(e=0;e<b.length;e++)if(d&&this.model.getParent(b[e])==this.model.root||this.model.isVertex(b[e])||this.model.isEdge(b[e])){var g=null!=b[e].value&&"object"==typeof b[e].value?mxUtils.trim(b[e].value.getAttribute(c)|| ""):"",q=!1;if(0<g.length){if(g=g.toLowerCase().split(" "),g.length>=a.length){for(var k=q=0;k<g.length&&q<m;k++)null!=p[g[k]]&&q++;q=q==m}}else q=0==a.length;q&&f.push(b[e])}}return f};Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],!this.model.isVisible(a[b]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,b){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],b)}finally{this.model.endUpdate()}}; @@ -8694,33 +8695,33 @@ STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mo [SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js", STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+ "/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(a){var b=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?b="mxgraph.er":"sysML"==a.substring(0,5)&&(b="mxgraph.sysml"));return b};var H=mxMarker.createMarker;mxMarker.createMarker= -function(a,b,c,d,f,m,p,e,g,q){if(null!=c&&null==mxMarker.markers[c]){var k=this.getPackageForType(c);null!=k&&mxStencilRegistry.getStencil(k)}return H.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function c(){v.value=Math.max(1,Math.min(e,Math.max(parseInt(v.value),parseInt(t.value))));t.value=Math.max(1,Math.min(e,Math.min(parseInt(v.value),parseInt(t.value))))}function d(b){function c(b,c,m){var p=b.useCssTransforms,e=b.currentTranslate,g=b.currentScale,q=b.view.translate,k= -b.view.scale;b.useCssTransforms&&(b.useCssTransforms=!1,b.currentTranslate=new mxPoint(0,0),b.currentScale=1,b.view.translate=new mxPoint(0,0),b.view.scale=1);var t=b.getGraphBounds(),x=0,l=0,v=ma.get(),n=1/b.pageScale,C=y.checked;if(C)var n=parseInt(S.value),z=parseInt(ha.value),n=Math.min(v.height*z/(t.height/b.view.scale),v.width*n/(t.width/b.view.scale));else n=parseInt(A.value)/(100*b.pageScale),isNaN(n)&&(d=1/b.pageScale,A.value="100 %");v=mxRectangle.fromRectangle(v);v.width=Math.ceil(v.width* -d);v.height=Math.ceil(v.height*d);n*=d;!C&&b.pageVisible?(t=b.getPageLayout(),x-=t.x*v.width,l-=t.y*v.height):C=!0;if(null==c){c=PrintDialog.createPrintPreview(b,n,v,0,x,l,C);c.pageSelector=!1;c.mathEnabled=!1;x=a.getCurrentFile();null!=x&&(c.title=x.getTitle());var D=c.writeHead;c.writeHead=function(c){D.apply(this,arguments);null!=a.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(a.editor.fontCss),c.writeln("</style>"));if(null!=b.extFonts)for(var d=0;d<b.extFonts.length;d++){var f= -b.extFonts[d].name,m=b.extFonts[d].url;0==m.indexOf(Editor.GOOGLE_FONTS)?c.writeln('<link rel="stylesheet" href="'+m+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\n\tfont-family: "'+f+'";\n\tsrc: url("'+m+'");\n}'),c.writeln("</style>"))}};if("undefined"!==typeof MathJax){var u=c.renderPage;c.renderPage=function(b,c,d,f,m,p){var e=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!a.editor.useForeignObjectForMath?!0:a.editor.originalNoForeignObject; -var g=u.apply(this,arguments);mxClient.NO_FO=e;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:g.className="geDisableMathJax";return g}}x=null;null!=f.themes&&"darkTheme"==f.defaultThemeName&&(x=f.stylesheet,f.stylesheet=f.getDefaultStylesheet(),f.refresh());c.open(null,null,m,!0);null!=x&&(f.stylesheet=x,f.refresh())}else{v=b.background;if(null==v||""==v||v==mxConstants.NONE)v="#ffffff";c.backgroundColor=v;c.autoOrigin=C;c.appendGraph(b,n,x,l,m,!0);if(null!=b.extFonts&&null!=c.wnd)for(m= -0;m<b.extFonts.length;m++)x=b.extFonts[m].name,l=b.extFonts[m].url,0==l.indexOf(Editor.GOOGLE_FONTS)?c.wnd.document.writeln('<link rel="stylesheet" href="'+l+'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),c.wnd.document.writeln('@font-face {\n\tfont-family: "'+x+'";\n\tsrc: url("'+l+'");\n}'),c.wnd.document.writeln("</style>"))}p&&(b.useCssTransforms=p,b.currentTranslate=e,b.currentScale=g,b.view.translate=q,b.view.scale=k);return c}var d=parseInt(N.value)/ -100;isNaN(d)&&(d=1,N.value="100 %");var d=.75*d,m=t.value,p=v.value,e=!k.checked,q=null;e&&(e=m==g&&p==g);if(!e&&null!=a.pages&&a.pages.length){var x=0,e=a.pages.length-1;k.checked||(x=parseInt(m)-1,e=parseInt(p)-1);for(var l=x;l<=e;l++){var n=a.pages[l],m=n==a.currentPage?f:null;if(null==m){var m=a.createTemporaryGraph(f.getStylesheet()),p=!0,x=!1,C=null,z=null;null==n.viewState&&null==n.root&&a.updatePageRoot(n);null!=n.viewState&&(p=n.viewState.pageVisible,x=n.viewState.mathEnabled,C=n.viewState.background, -z=n.viewState.backgroundImage,m.extFonts=n.viewState.extFonts);m.background=C;m.backgroundImage=null!=z?new mxImage(z.src,z.width,z.height):null;m.pageVisible=p;m.mathEnabled=x;var D=m.getGlobalVariable;m.getGlobalVariable=function(b){return"page"==b?n.getName():"pagenumber"==b?l+1:"pagecount"==b?null!=a.pages?a.pages.length:1:D.apply(this,arguments)};document.body.appendChild(m.container);a.updatePageRoot(n);m.model.setRoot(n.root)}q=c(m,q,l!=e);m!=f&&m.container.parentNode.removeChild(m.container)}}else q= +function(a,b,c,d,f,m,p,e,g,q){if(null!=c&&null==mxMarker.markers[c]){var k=this.getPackageForType(c);null!=k&&mxStencilRegistry.getStencil(k)}return H.apply(this,arguments)};PrintDialog.prototype.create=function(a,b){function c(){v.value=Math.max(1,Math.min(e,Math.max(parseInt(v.value),parseInt(u.value))));u.value=Math.max(1,Math.min(e,Math.min(parseInt(v.value),parseInt(u.value))))}function d(b){function c(b,c,m){var p=b.useCssTransforms,e=b.currentTranslate,g=b.currentScale,q=b.view.translate,k= +b.view.scale;b.useCssTransforms&&(b.useCssTransforms=!1,b.currentTranslate=new mxPoint(0,0),b.currentScale=1,b.view.translate=new mxPoint(0,0),b.view.scale=1);var y=b.getGraphBounds(),u=0,l=0,v=ma.get(),n=1/b.pageScale,z=x.checked;if(z)var n=parseInt(S.value),D=parseInt(ha.value),n=Math.min(v.height*D/(y.height/b.view.scale),v.width*n/(y.width/b.view.scale));else n=parseInt(B.value)/(100*b.pageScale),isNaN(n)&&(d=1/b.pageScale,B.value="100 %");v=mxRectangle.fromRectangle(v);v.width=Math.ceil(v.width* +d);v.height=Math.ceil(v.height*d);n*=d;!z&&b.pageVisible?(y=b.getPageLayout(),u-=y.x*v.width,l-=y.y*v.height):z=!0;if(null==c){c=PrintDialog.createPrintPreview(b,n,v,0,u,l,z);c.pageSelector=!1;c.mathEnabled=!1;u=a.getCurrentFile();null!=u&&(c.title=u.getTitle());var C=c.writeHead;c.writeHead=function(c){C.apply(this,arguments);null!=a.editor.fontCss&&(c.writeln('<style type="text/css">'),c.writeln(a.editor.fontCss),c.writeln("</style>"));if(null!=b.extFonts)for(var d=0;d<b.extFonts.length;d++){var f= +b.extFonts[d].name,m=b.extFonts[d].url;0==m.indexOf(Editor.GOOGLE_FONTS)?c.writeln('<link rel="stylesheet" href="'+m+'" charset="UTF-8" type="text/css">'):(c.writeln('<style type="text/css">'),c.writeln('@font-face {\n\tfont-family: "'+f+'";\n\tsrc: url("'+m+'");\n}'),c.writeln("</style>"))}};if("undefined"!==typeof MathJax){var A=c.renderPage;c.renderPage=function(b,c,d,f,m,p){var e=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!a.editor.useForeignObjectForMath?!0:a.editor.originalNoForeignObject; +var g=A.apply(this,arguments);mxClient.NO_FO=e;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:g.className="geDisableMathJax";return g}}u=null;null!=f.themes&&"darkTheme"==f.defaultThemeName&&(u=f.stylesheet,f.stylesheet=f.getDefaultStylesheet(),f.refresh());c.open(null,null,m,!0);null!=u&&(f.stylesheet=u,f.refresh())}else{v=b.background;if(null==v||""==v||v==mxConstants.NONE)v="#ffffff";c.backgroundColor=v;c.autoOrigin=z;c.appendGraph(b,n,u,l,m,!0);if(null!=b.extFonts&&null!=c.wnd)for(m= +0;m<b.extFonts.length;m++)u=b.extFonts[m].name,l=b.extFonts[m].url,0==l.indexOf(Editor.GOOGLE_FONTS)?c.wnd.document.writeln('<link rel="stylesheet" href="'+l+'" charset="UTF-8" type="text/css">'):(c.wnd.document.writeln('<style type="text/css">'),c.wnd.document.writeln('@font-face {\n\tfont-family: "'+u+'";\n\tsrc: url("'+l+'");\n}'),c.wnd.document.writeln("</style>"))}p&&(b.useCssTransforms=p,b.currentTranslate=e,b.currentScale=g,b.view.translate=q,b.view.scale=k);return c}var d=parseInt(N.value)/ +100;isNaN(d)&&(d=1,N.value="100 %");var d=.75*d,m=u.value,p=v.value,e=!k.checked,q=null;e&&(e=m==g&&p==g);if(!e&&null!=a.pages&&a.pages.length){var y=0,e=a.pages.length-1;k.checked||(y=parseInt(m)-1,e=parseInt(p)-1);for(var l=y;l<=e;l++){var n=a.pages[l],m=n==a.currentPage?f:null;if(null==m){var m=a.createTemporaryGraph(f.getStylesheet()),p=!0,y=!1,D=null,z=null;null==n.viewState&&null==n.root&&a.updatePageRoot(n);null!=n.viewState&&(p=n.viewState.pageVisible,y=n.viewState.mathEnabled,D=n.viewState.background, +z=n.viewState.backgroundImage,m.extFonts=n.viewState.extFonts);m.background=D;m.backgroundImage=null!=z?new mxImage(z.src,z.width,z.height):null;m.pageVisible=p;m.mathEnabled=y;var C=m.getGlobalVariable;m.getGlobalVariable=function(b){return"page"==b?n.getName():"pagenumber"==b?l+1:"pagecount"==b?null!=a.pages?a.pages.length:1:C.apply(this,arguments)};document.body.appendChild(m.container);a.updatePageRoot(n);m.model.setRoot(n.root)}q=c(m,q,l!=e);m!=f&&m.container.parentNode.removeChild(m.container)}}else q= c(f);null==q?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(q.mathEnabled&&(e=q.wnd.document,e.writeln('<script type="text/x-mathjax-config">'),e.writeln("MathJax.Hub.Config({"),e.writeln("showMathMenu: false,"),e.writeln('messageStyle: "none",'),e.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),e.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),e.writeln('"HTML-CSS": {'),e.writeln("imageFont: null"),e.writeln("},"),e.writeln("TeX: {"), e.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),e.writeln("},"),e.writeln("tex2jax: {"),e.writeln('\tignoreClass: "geDisableMathJax"'),e.writeln("},"),e.writeln("asciimath2jax: {"),e.writeln('\tignoreClass: "geDisableMathJax"'),e.writeln("}"),e.writeln("});"),b&&(e.writeln("MathJax.Hub.Queue(function () {"),e.writeln("window.print();"),e.writeln("});")),e.writeln("\x3c/script>"),e.writeln('<script type="text/javascript" src="'+DRAW_MATH_URL+'/MathJax.js">\x3c/script>')), q.closeDocument(),!q.mathEnabled&&b&&PrintDialog.printPreview(q))}var f=a.editor.graph,m=document.createElement("div"),p=document.createElement("h3");p.style.width="100%";p.style.textAlign="center";p.style.marginTop="0px";mxUtils.write(p,b||mxResources.get("print"));m.appendChild(p);var e=1,g=1,q=document.createElement("div");q.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var k=document.createElement("input");k.style.cssText="margin-right:8px;margin-bottom:8px;"; -k.setAttribute("value","all");k.setAttribute("type","radio");k.setAttribute("name","pages-printdialog");q.appendChild(k);p=document.createElement("span");mxUtils.write(p,mxResources.get("printAllPages"));q.appendChild(p);mxUtils.br(q);var x=k.cloneNode(!0);k.setAttribute("checked","checked");x.setAttribute("value","range");q.appendChild(x);p=document.createElement("span");mxUtils.write(p,mxResources.get("pages")+":");q.appendChild(p);var t=document.createElement("input");t.style.cssText="margin:0 8px 0 8px;"; -t.setAttribute("value","1");t.setAttribute("type","number");t.setAttribute("min","1");t.style.width="50px";q.appendChild(t);p=document.createElement("span");mxUtils.write(p,mxResources.get("to"));q.appendChild(p);var v=t.cloneNode(!0);q.appendChild(v);mxEvent.addListener(t,"focus",function(){x.checked=!0});mxEvent.addListener(v,"focus",function(){x.checked=!0});mxEvent.addListener(t,"change",c);mxEvent.addListener(v,"change",c);if(null!=a.pages&&(e=a.pages.length,null!=a.currentPage))for(p=0;p<a.pages.length;p++)if(a.currentPage== -a.pages[p]){g=p+1;t.value=g;v.value=g;break}t.setAttribute("max",e);v.setAttribute("max",e);1<e&&m.appendChild(q);var l=document.createElement("div");l.style.marginBottom="10px";var n=document.createElement("input");n.style.marginRight="8px";n.setAttribute("value","adjust");n.setAttribute("type","radio");n.setAttribute("name","printZoom");l.appendChild(n);p=document.createElement("span");mxUtils.write(p,mxResources.get("adjustTo"));l.appendChild(p);var A=document.createElement("input");A.style.cssText= -"margin:0 8px 0 8px;";A.setAttribute("value","100 %");A.style.width="50px";l.appendChild(A);mxEvent.addListener(A,"focus",function(){n.checked=!0});m.appendChild(l);var q=q.cloneNode(!1),y=n.cloneNode(!0);y.setAttribute("value","fit");n.setAttribute("checked","checked");p=document.createElement("div");p.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";p.appendChild(y);q.appendChild(p);l=document.createElement("table");l.style.display="inline-block";var C=document.createElement("tbody"), -z=document.createElement("tr"),D=z.cloneNode(!0),u=document.createElement("td"),B=u.cloneNode(!0),H=u.cloneNode(!0),I=u.cloneNode(!0),ea=u.cloneNode(!0),T=u.cloneNode(!0);u.style.textAlign="right";I.style.textAlign="right";mxUtils.write(u,mxResources.get("fitTo"));var S=document.createElement("input");S.style.cssText="margin:0 8px 0 8px;";S.setAttribute("value","1");S.setAttribute("min","1");S.setAttribute("type","number");S.style.width="40px";B.appendChild(S);p=document.createElement("span");mxUtils.write(p, -mxResources.get("fitToSheetsAcross"));H.appendChild(p);mxUtils.write(I,mxResources.get("fitToBy"));var ha=S.cloneNode(!0);ea.appendChild(ha);mxEvent.addListener(S,"focus",function(){y.checked=!0});mxEvent.addListener(ha,"focus",function(){y.checked=!0});p=document.createElement("span");mxUtils.write(p,mxResources.get("fitToSheetsDown"));T.appendChild(p);z.appendChild(u);z.appendChild(B);z.appendChild(H);D.appendChild(I);D.appendChild(ea);D.appendChild(T);C.appendChild(z);C.appendChild(D);l.appendChild(C); +k.setAttribute("value","all");k.setAttribute("type","radio");k.setAttribute("name","pages-printdialog");q.appendChild(k);p=document.createElement("span");mxUtils.write(p,mxResources.get("printAllPages"));q.appendChild(p);mxUtils.br(q);var y=k.cloneNode(!0);k.setAttribute("checked","checked");y.setAttribute("value","range");q.appendChild(y);p=document.createElement("span");mxUtils.write(p,mxResources.get("pages")+":");q.appendChild(p);var u=document.createElement("input");u.style.cssText="margin:0 8px 0 8px;"; +u.setAttribute("value","1");u.setAttribute("type","number");u.setAttribute("min","1");u.style.width="50px";q.appendChild(u);p=document.createElement("span");mxUtils.write(p,mxResources.get("to"));q.appendChild(p);var v=u.cloneNode(!0);q.appendChild(v);mxEvent.addListener(u,"focus",function(){y.checked=!0});mxEvent.addListener(v,"focus",function(){y.checked=!0});mxEvent.addListener(u,"change",c);mxEvent.addListener(v,"change",c);if(null!=a.pages&&(e=a.pages.length,null!=a.currentPage))for(p=0;p<a.pages.length;p++)if(a.currentPage== +a.pages[p]){g=p+1;u.value=g;v.value=g;break}u.setAttribute("max",e);v.setAttribute("max",e);1<e&&m.appendChild(q);var l=document.createElement("div");l.style.marginBottom="10px";var n=document.createElement("input");n.style.marginRight="8px";n.setAttribute("value","adjust");n.setAttribute("type","radio");n.setAttribute("name","printZoom");l.appendChild(n);p=document.createElement("span");mxUtils.write(p,mxResources.get("adjustTo"));l.appendChild(p);var B=document.createElement("input");B.style.cssText= +"margin:0 8px 0 8px;";B.setAttribute("value","100 %");B.style.width="50px";l.appendChild(B);mxEvent.addListener(B,"focus",function(){n.checked=!0});m.appendChild(l);var q=q.cloneNode(!1),x=n.cloneNode(!0);x.setAttribute("value","fit");n.setAttribute("checked","checked");p=document.createElement("div");p.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";p.appendChild(x);q.appendChild(p);l=document.createElement("table");l.style.display="inline-block";var D=document.createElement("tbody"), +z=document.createElement("tr"),C=z.cloneNode(!0),A=document.createElement("td"),t=A.cloneNode(!0),H=A.cloneNode(!0),F=A.cloneNode(!0),ea=A.cloneNode(!0),T=A.cloneNode(!0);A.style.textAlign="right";F.style.textAlign="right";mxUtils.write(A,mxResources.get("fitTo"));var S=document.createElement("input");S.style.cssText="margin:0 8px 0 8px;";S.setAttribute("value","1");S.setAttribute("min","1");S.setAttribute("type","number");S.style.width="40px";t.appendChild(S);p=document.createElement("span");mxUtils.write(p, +mxResources.get("fitToSheetsAcross"));H.appendChild(p);mxUtils.write(F,mxResources.get("fitToBy"));var ha=S.cloneNode(!0);ea.appendChild(ha);mxEvent.addListener(S,"focus",function(){x.checked=!0});mxEvent.addListener(ha,"focus",function(){x.checked=!0});p=document.createElement("span");mxUtils.write(p,mxResources.get("fitToSheetsDown"));T.appendChild(p);z.appendChild(A);z.appendChild(t);z.appendChild(H);C.appendChild(F);C.appendChild(ea);C.appendChild(T);D.appendChild(z);D.appendChild(C);l.appendChild(D); q.appendChild(l);m.appendChild(q);q=document.createElement("div");p=document.createElement("div");p.style.fontWeight="bold";p.style.marginBottom="12px";mxUtils.write(p,mxResources.get("paperSize"));q.appendChild(p);p=document.createElement("div");p.style.marginBottom="12px";var ma=PageSetupDialog.addPageFormatPanel(p,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);q.appendChild(p);p=document.createElement("span");mxUtils.write(p,mxResources.get("pageScale"));q.appendChild(p); var N=document.createElement("input");N.style.cssText="margin:0 8px 0 8px;";N.setAttribute("value","100 %");N.style.width="60px";q.appendChild(N);m.appendChild(q);p=document.createElement("div");p.style.cssText="text-align:right;margin:48px 0 0 0;";q=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});q.className="geBtn";a.editor.cancelFirst&&p.appendChild(q);a.isOffline()||(l=mxUtils.button(mxResources.get("help"),function(){f.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}), -l.className="geBtn",p.appendChild(l));PrintDialog.previewEnabled&&(l=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();d(!1)}),l.className="geBtn",p.appendChild(l));l=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();d(!0)});l.className="geBtn gePrimaryBtn";p.appendChild(l);a.editor.cancelFirst||p.appendChild(q);m.appendChild(p);this.container=m};var x=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null== -this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(x.apply(this,arguments),null!=this.mathEnabled&& -this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))};Editor.prototype.useCanvasForExport=!1;try{var A=document.createElement("canvas"),C=new Image;C.onload=function(){try{A.getContext("2d").drawImage(C,0,0);var a=A.toDataURL("image/png");Editor.prototype.useCanvasForExport= -null!=a&&6<a.length}catch(I){}};C.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(B){}})(); -(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,d,b){b.ui=a.ui;return d};a.afterDecode=function(a,d,b){b.previousColor=b.color;b.previousImage=b.image;b.previousFormat=b.format;null!=b.foldingEnabled&&(b.foldingEnabled=!b.foldingEnabled);null!=b.mathEnabled&&(b.mathEnabled=!b.mathEnabled);null!=b.shadowVisible&&(b.shadowVisible=!b.shadowVisible);return b};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="12.6.7";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t"; +l.className="geBtn",p.appendChild(l));PrintDialog.previewEnabled&&(l=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();d(!1)}),l.className="geBtn",p.appendChild(l));l=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();d(!0)});l.className="geBtn gePrimaryBtn";p.appendChild(l);a.editor.cancelFirst||p.appendChild(q);m.appendChild(p);this.container=m};var y=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null== +this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(y.apply(this,arguments),null!=this.mathEnabled&& +this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))};Editor.prototype.useCanvasForExport=!1;try{var B=document.createElement("canvas"),D=new Image;D.onload=function(){try{B.getContext("2d").drawImage(D,0,0);var a=B.toDataURL("image/png");Editor.prototype.useCanvasForExport= +null!=a&&6<a.length}catch(F){}};D.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(A){}})(); +(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,d,b){b.ui=a.ui;return d};a.afterDecode=function(a,d,b){b.previousColor=b.color;b.previousImage=b.image;b.previousFormat=b.format;null!=b.foldingEnabled&&(b.foldingEnabled=!b.foldingEnabled);null!=b.mathEnabled&&(b.mathEnabled=!b.mathEnabled);null!=b.shadowVisible&&(b.shadowVisible=!b.shadowVisible);return b};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="12.6.8";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t"; EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&!EditorUi.isElectronApp&&"0"!=urlParams.drafts; EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.logError=function(a,b,c,d,e){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,c,d,e);else if(EditorUi.enableLogging)try{if(a!=EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var f=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")|| -0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",m=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";e=null!=e?e:Error(a);(new Image).src=m+"/log?severity="+f+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=d?":colno:"+encodeURIComponent(d):"")+(null!=e&&null!=e.stack?"&stack="+encodeURIComponent(e.stack):"")}}catch(y){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent", +0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",m=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";e=null!=e?e:Error(a);(new Image).src=m+"/log?severity="+f+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(c)+(null!=d?":colno:"+encodeURIComponent(d):"")+(null!=e&&null!=e.stack?"&stack="+encodeURIComponent(e.stack):"")}}catch(x){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent", a);else if(EditorUi.enableLogging)try{var b=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=b+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):"")}catch(p){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+ "&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(p){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);console.log.apply(console,a)}}catch(p){}};EditorUi.parsePng=function(a,b,c){function d(a,b){var c=m;m+=b;return a.substring(c,m)}function f(a){a=d(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var m=0; if(d(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=c&&c();else if(d(a,4),"IHDR"!=d(a,4))null!=c&&c();else{d(a,17);do{c=f(a);var p=d(a,4);if(null!=b&&b(m-8,p,c))break;value=d(a,c);d(a,4);if("IEND"==p)break}while(c)}};EditorUi.removeChildNodes=function(a){for(;null!=a.firstChild;)a.removeChild(a.firstChild)};EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>"; @@ -8733,16 +8734,16 @@ function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents(); !navigator.onLine||!a&&"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,c){c=null!=c?c:24;var d=new Spinner({lines:12,length:c,width:Math.round(c/3),radius:Math.round(c/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),f=d.spin;d.spin=function(c,m){var p=!1;this.active||(f.call(this,c),this.active=!0,null!=m&&(p=document.createElement("div"),p.style.position="absolute",p.style.whiteSpace="nowrap",p.style.background="#4B4243", p.style.color="white",p.style.fontFamily="Helvetica, Arial",p.style.fontSize="9pt",p.style.padding="6px",p.style.paddingLeft="10px",p.style.paddingRight="10px",p.style.zIndex=2E9,p.style.left=Math.max(0,a)+"px",p.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(p.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(p.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(p.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=m.substring(m.length-3,m.length)&&"!"!= m.charAt(m.length-1)&&(m+="..."),p.innerHTML=m,c.appendChild(p),d.status=p,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(p.style.left=Math.round(Math.max(0,a-p.offsetWidth/2))+"px",p.style.top=Math.round(Math.max(0,b+70-p.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(c,m)}));this.stop();return a}),p=!0);return p};var m=d.stop;d.stop=function(){m.call(this);this.active=!1;null!= -d.status&&null!=d.status.parentNode&&d.status.parentNode.removeChild(d.status);d.status=null};d.pause=function(){return function(){}};return d};EditorUi.prototype.isCompatibleString=function(a){try{var b=mxUtils.parseXml(a),c=this.editor.extractGraphModel(b.documentElement,!0);return null!=c&&0==c.getElementsByTagName("parsererror").length}catch(t){}return!1};EditorUi.prototype.isVisioData=function(a){return 8<a.length&&208==a.charCodeAt(0)&&207==a.charCodeAt(1)&&17==a.charCodeAt(2)&&224==a.charCodeAt(3)&& +d.status&&null!=d.status.parentNode&&d.status.parentNode.removeChild(d.status);d.status=null};d.pause=function(){return function(){}};return d};EditorUi.prototype.isCompatibleString=function(a){try{var b=mxUtils.parseXml(a),c=this.editor.extractGraphModel(b.documentElement,!0);return null!=c&&0==c.getElementsByTagName("parsererror").length}catch(u){}return!1};EditorUi.prototype.isVisioData=function(a){return 8<a.length&&208==a.charCodeAt(0)&&207==a.charCodeAt(1)&&17==a.charCodeAt(2)&&224==a.charCodeAt(3)&& 161==a.charCodeAt(4)&&177==a.charCodeAt(5)&&26==a.charCodeAt(6)&&225==a.charCodeAt(7)||80==a.charCodeAt(0)&&75==a.charCodeAt(1)&&3==a.charCodeAt(2)&&4==a.charCodeAt(3)||80==a.charCodeAt(0)&&75==a.charCodeAt(1)&&3==a.charCodeAt(2)&&6==a.charCodeAt(3)};EditorUi.prototype.isPngData=function(a){return 8<a.length&&137==a.charCodeAt(0)&&80==a.charCodeAt(1)&&78==a.charCodeAt(2)&&71==a.charCodeAt(3)&&13==a.charCodeAt(4)&&10==a.charCodeAt(5)&&26==a.charCodeAt(6)&&10==a.charCodeAt(7)};var a=EditorUi.prototype.extractGraphModelFromHtml; EditorUi.prototype.extractGraphModelFromHtml=function(b){var c=a.apply(this,arguments);if(null==c)try{var d=b.indexOf("<mxfile ");if(0<=d){var f=b.lastIndexOf("</mxfile>");f>d&&(c=b.substring(d,f+15).replace(/>/g,">").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}else var e=mxUtils.parseXml(b),g=this.editor.extractGraphModel(e.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),c=null!=g?mxUtils.getXml(g):""}catch(z){}return c};EditorUi.prototype.validateFileData= function(a){if(null!=a&&0<a.length){var b=a.indexOf('<meta charset="utf-8">');0<=b&&(a=a.slice(0,b)+'<meta charset="utf-8"/>'+a.slice(b+23-1,a.length));a=Graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a){b=this.editor.graph;b.model.beginUpdate();try{var c=null!=this.pages?this.pages.slice():null,d=a.getElementsByTagName("diagram"); if("0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var f=d.length-1;0<=f;f--){var e=this.updatePageRoot(new DiagramPage(d[f]));null==e.getName()&&e.setName(mxResources.get("pageWithNumber",[f+1]));b.model.execute(new ChangePage(this,e,0==f?e:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")), -this.currentPage.setName(mxResources.get("pageWithNumber",[1])),b.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=c)for(f=0;f<c.length;f++)b.model.execute(new ChangePage(this,c[f],null))}finally{b.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,d,e,g,k,l,n,u,x){b=null!=b?b:this.editor.graph;e=null!=e?e:!1;n=null!=n?n:!0;var f,m=null;null== -c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?f="_blank":m=f=d;if(null==a)return"";var p=a;if("mxfile"!=p.nodeName.toLowerCase()){if(x){var q=a.ownerDocument.createElement("diagram");q.setAttribute("id",Editor.guid());q.appendChild(a)}else{q=Graph.zapGremlins(mxUtils.getXml(a));p=Graph.compress(q);if(Graph.decompress(p)!=q)return q;q=a.ownerDocument.createElement("diagram");q.setAttribute("id",Editor.guid());mxUtils.setTextContent(q,p)}p=a.ownerDocument.createElement("mxfile");p.appendChild(q)}u? +this.currentPage.setName(mxResources.get("pageWithNumber",[1])),b.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=c)for(f=0;f<c.length;f++)b.model.execute(new ChangePage(this,c[f],null))}finally{b.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,c,d,e,g,k,l,n,t,y){b=null!=b?b:this.editor.graph;e=null!=e?e:!1;n=null!=n?n:!0;var f,m=null;null== +c||c.getMode()==App.MODE_DEVICE||c.getMode()==App.MODE_BROWSER?f="_blank":m=f=d;if(null==a)return"";var p=a;if("mxfile"!=p.nodeName.toLowerCase()){if(y){var q=a.ownerDocument.createElement("diagram");q.setAttribute("id",Editor.guid());q.appendChild(a)}else{q=Graph.zapGremlins(mxUtils.getXml(a));p=Graph.compress(q);if(Graph.decompress(p)!=q)return q;q=a.ownerDocument.createElement("diagram");q.setAttribute("id",Editor.guid());mxUtils.setTextContent(q,p)}p=a.ownerDocument.createElement("mxfile");p.appendChild(q)}t? (p=p.cloneNode(!0),p.removeAttribute("modified"),p.removeAttribute("host"),p.removeAttribute("agent"),p.removeAttribute("etag"),p.removeAttribute("userAgent"),p.removeAttribute("version"),p.removeAttribute("editor"),p.removeAttribute("type")):(p.removeAttribute("userAgent"),p.removeAttribute("version"),p.removeAttribute("editor"),p.removeAttribute("pages"),p.removeAttribute("type"),mxClient.IS_CHROMEAPP?p.setAttribute("host","Chrome"):EditorUi.isElectronApp?p.setAttribute("host","Electron"):p.setAttribute("host", -window.location.hostname),p.setAttribute("modified",(new Date).toISOString()),p.setAttribute("agent",navigator.userAgent),p.setAttribute("version",EditorUi.VERSION),p.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&p.setAttribute("type",a),1<p.getElementsByTagName("diagram").length&&null!=this.pages&&p.setAttribute("pages",this.pages.length));x=x?mxUtils.getPrettyXml(p):mxUtils.getXml(p);if(!g&&!e&&(k||null!=c&&/(\.html)$/i.test(c.getTitle())))x=this.getHtml2(mxUtils.getXml(p), -b,null!=c?c.getTitle():null,f,m);else if(g||!e&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(d=null),x=this.getEmbeddedSvg(x,b,d,null,l,n,m);return x};EditorUi.prototype.getXmlFileData=function(a,b,c){a=null!=a?a:!0;b=null!=b?b:!1;c=null!=c?c:!Editor.compressXml;var d=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(a=function(a){var b=a.getElementsByTagName("mxGraphModel"),b=0<b.length?b[0]:null;null== +window.location.hostname),p.setAttribute("modified",(new Date).toISOString()),p.setAttribute("agent",navigator.userAgent),p.setAttribute("version",EditorUi.VERSION),p.setAttribute("etag",Editor.guid()),a=null!=c?c.getMode():this.mode,null!=a&&p.setAttribute("type",a),1<p.getElementsByTagName("diagram").length&&null!=this.pages&&p.setAttribute("pages",this.pages.length));y=y?mxUtils.getPrettyXml(p):mxUtils.getXml(p);if(!g&&!e&&(k||null!=c&&/(\.html)$/i.test(c.getTitle())))y=this.getHtml2(mxUtils.getXml(p), +b,null!=c?c.getTitle():null,f,m);else if(g||!e&&null!=c&&/(\.svg)$/i.test(c.getTitle()))null==c||c.getMode()!=App.MODE_DEVICE&&c.getMode()!=App.MODE_BROWSER||(d=null),y=this.getEmbeddedSvg(y,b,d,null,l,n,m);return y};EditorUi.prototype.getXmlFileData=function(a,b,c){a=null!=a?a:!0;b=null!=b?b:!1;c=null!=c?c:!Editor.compressXml;var d=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(a=function(a){var b=a.getElementsByTagName("mxGraphModel"),b=0<b.length?b[0]:null;null== b&&c?(b=mxUtils.trim(mxUtils.getTextContent(a)),a=a.cloneNode(!1),0<b.length&&(b=Graph.decompress(b),null!=b&&0<b.length&&a.appendChild(mxUtils.parseXml(b).documentElement))):null==b||c?a=a.cloneNode(!0):(a=a.cloneNode(!1),mxUtils.setTextContent(a,Graph.compressNode(b)));d.appendChild(a)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,Graph.compressNode(d)),d=this.fileNode.cloneNode(!1),b)a(this.currentPage.node);else for(b=0;b<this.pages.length;b++){if(this.currentPage!= this.pages[b]&&this.pages[b].needsUpdate){var f=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[b].root));this.editor.graph.saveViewState(this.pages[b].viewState,f);EditorUi.removeChildNodes(this.pages[b].node);mxUtils.setTextContent(this.pages[b].node,Graph.compressNode(f));delete this.pages[b].needsUpdate}a(this.pages[b].node)}return d};EditorUi.prototype.anonymizeString=function(a,b){for(var c=[],d=0;d<a.length;d++){var f=a.charAt(d);0<=EditorUi.ignoredAnonymizedChars.indexOf(f)? c.push(f):isNaN(parseInt(f))?f.toLowerCase()!=f?c.push(String.fromCharCode(65+Math.round(25*Math.random()))):f.toUpperCase()!=f?c.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(f)?c.push(" "):c.push("?"):c.push(b?"0":Math.round(9*Math.random()))}return c.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var b=0;b<a[EditorUi.DIFF_INSERT].length;b++)try{var c=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][b].data).documentElement.cloneNode(!1); @@ -8751,36 +8752,36 @@ null!=b[c].xmlValue&&(b[c].xmlValue="["+b[c].xmlValue.length+"]"),null!=b[c].sty b){if(null!=a.attributes)for(var c=0;c<a.attributes.length;c++)"as"!=a.attributes[c].name&&a.setAttribute(a.attributes[c].name,this.anonymizeString(a.attributes[c].value,b));if(null!=a.childNodes)for(c=0;c<a.childNodes.length;c++)this.anonymizeAttributes(a.childNodes[c],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var c=a.getElementsByTagName("mxCell"),d=0;d<c.length;d++)null!=c[d].getAttribute("value")&&c[d].setAttribute("value","["+c[d].getAttribute("value").length+"]"),null!=c[d].getAttribute("xmlValue")&& c[d].setAttribute("xmlValue","["+c[d].getAttribute("xmlValue").length+"]"),null!=c[d].getAttribute("style")&&c[d].setAttribute("style","["+c[d].getAttribute("style").length+"]"),null!=c[d].parentNode&&"root"!=c[d].parentNode.nodeName&&null!=c[d].parentNode.parentNode&&(c[d].setAttribute("id",c[d].parentNode.getAttribute("id")),c[d].parentNode.parentNode.replaceChild(c[d],c[d].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var b=this.getCurrentFile();null!=b&&(b.savingFile? this.handleError({message:mxResources.get("busy")}):!a&&b.invalidChecksum?b.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(b.clearAutosave(),this.editor.setStatus(""),a?b.reloadFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a,!0)})):b.synchronizeFile(mxUtils.bind(this,function(){b.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){b.handleFileError(a, -!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,d,e,g,k,l,n,u){e=null!=e?e:!0;g=null!=g?g:!1;var f=this.editor.graph;if(b||!a&&null!=n&&/(\.svg)$/i.test(n.getTitle()))if(u=!1,null!=this.pages&&this.currentPage!=this.pages[0]){var m=f.getGlobalVariable,f=this.createTemporaryGraph(f.getStylesheet()),p=this.pages[0];f.getGlobalVariable=function(a){return"page"==a?p.getName():"pagenumber"==a?1:m.apply(this,arguments)};document.body.appendChild(f.container);f.model.setRoot(p.root)}k=null!=k?k: -this.getXmlFileData(e,g,u);n=null!=n?n:this.getCurrentFile();a=this.createFileData(k,f,n,window.location.href,a,b,c,d,e,l,u);f!=this.editor.graph&&f.container.parentNode.removeChild(f.container);return a};EditorUi.prototype.getHtml=function(a,b,c,d,e,g){g=null!=g?g:!0;var f=null,m=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var f=g?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),p=b.view.scale;g=Math.floor(f.x/p-b.view.translate.x);p=Math.floor(f.y/p-b.view.translate.y);f=b.background; +!0)}))))};EditorUi.prototype.getFileData=function(a,b,c,d,e,g,k,l,n,t){e=null!=e?e:!0;g=null!=g?g:!1;var f=this.editor.graph;if(b||!a&&null!=n&&/(\.svg)$/i.test(n.getTitle()))if(t=!1,null!=this.pages&&this.currentPage!=this.pages[0]){var m=f.getGlobalVariable,f=this.createTemporaryGraph(f.getStylesheet()),p=this.pages[0];f.getGlobalVariable=function(a){return"page"==a?p.getName():"pagenumber"==a?1:m.apply(this,arguments)};document.body.appendChild(f.container);f.model.setRoot(p.root)}k=null!=k?k: +this.getXmlFileData(e,g,t);n=null!=n?n:this.getCurrentFile();a=this.createFileData(k,f,n,window.location.href,a,b,c,d,e,l,t);f!=this.editor.graph&&f.container.parentNode.removeChild(f.container);return a};EditorUi.prototype.getHtml=function(a,b,c,d,e,g){g=null!=g?g:!0;var f=null,m=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var f=g?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),p=b.view.scale;g=Math.floor(f.x/p-b.view.translate.x);p=Math.floor(f.y/p-b.view.translate.y);f=b.background; null==e&&(b=this.getBasenames().join(";"),0<b.length&&(m=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",g);a.setAttribute("y0",p)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom","1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=d&&a.setAttribute("edit",d));null!=e&&(e=e.replace(/&/g,"&"));a=null!=a?Graph.zapGremlins(mxUtils.getXml(a)):"";d=Graph.compress(a);Graph.decompress(d)!=a&&(d=encodeURIComponent(a)); return(null==e?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=e?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==e?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=e?'<meta http-equiv="refresh" content="0;URL=\''+e+"'\"/>\n":"")+"</head>\n<body"+(null==e&&null!=f&&f!=mxConstants.NONE?' style="background-color:'+f+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+ -d+"</div>\n</div>\n"+(null==e?'<script type="text/javascript" src="'+m+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+e+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,c,d,e){b=EditorUi.drawHost+"/js/viewer.min.js";null!=e&&(e=e.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:Graph.zapGremlins(a), -toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==e?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=e?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==e?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=e?'<meta http-equiv="refresh" content="0;URL=\''+e+"'\"/>\n": -"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==e?'<script type="text/javascript" src="'+b+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+e+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a= -this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var b=Editor.extractParserError(a,mxResources.get("invalidOrMissingFile"));if(b)throw Error(b);b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a&&"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<b.length||1==b.length&&b[0].hasAttribute("name"))){var c=null;this.fileNode=a;this.pages=[];for(var d=0;d<b.length;d++)null== -b[d].getAttribute("id")&&b[d].setAttribute("id",d),a=new DiagramPage(b[d]),null==a.getName()&&a.setName(mxResources.get("pageWithNumber",[d+1])),this.pages.push(a),null!=urlParams["page-id"]&&a.getId()==urlParams["page-id"]&&(c=a);this.currentPage=null!=c?c:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")), -this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");a={};for(d=0;d<f.length;d++)a[f[d]]=!0;for(var e=this.editor.graph.getModel(),g=e.getChildren(e.root),d=0;d<g.length;d++){var k=g[d];e.setVisible(k,a[k.id]||!1)}}catch(D){}};EditorUi.prototype.getBaseFilename=function(a){var b= -this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(b)||/(\.html)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.png)$/i.test(b)||/(\.drawio)$/i.test(b))b=b.substring(0,b.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(b=b+"-"+this.currentPage.getName());return b};EditorUi.prototype.downloadFile=function(a,b,c,d,e,g,k,l,n,u,x){try{d= -null!=d?d:this.editor.graph.isSelectionEmpty();var f=this.getBaseFilename(!e),m=f+"."+a;if("xml"==a){var p='<?xml version="1.0" encoding="UTF-8"?>\n'+this.getFileData(!0,null,null,null,d,e,null,null,null,b);this.saveData(m,a,p,"text/xml")}else if("html"==a)p=this.getHtml2(this.getFileData(!0),this.editor.graph,f),this.saveData(m,a,p,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?m=f+".png":"jpeg"==a&&(m=f+".jpg"),this.saveRequest(m, -a,mxUtils.bind(this,function(b,c){try{var f=this.editor.graph.pageVisible;null!=g&&(this.editor.graph.pageVisible=g);var m=this.createDownloadRequest(b,a,d,c,k,e,l,n,u,x);this.editor.graph.pageVisible=f;return m}catch(X){this.handleError(X)}}));else{var q=null,t=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(q)}))});if("svg"== -a){var v=this.editor.graph.background;if(k||v==mxConstants.NONE)v=null;var y=this.editor.graph.getSvg(v,null,null,null,null,d);c&&this.editor.graph.addSvgShadow(y);this.convertImages(y,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();t('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else m=f+".svg",q=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop(); -t(a)}),d)}}catch(E){this.handleError(E)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,d,e,g,k,l,n,u){var f=this.editor.graph,m=f.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==g?!1:"xmlpng"!=b);var p="",q="";if(m.width*m.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};u=u?"1":"0";"pdf"==b&&0==g&&(q="&allPages=1");if("xmlpng"==b&&(u="1",b="png",null!=this.pages&&null!=this.currentPage))for(g=0;g<this.pages.length;g++)if(this.pages[g]== -this.currentPage){p="&from="+g;break}g=f.background;"png"==b&&e?g=mxConstants.NONE:e||null!=g&&g!=mxConstants.NONE||(g="#ffffff");e={globalVars:f.getExportVariables()};n&&(e.grid={size:f.gridSize,steps:f.view.gridSteps,color:f.view.gridColor});return new mxXmlRequest(EXPORT_URL,"format="+b+p+q+"&bg="+(null!=g?g:mxConstants.NONE)+"&base64="+d+"&embedXml="+u+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(e))+(null!=k?"&scale="+ -k:"")+(null!=l?"&border="+l:""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,b,c){var d=window.location.hash,f=mxUtils.bind(this,function(c){var f=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<f.length&&(f+="\n"),f+=c);c=new LocalFile(this,"csv"!=a.format&&0<f.length?f:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"==a.format&&this.importCsv(f, -mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var m=null!=a.interval?parseInt(a.interval):6E4,e=null,p=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),g()):this.handleError({message:mxResources.get("error")+ +d+"</div>\n</div>\n"+(null==e?'<script type="text/javascript" src="'+m+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+e+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,c,d,e){b=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer.min.js";null!=e&&(e=e.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled, +resize:!0,xml:Graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==e?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=e?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==e?null!=c?"<title>"+mxUtils.htmlEntities(c)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=e?'<meta http-equiv="refresh" content="0;URL=\''+ +e+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==e?'<script type="text/javascript" src="'+b+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+e+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData= +function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var b=Editor.extractParserError(a,mxResources.get("invalidOrMissingFile"));if(b)throw Error(b);b=null!=a?this.editor.extractGraphModel(a,!0):null;null!=b&&(a=b);if(null!=a&&"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<b.length||1==b.length&&b[0].hasAttribute("name"))){var c=null;this.fileNode=a;this.pages=[];for(var d= +0;d<b.length;d++)null==b[d].getAttribute("id")&&b[d].setAttribute("id",d),a=new DiagramPage(b[d]),null==a.getName()&&a.setName(mxResources.get("pageWithNumber",[d+1])),this.pages.push(a),null!=urlParams["page-id"]&&a.getId()==urlParams["page-id"]&&(c=a);this.currentPage=null!=c?c:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage= +new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");a={};for(d=0;d<f.length;d++)a[f[d]]=!0;for(var e=this.editor.graph.getModel(),g=e.getChildren(e.root),d=0;d<g.length;d++){var k=g[d];e.setVisible(k,a[k.id]||!1)}}catch(C){}}; +EditorUi.prototype.getBaseFilename=function(a){var b=this.getCurrentFile(),b=null!=b&&null!=b.getTitle()?b.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(b)||/(\.html)$/i.test(b)||/(\.svg)$/i.test(b)||/(\.png)$/i.test(b)||/(\.drawio)$/i.test(b))b=b.substring(0,b.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(b=b+"-"+this.currentPage.getName());return b};EditorUi.prototype.downloadFile= +function(a,b,c,d,e,g,k,l,n,t,y){try{d=null!=d?d:this.editor.graph.isSelectionEmpty();var f=this.getBaseFilename(!e),m=f+"."+a;if("xml"==a){var p='<?xml version="1.0" encoding="UTF-8"?>\n'+this.getFileData(!0,null,null,null,d,e,null,null,null,b);this.saveData(m,a,p,"text/xml")}else if("html"==a)p=this.getHtml2(this.getFileData(!0),this.editor.graph,f),this.saveData(m,a,p,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?m=f+".png":"jpeg"== +a&&(m=f+".jpg"),this.saveRequest(m,a,mxUtils.bind(this,function(b,c){try{var f=this.editor.graph.pageVisible;null!=g&&(this.editor.graph.pageVisible=g);var m=this.createDownloadRequest(b,a,d,c,k,e,l,n,t,y);this.editor.graph.pageVisible=f;return m}catch(X){this.handleError(X)}}));else{var q=null,u=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(m,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this, +function(){mxUtils.popup(q)}))});if("svg"==a){var v=this.editor.graph.background;if(k||v==mxConstants.NONE)v=null;var x=this.editor.graph.getSvg(v,null,null,null,null,d);c&&this.editor.graph.addSvgShadow(x);this.convertImages(x,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();u('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else m=f+".svg",q=this.getFileData(!1, +!0,null,mxUtils.bind(this,function(a){this.spinner.stop();u(a)}),d)}}catch(E){this.handleError(E)}};EditorUi.prototype.createDownloadRequest=function(a,b,c,d,e,g,k,l,n,t){var f=this.editor.graph,m=f.getGraphBounds();c=this.getFileData(!0,null,null,null,c,0==g?!1:"xmlpng"!=b);var p="",q="";if(m.width*m.height>MAX_AREA||c.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};t=t?"1":"0";"pdf"==b&&0==g&&(q="&allPages=1");if("xmlpng"==b&&(t="1",b="png",null!=this.pages&&null!=this.currentPage))for(g= +0;g<this.pages.length;g++)if(this.pages[g]==this.currentPage){p="&from="+g;break}g=f.background;"png"==b&&e?g=mxConstants.NONE:e||null!=g&&g!=mxConstants.NONE||(g="#ffffff");e={globalVars:f.getExportVariables()};n&&(e.grid={size:f.gridSize,steps:f.view.gridSteps,color:f.view.gridColor});return new mxXmlRequest(EXPORT_URL,"format="+b+p+q+"&bg="+(null!=g?g:mxConstants.NONE)+"&base64="+d+"&embedXml="+t+"&xml="+encodeURIComponent(c)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(e))+ +(null!=k?"&scale="+k:"")+(null!=l?"&border="+l:""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,b,c){var d=window.location.hash,f=mxUtils.bind(this,function(c){var f=null!=a.data?a.data:"";null!=c&&0<c.length&&(0<f.length&&(f+="\n"),f+=c);c=new LocalFile(this,"csv"!=a.format&&0<f.length?f:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);c.getHash=function(){return d};this.fileLoaded(c);"csv"== +a.format&&this.importCsv(f,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var m=null!=a.interval?parseInt(a.interval):6E4,e=null,p=mxUtils.bind(this,function(){var b=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){b===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),g()):this.handleError({message:mxResources.get("error")+ " "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),g=mxUtils.bind(this,function(){window.clearTimeout(e);e=window.setTimeout(p,m)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){g();p()}));g();p()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var m=a.url;/^https?:\/\//.test(m)&&!this.editor.isCorsEnabledForUrl(m)&&(m=PROXY_URL+"?url="+encodeURIComponent(m));this.loadUrl(m,mxUtils.bind(this,function(a){f(a)}),mxUtils.bind(this,function(a){null!=c&& c(a)}))}else f("")};EditorUi.prototype.updateDiagram=function(a){function b(a){var b=new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,a.valign,a.offset);b.addListener(mxEvent.CLICK,function(b,c){d.alert(a.tooltip)});return b}var c=null,d=this;if(null!=a&&0<a.length&&(c=mxUtils.parseXml(a),a=null!=c?c.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,e=f.getModel();e.beginUpdate();var g=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var k=e.getCell(a.getAttribute("id")); -if(null!=k){try{var l=a.getAttribute("value");if(null!=l){var n=mxUtils.parseXml(l).documentElement;if(null!=n)if("1"==n.getAttribute("replace-value"))e.setValue(k,n);else for(var x=n.attributes,A=0;A<x.length;A++)f.setAttributeForCell(k,x[A].nodeName,0<x[A].nodeValue.length?x[A].nodeValue:null)}}catch(K){null!=window.console&&console.log("Error in value for "+k.id+": "+K)}try{var C=a.getAttribute("style");null!=C&&f.model.setStyle(k,C)}catch(K){null!=window.console&&console.log("Error in style for "+ -k.id+": "+K)}try{var u=a.getAttribute("icon");if(null!=u){var I=0<u.length?JSON.parse(u):null;null!=I&&I.append||f.removeCellOverlays(k);null!=I&&f.addCellOverlay(k,b(I))}}catch(K){null!=window.console&&console.log("Error in icon for "+k.id+": "+K)}try{var F=a.getAttribute("geometry");if(null!=F){var F=JSON.parse(F),G=f.getCellGeometry(k);if(null!=G){G=G.clone();for(key in F){var J=parseFloat(F[key]);"dx"==key?G.x+=J:"dy"==key?G.y+=J:"dw"==key?G.width+=J:"dh"==key?G.height+=J:G[key]=parseFloat(F[key])}f.model.setGeometry(k, -G)}}}catch(K){null!=window.console&&console.log("Error in icon for "+k.id+": "+K)}}}else if("model"==a.nodeName){for(var E=a.firstChild;null!=E&&E.nodeType!=mxConstants.NODETYPE_ELEMENT;)E=E.nextSibling;null!=E&&(new mxCodec(a.firstChild)).decode(E,e)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"== +if(null!=k){try{var l=a.getAttribute("value");if(null!=l){var n=mxUtils.parseXml(l).documentElement;if(null!=n)if("1"==n.getAttribute("replace-value"))e.setValue(k,n);else for(var y=n.attributes,B=0;B<y.length;B++)f.setAttributeForCell(k,y[B].nodeName,0<y[B].nodeValue.length?y[B].nodeValue:null)}}catch(K){null!=window.console&&console.log("Error in value for "+k.id+": "+K)}try{var D=a.getAttribute("style");null!=D&&f.model.setStyle(k,D)}catch(K){null!=window.console&&console.log("Error in style for "+ +k.id+": "+K)}try{var t=a.getAttribute("icon");if(null!=t){var F=0<t.length?JSON.parse(t):null;null!=F&&F.append||f.removeCellOverlays(k);null!=F&&f.addCellOverlay(k,b(F))}}catch(K){null!=window.console&&console.log("Error in icon for "+k.id+": "+K)}try{var G=a.getAttribute("geometry");if(null!=G){var G=JSON.parse(G),I=f.getCellGeometry(k);if(null!=I){I=I.clone();for(key in G){var J=parseFloat(G[key]);"dx"==key?I.x+=J:"dy"==key?I.y+=J:"dw"==key?I.width+=J:"dh"==key?I.height+=J:I[key]=parseFloat(G[key])}f.model.setGeometry(k, +I)}}}catch(K){null!=window.console&&console.log("Error in icon for "+k.id+": "+K)}}}else if("model"==a.nodeName){for(var E=a.firstChild;null!=E&&E.nodeType!=mxConstants.NODETYPE_ELEMENT;)E=E.nextSibling;null!=E&&(new mxCodec(a.firstChild)).decode(E,e)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"== a.nodeName&&(g=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{e.endUpdate()}null!=g&&this.chromelessResize&&this.chromelessResize(!0,g)}return c};EditorUi.prototype.getCopyFilename=function(a,b){var c=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,d="",f=c.lastIndexOf(".");0<=f&&(d=c.substring(f),c=c.substring(0,f));if(b)var m=new Date,f=m.getFullYear(),e=m.getMonth()+1,g=m.getDate(),k=m.getHours(),l=m.getMinutes(),m=m.getSeconds(),c= c+(" "+(f+"-"+e+"-"+g+"-"+k+"-"+l+"-"+m));return c=mxResources.get("copyOf",[c])+d};EditorUi.prototype.fileLoaded=function(a,b){var c=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var d=!1;this.hideDialog();null!=c&&(EditorUi.debug("File.closed",[c]),c.removeListener(this.descriptorChangedListener),c.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var f=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=c&&this.updateDocumentTitle(); this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!b&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();b||this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0; this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();delete this.openingFile;this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+ mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));d=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:a.getMode().toUpperCase()+"-OPEN-FILE-"+ a.getHash(),action:"size_"+a.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")});EditorUi.debug("File.opened",[a]);if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),title:a.getTitle(),mode:a.getMode()})}catch(z){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(z){}}catch(z){this.fileLoadedError=z;null!=window.console&&(console.error(z),console.log("error in fileLoaded:", -a,z));if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=z&&null!=z.message?":err:"+encodeURIComponent(z.message):"")+(null!=z&&null!=z.stack?"&stack="+encodeURIComponent(z.stack):"")}catch(y){}var m=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))? +a,z));if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=z&&null!=z.message?":err:"+encodeURIComponent(z.message):"")+(null!=z&&null!=z.stack?"&stack="+encodeURIComponent(z.stack):"")}catch(x){}var m=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))? window.location.search=this.getSearch(["url"]):null!=c?this.fileLoaded(c):f()});b?m():this.handleError(z,mxResources.get("errorLoadingFile"),m,!0)}else f();return d};EditorUi.prototype.getHashValueForPages=function(a,b){var c=0,d=new mxGraphModel,f=new mxCodec;null!=b&&(b.byteCount=0,b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var m=0;m<a.length;m++){this.updatePageRoot(a[m]);var e=a[m].node.cloneNode(!1);e.removeAttribute("name");d.root=a[m].root;var g=f.encode(d);this.editor.graph.saveViewState(a[m].viewState, g,!0);g.removeAttribute("pageWidth");g.removeAttribute("pageHeight");e.appendChild(g);null!=b&&(b.eltCount+=e.getElementsByTagName("*").length,b.nodeCount+=e.getElementsByTagName("mxCell").length);c=(c<<5)-c+this.hashValue(e,function(a,b,c,d){return!d||"mxGeometry"!=a.nodeName&&"mxPoint"!=a.nodeName||"x"!=b&&"y"!=b&&"width"!=b&&"height"!=b?d&&"mxCell"==a.nodeName&&"previous"==b?null:c:Math.round(c)},b)<<0}return c};EditorUi.prototype.hashValue=function(a,b,c){var d=0;if(null!=a&&"object"===typeof a&& "number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(d^=this.hashValue(a.nodeName,b,c));if(null!=a.attributes){null!=c&&(c.attrCount+=a.attributes.length);for(var f=0;f<a.attributes.length;f++){var m=a.attributes[f].name,e=null!=b?b(a,m,a.attributes[f].value,!0):a.attributes[f].value;null!=e&&(d^=this.hashValue(m,b,c)+this.hashValue(e,b,c))}}if(null!=a.childNodes)for(f=0;f<a.childNodes.length;f++)d=(d<<5)-d+this.hashValue(a.childNodes[f], @@ -8790,19 +8791,19 @@ LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title null!=a?a:b.firstChild.nextSibling.nextSibling;var c=b.lastChild,d=c.previousSibling;b.insertBefore(c,a);b.insertBefore(d,c)};EditorUi.prototype.loadLibrary=function(a,b){var c=mxUtils.parseXml(a.getData());if("mxlibrary"==c.documentElement.nodeName){var d=JSON.parse(mxUtils.getTextContent(c.documentElement));this.libraryLoaded(a,d,c.documentElement.getAttribute("title"),b)}else throw{message:mxResources.get("notALibraryFile")};};EditorUi.prototype.getLibraryStorageHint=function(a){return""};EditorUi.prototype.libraryLoaded= function(a,b,c,d){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var f=this.sidebar.palettes[a.getHash()],f=null!=f?f[f.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var m=null,e=mxUtils.bind(this,function(b,c){0==b.length&&a.isEditable()?(null==m&&(m=document.createElement("div"),m.className="geDropTarget",mxUtils.write(m,mxResources.get("dragElementsHere"))),c.appendChild(m)):this.addLibraryEntries(b, c)});null!=this.sidebar&&null!=b&&this.sidebar.addEntries(b);c=null!=c&&0<c.length?c:a.getTitle();var p=this.sidebar.addPalette(a.getHash(),c,null!=d?d:!0,mxUtils.bind(this,function(a){e(b,a)}));this.repositionLibrary(f);var g=p.parentNode.previousSibling;d=g.getAttribute("title");null!=d&&0<d.length&&".scratchpad"!=a.title&&g.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+d);var k=document.createElement("div");k.style.position="absolute";k.style.right="0px";k.style.top="0px";k.style.padding= -"8px";mxClient.IS_QUIRKS||8==document.documentMode||(k.style.backgroundColor="inherit");g.style.position="relative";var x=document.createElement("img");x.setAttribute("src",Dialog.prototype.closeImage);x.setAttribute("title",mxResources.get("close"));x.setAttribute("valign","absmiddle");x.setAttribute("border","0");x.style.cursor="pointer";x.style.margin="0 3px";var l=null;if(".scratchpad"!=a.title||this.closableScratchpad)k.appendChild(x),mxEvent.addListener(x,"click",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b)){var c= -mxUtils.bind(this,function(){this.closeLibrary(a)});null!=l?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(b)}}));if(a.isEditable()){var t=this.editor.graph,n=null,u=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),p,b,a,a.getMode());mxEvent.consume(c)}),F=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=n&&null!=n.parentNode&&n.parentNode.removeChild(n),n=x.cloneNode(!1), -n.setAttribute("src",Editor.spinImage),n.setAttribute("title",mxResources.get("saving")),n.style.cursor="default",n.style.marginRight="2px",n.style.marginTop="-2px",k.insertBefore(n,k.firstChild),g.style.paddingRight=18*k.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=n&&null!=n.parentNode&&(n.parentNode.removeChild(n),g.style.paddingRight=18*k.childNodes.length+"px")})):null==l&&(l=x.cloneNode(!1),l.setAttribute("src",IMAGE_PATH+"/download.png"),l.setAttribute("title", -mxResources.get("save")),k.insertBefore(l,k.firstChild),mxEvent.addListener(l,"click",mxUtils.bind(this,function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==l||a.isModified()||(g.style.paddingRight=18*k.childNodes.length+"px",l.parentNode.removeChild(l),l=null)});mxEvent.consume(c)})),g.style.paddingRight=18*k.childNodes.length+"px")}),G=mxUtils.bind(this,function(a,c,d,f){a=t.cloneCells(mxUtils.sortCells(t.model.getTopmostCells(a)));for(var e= -0;e<a.length;e++){var g=t.getCellGeometry(a[e]);null!=g&&g.translate(-c.x,-c.y)}p.appendChild(this.sidebar.createVertexTemplateFromCells(a,c.width,c.height,f||"",!0,!1,!1));a={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=f&&(a.title=f);b.push(a);F(d);null!=m&&null!=m.parentNode&&0<b.length&&(m.parentNode.removeChild(m),m=null)}),J=mxUtils.bind(this,function(a){if(t.isSelectionEmpty())t.getRubberband().isActive()?(t.getRubberband().execute(a),t.getRubberband().reset()): -this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=t.getSelectionCells(),c=t.view.getBounds(b),d=t.view.scale;c.x/=d;c.y/=d;c.width/=d;c.height/=d;c.x-=t.view.translate.x;c.y-=t.view.translate.y;G(b,c)}mxEvent.consume(a)});mxEvent.addGestureListeners(p,function(){},mxUtils.bind(this,function(a){t.isMouseDown&&null!=t.panningManager&&null!=t.graphHandler.first&&(t.graphHandler.suspend(),null!=t.graphHandler.hint&&(t.graphHandler.hint.style.visibility= -"hidden"),p.style.backgroundColor="#f1f3f4",p.style.cursor="copy",t.panningManager.stop(),t.autoScroll=!1,mxEvent.consume(a))}),mxUtils.bind(this,function(a){t.isMouseDown&&null!=t.panningManager&&null!=t.graphHandler&&(p.style.backgroundColor="",p.style.cursor="default",this.sidebar.showTooltips=!0,t.panningManager.stop(),t.graphHandler.reset(),t.isMouseDown=!1,t.autoScroll=!0,J(a),mxEvent.consume(a))}));mxEvent.addListener(p,"mouseleave",mxUtils.bind(this,function(a){t.isMouseDown&&null!=t.graphHandler.first&& -(t.graphHandler.resume(),null!=t.graphHandler.hint&&(t.graphHandler.hint.style.visibility="visible"),p.style.backgroundColor="",p.style.cursor="",t.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(p,"dragover",mxUtils.bind(this,function(a){p.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";p.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"drop",mxUtils.bind(this,function(a){p.style.cursor="";p.style.backgroundColor= -"";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,f,g,k,q,x,t,l){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,k,q),c)],c[0].vertex=!0,G(c,new mxRectangle(0,0,k,q),a,mxEvent.isAltDown(a)?null:x.substring(0,x.lastIndexOf(".")).replace(/_/g," ")),null!=m&&null!=m.parentNode&&0<b.length&& -(m.parentNode.removeChild(m),m=null);else{var n=!1,v=mxUtils.bind(this,function(c,d){if(null!=c&&"application/pdf"==d){var f=Editor.extractGraphModelFromPdf(c);null!=f&&0<f.length&&(d="text/xml",c=f)}if(null!=c&&"text/xml"==d)if(f=mxUtils.parseXml(c),"mxlibrary"==f.documentElement.nodeName)try{var g=JSON.parse(mxUtils.getTextContent(f.documentElement));e(g,p);b=b.concat(g);F(a);this.spinner.stop();n=!0}catch(M){}else if("mxfile"==f.documentElement.nodeName)try{for(var k=f.documentElement.getElementsByTagName("diagram"), -g=0;g<k.length;g++){var q=this.stringToCells(Editor.getDiagramNodeXml(k[g])),x=this.editor.graph.getBoundingBoxFromGeometry(q);G(q,new mxRectangle(0,0,x.width,x.height),a)}n=!0}catch(M){null!=window.console&&console.log("error in drop handler:",M)}n||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=m&&null!=m.parentNode&&0<b.length&&(m.parentNode.removeChild(m),m=null)});null!=l&&null!=x&&(/(\.v(dx|sdx?))($|\?)/i.test(x)||/(\.vs(x|sx?))($|\?)/i.test(x))? -this.importVisio(l,function(a){v(a,"text/xml")},null,x):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,x)&&null!=l?this.parseFile(l,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?v(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):v(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"dragleave", -function(a){p.style.cursor="";p.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));x=x.cloneNode(!1);x.setAttribute("src",Editor.editImage);x.setAttribute("title",mxResources.get("edit"));k.insertBefore(x,k.firstChild);mxEvent.addListener(x,"click",u);mxEvent.addListener(p,"dblclick",function(a){mxEvent.getSource(a)==p&&u(a)});d=x.cloneNode(!1);d.setAttribute("src",Editor.plusImage);d.setAttribute("title",mxResources.get("add"));k.insertBefore(d,k.firstChild);mxEvent.addListener(d, +"8px";mxClient.IS_QUIRKS||8==document.documentMode||(k.style.backgroundColor="inherit");g.style.position="relative";var y=document.createElement("img");y.setAttribute("src",Dialog.prototype.closeImage);y.setAttribute("title",mxResources.get("close"));y.setAttribute("valign","absmiddle");y.setAttribute("border","0");y.style.cursor="pointer";y.style.margin="0 3px";var l=null;if(".scratchpad"!=a.title||this.closableScratchpad)k.appendChild(y),mxEvent.addListener(y,"click",mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b)){var c= +mxUtils.bind(this,function(){this.closeLibrary(a)});null!=l?this.confirm(mxResources.get("allChangesLost"),null,c,mxResources.get("cancel"),mxResources.get("discardChanges")):c();mxEvent.consume(b)}}));if(a.isEditable()){var n=this.editor.graph,u=null,t=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),p,b,a,a.getMode());mxEvent.consume(c)}),G=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=u&&null!=u.parentNode&&u.parentNode.removeChild(u),u=y.cloneNode(!1), +u.setAttribute("src",Editor.spinImage),u.setAttribute("title",mxResources.get("saving")),u.style.cursor="default",u.style.marginRight="2px",u.style.marginTop="-2px",k.insertBefore(u,k.firstChild),g.style.paddingRight=18*k.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=u&&null!=u.parentNode&&(u.parentNode.removeChild(u),g.style.paddingRight=18*k.childNodes.length+"px")})):null==l&&(l=y.cloneNode(!1),l.setAttribute("src",IMAGE_PATH+"/download.png"),l.setAttribute("title", +mxResources.get("save")),k.insertBefore(l,k.firstChild),mxEvent.addListener(l,"click",mxUtils.bind(this,function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==l||a.isModified()||(g.style.paddingRight=18*k.childNodes.length+"px",l.parentNode.removeChild(l),l=null)});mxEvent.consume(c)})),g.style.paddingRight=18*k.childNodes.length+"px")}),I=mxUtils.bind(this,function(a,c,d,f){a=n.cloneCells(mxUtils.sortCells(n.model.getTopmostCells(a)));for(var e= +0;e<a.length;e++){var g=n.getCellGeometry(a[e]);null!=g&&g.translate(-c.x,-c.y)}p.appendChild(this.sidebar.createVertexTemplateFromCells(a,c.width,c.height,f||"",!0,!1,!1));a={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=f&&(a.title=f);b.push(a);G(d);null!=m&&null!=m.parentNode&&0<b.length&&(m.parentNode.removeChild(m),m=null)}),J=mxUtils.bind(this,function(a){if(n.isSelectionEmpty())n.getRubberband().isActive()?(n.getRubberband().execute(a),n.getRubberband().reset()): +this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var b=n.getSelectionCells(),c=n.view.getBounds(b),d=n.view.scale;c.x/=d;c.y/=d;c.width/=d;c.height/=d;c.x-=n.view.translate.x;c.y-=n.view.translate.y;I(b,c)}mxEvent.consume(a)});mxEvent.addGestureListeners(p,function(){},mxUtils.bind(this,function(a){n.isMouseDown&&null!=n.panningManager&&null!=n.graphHandler.first&&(n.graphHandler.suspend(),null!=n.graphHandler.hint&&(n.graphHandler.hint.style.visibility= +"hidden"),p.style.backgroundColor="#f1f3f4",p.style.cursor="copy",n.panningManager.stop(),n.autoScroll=!1,mxEvent.consume(a))}),mxUtils.bind(this,function(a){n.isMouseDown&&null!=n.panningManager&&null!=n.graphHandler&&(p.style.backgroundColor="",p.style.cursor="default",this.sidebar.showTooltips=!0,n.panningManager.stop(),n.graphHandler.reset(),n.isMouseDown=!1,n.autoScroll=!0,J(a),mxEvent.consume(a))}));mxEvent.addListener(p,"mouseleave",mxUtils.bind(this,function(a){n.isMouseDown&&null!=n.graphHandler.first&& +(n.graphHandler.resume(),null!=n.graphHandler.hint&&(n.graphHandler.hint.style.visibility="visible"),p.style.backgroundColor="",p.style.cursor="",n.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(p,"dragover",mxUtils.bind(this,function(a){p.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";p.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"drop",mxUtils.bind(this,function(a){p.style.cursor="";p.style.backgroundColor= +"";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,f,g,k,q,y,l,n){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,k,q),c)],c[0].vertex=!0,I(c,new mxRectangle(0,0,k,q),a,mxEvent.isAltDown(a)?null:y.substring(0,y.lastIndexOf(".")).replace(/_/g," ")),null!=m&&null!=m.parentNode&&0<b.length&& +(m.parentNode.removeChild(m),m=null);else{var u=!1,v=mxUtils.bind(this,function(c,d){if(null!=c&&"application/pdf"==d){var f=Editor.extractGraphModelFromPdf(c);null!=f&&0<f.length&&(d="text/xml",c=f)}if(null!=c&&"text/xml"==d)if(f=mxUtils.parseXml(c),"mxlibrary"==f.documentElement.nodeName)try{var g=JSON.parse(mxUtils.getTextContent(f.documentElement));e(g,p);b=b.concat(g);G(a);this.spinner.stop();u=!0}catch(M){}else if("mxfile"==f.documentElement.nodeName)try{for(var k=f.documentElement.getElementsByTagName("diagram"), +g=0;g<k.length;g++){var q=this.stringToCells(Editor.getDiagramNodeXml(k[g])),y=this.editor.graph.getBoundingBoxFromGeometry(q);I(q,new mxRectangle(0,0,y.width,y.height),a)}u=!0}catch(M){null!=window.console&&console.log("error in drop handler:",M)}u||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=m&&null!=m.parentNode&&0<b.length&&(m.parentNode.removeChild(m),m=null)});null!=n&&null!=y&&(/(\.v(dx|sdx?))($|\?)/i.test(y)||/(\.vs(x|sx?))($|\?)/i.test(y))? +this.importVisio(n,function(a){v(a,"text/xml")},null,y):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,y)&&null!=n?this.parseFile(n,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?v(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):v(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(p,"dragleave", +function(a){p.style.cursor="";p.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));y=y.cloneNode(!1);y.setAttribute("src",Editor.editImage);y.setAttribute("title",mxResources.get("edit"));k.insertBefore(y,k.firstChild);mxEvent.addListener(y,"click",t);mxEvent.addListener(p,"dblclick",function(a){mxEvent.getSource(a)==p&&t(a)});d=y.cloneNode(!1);d.setAttribute("src",Editor.plusImage);d.setAttribute("title",mxResources.get("add"));k.insertBefore(d,k.firstChild);mxEvent.addListener(d, "click",J);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(d=document.createElement("span"),d.setAttribute("title",mxResources.get("help")),d.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(d,"?"),mxEvent.addGestureListeners(d,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),k.insertBefore(d,k.firstChild))}g.appendChild(k);g.style.paddingRight=18*k.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries= function(a,b){for(var c=0;c<a.length;c++){var d=a[c],f=d.data;if(null!=f){var f=this.convertDataUri(f),m="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(m+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(m+"image="+f,d.w,d.h,"",d.title||"",!1,!1,!0))}else null!=d.xml&&(f=this.stringToCells(Graph.decompress(d.xml)),0<f.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(f,d.w,d.h,d.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource= function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS? @@ -8818,16 +8819,16 @@ m=null!=a&&null!=a.error?a.error:a;if(null!=m||null!=b){var p=mxUtils.htmlEntiti l.lastIndexOf("%26ex")):l.substring(2);this.showError(b,p,mxResources.get("openInNewWindow"),mxUtils.bind(this,function(){this.editor.graph.openLink("https://drive.google.com/open?id="+l);this.handleError(a,b,c,d,e)}),q,mxResources.get("changeUser"),mxUtils.bind(this,function(){function a(){f.innerHTML="";for(var a=0;a<b.length;a++){var c=document.createElement("option");mxUtils.write(c,b[a].displayName);c.value=a;f.appendChild(c);c=document.createElement("option");c.innerHTML=" "; mxUtils.write(c,"<"+b[a].email+">");c.setAttribute("disabled","disabled");f.appendChild(c)}c=document.createElement("option");mxUtils.write(c,mxResources.get("addAccount"));c.value=b.length;f.appendChild(c)}var b=this.drive.getUsersList(),c=document.createElement("div"),d=document.createElement("span");d.style.marginTop="6px";mxUtils.write(d,mxResources.get("changeUser")+": ");c.appendChild(d);var f=document.createElement("select");f.style.width="200px";a();mxEvent.addListener(f,"change",mxUtils.bind(this, function(){var c=f.value,d=b.length!=c;d&&this.drive.setUser(b[c]);this.drive.authorize(d,mxUtils.bind(this,function(){d||(b=this.drive.getUsersList(),a())}),mxUtils.bind(this,function(a){this.handleError(a)}),!0)}));c.appendChild(f);c=new CustomDialog(this,c,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(c.container,300,75,!0,!0)}),mxResources.get("cancel"),mxUtils.bind(this,function(){this.hideDialog();null!=c&&c()}),480,150);return}}null!=m.message? -p=mxUtils.htmlEntities(m.message):null!=m.response&&null!=m.response.error?p=mxUtils.htmlEntities(m.response.error):"undefined"!==typeof window.App&&(m.code==App.ERROR_TIMEOUT?p=mxUtils.htmlEntities(mxResources.get("timeout")):m.code==App.ERROR_BUSY&&(p=mxUtils.htmlEntities(mxResources.get("busy"))))}var t=g=null;null!=m&&null!=m.helpLink&&(g=mxResources.get("help"),t=mxUtils.bind(this,function(){return this.editor.graph.openLink(m.helpLink)}));this.showError(b,p,k,c,q,null,null,g,t,null,null,null, +p=mxUtils.htmlEntities(m.message):null!=m.response&&null!=m.response.error?p=mxUtils.htmlEntities(m.response.error):"undefined"!==typeof window.App&&(m.code==App.ERROR_TIMEOUT?p=mxUtils.htmlEntities(mxResources.get("timeout")):m.code==App.ERROR_BUSY&&(p=mxUtils.htmlEntities(mxResources.get("busy"))))}var n=g=null;null!=m&&null!=m.helpLink&&(g=mxResources.get("help"),n=mxUtils.bind(this,function(){return this.editor.graph.openLink(m.helpLink)}));this.showError(b,p,k,c,q,null,null,g,n,null,null,null, d?c:null)}else null!=c&&c()};EditorUi.prototype.alert=function(a,b){var c=new ErrorDialog(this,null,a,mxResources.get("ok"),b);this.showDialog(c.container,340,100,!0,!1);c.init()};EditorUi.prototype.confirm=function(a,b,c,d,e,g){var f=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},m=Math.min(200,28*Math.ceil(a.length/50));a=new ConfirmDialog(this,a,function(){f();null!=b&&b()},function(){f();null!=c&&c()},d,e,null,null,null,null,m);this.showDialog(a.container,340,46+ m,!0,g);a.init()};EditorUi.prototype.setCurrentFile=function(a){null!=a&&(a.opened=new Date);this.currentFile=a};EditorUi.prototype.getCurrentFile=function(){return this.currentFile};EditorUi.prototype.isExportToCanvas=function(){return this.editor.isExportToCanvas()};EditorUi.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};EditorUi.prototype.createImageDataUri=function(a,b,c,d){var f=a.toDataURL("image/"+c);if(6>=f.length||f==a.cloneNode(!1).toDataURL("image/"+ c))throw{message:"Invalid image"};null!=b&&(f=this.writeGraphModelToPng(f,"tEXt","mxfile",encodeURIComponent(b)));0<d&&(f=this.writeGraphModelToPng(f,"pHYs","dpi",d));return f};EditorUi.prototype.saveCanvas=function(a,b,c,d,e){var f="jpeg"==c?"jpg":c;d=this.getBaseFilename(d)+"."+f;a=this.createImageDataUri(a,b,c,e);this.saveData(d,f,a.substring(a.lastIndexOf(",")+1),"image/"+c,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&& "undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,b){var c=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));c.textarea.style.width="600px";c.textarea.style.height="380px";this.showDialog(c.container,620,460,!0,!0,null,null,null,null,!0);c.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile= function(a,b,c,d,e){if(window.Blob&&navigator.msSaveOrOpenBlob)a=d?this.base64ToBlob(a,c):new Blob([a],{type:c}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)c=window.open("about:blank","_blank"),null==c?mxUtils.popup(a,!0):(c.document.write(a),c.document.close(),c.document.execCommand("SaveAs",!0,b),c.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==c||"image/"!=c.substring(0,6)?this.showTextDialog(b+":",a):this.openInNewWindow(a,c,d);else{var f=document.createElement("a"), -m=0>navigator.userAgent.indexOf("PaleMoon/")&&!mxClient.IS_IOS&&"undefined"!==typeof f.download;if(mxClient.IS_GC)var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),m=65==(g?parseInt(g[2],10):!1)?!1:m;if(m||this.isOffline()){f.href=URL.createObjectURL(d?this.base64ToBlob(a,c):new Blob([a],{type:c}));m?f.download=b:f.setAttribute("target","_blank");document.body.appendChild(f);try{window.setTimeout(function(){URL.revokeObjectURL(f.href)},0),f.click(),f.parentNode.removeChild(f)}catch(D){}}else this.createEchoRequest(a, -b,c,d,e).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,d,e,g){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=e?"&format="+e:"")+(null!=g?"&base64="+g:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(d?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,f=Math.ceil(d/1024),m=Array(f),e=0;e<f;++e){for(var g=1024*e,k=Math.min(g+1024,d),l=Array(k-g),x=0;g<k;++x,++g)l[x]= +m=0>navigator.userAgent.indexOf("PaleMoon/")&&!mxClient.IS_IOS&&"undefined"!==typeof f.download;if(mxClient.IS_GC)var g=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),m=65==(g?parseInt(g[2],10):!1)?!1:m;if(m||this.isOffline()){f.href=URL.createObjectURL(d?this.base64ToBlob(a,c):new Blob([a],{type:c}));m?f.download=b:f.setAttribute("target","_blank");document.body.appendChild(f);try{window.setTimeout(function(){URL.revokeObjectURL(f.href)},0),f.click(),f.parentNode.removeChild(f)}catch(C){}}else this.createEchoRequest(a, +b,c,d,e).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,c,d,e,g){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=c?"&mime="+c:"")+(null!=e?"&format="+e:"")+(null!=g?"&base64="+g:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(d?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,f=Math.ceil(d/1024),m=Array(f),e=0;e<f;++e){for(var g=1024*e,k=Math.min(g+1024,d),l=Array(k-g),y=0;g<k;++y,++g)l[y]= c[g].charCodeAt(0);m[e]=new Uint8Array(l)}return new Blob(m,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,c,d,e,g,k){g=null!=g?g:!1;k=null!=k?k:"vsdx"!=e&&(!mxClient.IS_IOS||!navigator.standalone);e=this.getServiceCount(g);isLocalStorage&&e++;var f=4>=e?2:6<e?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(b,f){try{if("_blank"==f)if(null!=c&&"image/"==c.substring(0,6))this.openInNewWindow(a,c,d);else{var e=window.open("about:blank");null==e?mxUtils.popup(a,!0):(e.document.write("<pre>"+ -mxUtils.htmlEntities(a,!1)+"</pre>"),e.document.close())}else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(a,b,c,d):null!=b&&0<b.length&&this.pickFolder(f,mxUtils.bind(this,function(e){try{this.exportFile(a,b,c,d,f,e)}catch(C){this.handleError(C)}}))}catch(A){this.handleError(A)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,g,k,null,1<e,f,a,c,d);g=this.isServices(e)?e>f?390:270:160;this.showDialog(b.container,400,g,!0,!0);b.init()}; +mxUtils.htmlEntities(a,!1)+"</pre>"),e.document.close())}else f==App.MODE_DEVICE||"download"==f?this.doSaveLocalFile(a,b,c,d):null!=b&&0<b.length&&this.pickFolder(f,mxUtils.bind(this,function(e){try{this.exportFile(a,b,c,d,f,e)}catch(D){this.handleError(D)}}))}catch(B){this.handleError(B)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,g,k,null,1<e,f,a,c,d);g=this.isServices(e)?e>f?390:270:160;this.showDialog(b.container,400,g,!0,!0);b.init()}; EditorUi.prototype.openInNewWindow=function(a,b,c){var d=window.open("about:blank");null==d||null==d.document?mxUtils.popup(a,!0):("image/svg+xml"!=b||mxClient.IS_SVG?(c=c?a:btoa(unescape(encodeURIComponent(a))),"image/svg+xml"==b?mxClient.IS_GC&&mxClient.IS_MAC?d.document.write('<html><object style="max-width:100%;" data="data:'+b+";base64,"+c+'"/></html>'):d.document.write("<html>"+a+"</html>"):d.document.write('<html><img style="max-width:100%;" src="data:'+b+";base64,"+c+'"/></html>')):d.document.write("<html><pre>"+ mxUtils.htmlEntities(a,!1)+"</pre></html>"),d.document.close())};var d=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var b=a(mxUtils.bind(this,function(a){var c=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",c);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)c.apply(this); else{this.exportDialog=document.createElement("div");var d=b.getBoundingClientRect();mxUtils.setPrefixedStyle(this.exportDialog.style,"borderRadius","5px");this.exportDialog.style.position="fixed";this.exportDialog.style.textAlign="center";this.exportDialog.style.fontFamily="Helvetica,Arial";this.exportDialog.style.backgroundColor="#000000";this.exportDialog.style.width="50px";this.exportDialog.style.height="50px";this.exportDialog.style.padding="4px 2px 4px 2px";this.exportDialog.style.color="#ffffff"; @@ -8835,11 +8836,11 @@ mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=d.left+"px this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var b=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow"));a.setAttribute("border","0");a.setAttribute("src",b);this.exportDialog.appendChild(a);mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(b.substring(b.indexOf(",")+ 1),"image/png",!0);c.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",c);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}d.apply(this,arguments)};EditorUi.prototype.saveData=function(a,b,c,d,e){this.isLocalFileSave()?this.saveLocalFile(c,a,d,e,b):this.saveRequest(a,b,mxUtils.bind(this,function(a, f){return this.createEchoRequest(c,a,d,e,b,f)}),c,e,d)};EditorUi.prototype.saveRequest=function(a,b,c,d,e,g,k){k=null!=k?k:!mxClient.IS_IOS||!navigator.standalone;var f=this.getServiceCount(!1);isLocalStorage&&f++;var m=4>=f?2:6<f?4:3;a=new CreateDialog(this,a,mxUtils.bind(this,function(a,f){if("_blank"==f||null!=a&&0<a.length){var e=c("_blank"==f?null:a,f==App.MODE_DEVICE||"download"==f||null==f||"_blank"==f?"0":"1");null!=e&&(f==App.MODE_DEVICE||"download"==f||"_blank"==f?e.simulate(document,"_blank"): -this.pickFolder(f,mxUtils.bind(this,function(c){g=null!=g?g:"pdf"==b?"application/pdf":"image/"+b;if(null!=d)try{this.exportFile(d,a,g,!0,f,c)}catch(B){this.handleError(B)}else this.spinner.spin(document.body,mxResources.get("saving"))&&e.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=e.getStatus()&&299>=e.getStatus())try{this.exportFile(e.getText(),a,g,!0,f,c)}catch(B){this.handleError(B)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(a){this.spinner.stop(); +this.pickFolder(f,mxUtils.bind(this,function(c){g=null!=g?g:"pdf"==b?"application/pdf":"image/"+b;if(null!=d)try{this.exportFile(d,a,g,!0,f,c)}catch(A){this.handleError(A)}else this.spinner.spin(document.body,mxResources.get("saving"))&&e.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=e.getStatus()&&299>=e.getStatus())try{this.exportFile(e.getText(),a,g,!0,f,c)}catch(A){this.handleError(A)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(a){this.spinner.stop(); this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,k,null,1<f,m,d,g,e);f=this.isServices(f)?4<f?390:270:160;this.showDialog(a.container,380,f,!0,!0);a.init()};EditorUi.prototype.isServices=function(a){return 1!=a};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,c,d,e,g){};EditorUi.prototype.pickFolder=function(a,b,c){b(null)};EditorUi.prototype.exportSvg= -function(a,b,c,d,e,g,k,l,n,u){if(this.spinner.spin(document.body,mxResources.get("export")))try{var f=this.editor.graph.isSelectionEmpty();c=null!=c?c:f;var m=b?null:this.editor.graph.background;m==mxConstants.NONE&&(m=null);null==m&&0==b&&(m="#ffffff");var p=this.editor.graph.getSvg(m,a,k,l,null,c,null,null,"blank"==u?"_blank":"self"==u?"_top":null,null,!0);d&&this.editor.graph.addSvgShadow(p);var q=this.getBaseFilename()+".svg",t=mxUtils.bind(this,function(a){this.spinner.stop();e&&a.setAttribute("content", +function(a,b,c,d,e,g,k,l,n,t){if(this.spinner.spin(document.body,mxResources.get("export")))try{var f=this.editor.graph.isSelectionEmpty();c=null!=c?c:f;var m=b?null:this.editor.graph.background;m==mxConstants.NONE&&(m=null);null==m&&0==b&&(m="#ffffff");var p=this.editor.graph.getSvg(m,a,k,l,null,c,null,null,"blank"==t?"_blank":"self"==t?"_top":null,null,!0);d&&this.editor.graph.addSvgShadow(p);var q=this.getBaseFilename()+".svg",u=mxUtils.bind(this,function(a){this.spinner.stop();e&&a.setAttribute("content", this.getFileData(!0,null,null,null,c,n,null,null,null,!1));var b='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||b.length<=MAX_REQUEST_SIZE?this.saveData(q,"svg",b,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(b)}))});this.editor.addFontCss(p);this.editor.graph.mathEnabled&& -this.editor.addMathCss(p);g?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(p,t,this.thumbImageCache)):t(p)}catch(F){this.handleError(F)}};EditorUi.prototype.addRadiobox=function(a,b,c,d,e,g,k){return this.addCheckbox(a,c,d,e,g,k,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,d,e,g,k,l){g=null!=g?g:!0;var f=document.createElement("input");f.style.marginRight="8px";f.style.marginTop="16px";f.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();f.id= +this.editor.addMathCss(p);g?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(p,u,this.thumbImageCache)):u(p)}catch(G){this.handleError(G)}};EditorUi.prototype.addRadiobox=function(a,b,c,d,e,g,k){return this.addCheckbox(a,c,d,e,g,k,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,c,d,e,g,k,l){g=null!=g?g:!0;var f=document.createElement("input");f.style.marginRight="8px";f.style.marginTop="16px";f.setAttribute("type",k?"radio":"checkbox");k="geCheckbox-"+Editor.guid();f.id= k;null!=l&&f.setAttribute("name",l);c&&(f.setAttribute("checked","checked"),f.defaultChecked=!0);d&&f.setAttribute("disabled","disabled");g&&(a.appendChild(f),c=document.createElement("label"),mxUtils.write(c,b),c.setAttribute("for",k),a.appendChild(c),e||mxUtils.br(a));return f};EditorUi.prototype.addEditButton=function(a,b){var c=this.addCheckbox(a,mxResources.get("edit")+":",!0,null,!0);c.style.marginLeft="24px";var d=this.getCurrentFile(),f="";null!=d&&d.getMode()!=App.MODE_DEVICE&&d.getMode()!= App.MODE_BROWSER&&(f=window.location.href);var e=document.createElement("select");e.style.width="120px";e.style.marginLeft="8px";e.style.marginRight="10px";e.className="geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));e.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d,mxResources.get("custom")+"...");e.appendChild(d);a.appendChild(e);mxEvent.addListener(e,"change",mxUtils.bind(this, function(){if("custom"==e.value){var a=new FilenameDialog(this,f,mxResources.get("ok"),function(a){null!=a?f=a:e.value="blank"},mxResources.get("url"),null,null,null,null,function(){e.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(c,"change",mxUtils.bind(this,function(){c.checked&&(null==b||b.checked)?e.removeAttribute("disabled"):e.setAttribute("disabled","disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===e.value?"_blank": @@ -8848,67 +8849,67 @@ d.style.width="100px";d.style.marginLeft="8px";d.style.marginRight="10px";d.clas (f=document.createElement("option"),f.setAttribute("value","frame"),mxUtils.write(f,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(f));a.appendChild(d);mxUtils.write(a,mxResources.get("borderColor")+":");var e="#0000ff",m=null,m=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(e||"none",function(a){e=a;c()});mxEvent.consume(a)}));c();m.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";m.style.marginLeft="4px";m.style.height="22px";m.style.width= "22px";m.style.position="relative";m.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";m.className="geColorBtn";a.appendChild(m);mxUtils.br(a);return{getColor:function(){return e},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createLink=function(a,b,c,d,e,g,k,l){var f=this.getCurrentFile(),m=[];d&&(m.push("lightbox=1"),"auto"!=a&&m.push("target="+a),null!=b&&b!=mxConstants.NONE&&m.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)), null!=e&&0<e.length&&m.push("edit="+encodeURIComponent(e)),g&&m.push("layers=1"),this.editor.graph.foldingEnabled&&m.push("nav=1"));c&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&m.push("page-id="+this.currentPage.getId());a=!0;null!=k?c="#U"+encodeURIComponent(k):(f=this.getCurrentFile(),l||null==f||f.constructor!=window.DriveFile?c="#R"+encodeURIComponent(c?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))): -(c="#"+f.getHash(),a=!1));a&&null!=f&&null!=f.getTitle()&&f.getTitle()!=this.defaultFilename&&m.push("title="+encodeURIComponent(f.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<m.length?"?"+m.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,d,e,g,k,l,n,u,x){this.getBasenames();var f={};""!=e&&e!=mxConstants.NONE&&(f.highlight=e);"auto"!==d&&(f.target=d);n||(f.lightbox= -!1);f.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(f.zoom=c/100);c=[];k&&(c.push("pages"),f.resize=!0,null!=this.pages&&null!=this.currentPage&&(f.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),f.resize=!0);l&&c.push("layers");0<c.length&&(n&&c.push("lightbox"),f.toolbar=c.join(" "));null!=u&&0<u.length&&(f.edit=u);null!=a?f.url=a:f.xml=this.getFileData(!0,null,null,null,null,!k);b='<div class="mxgraph" style="'+(g?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;": -"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(f))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";x(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,d){var f=document.createElement("div"); +(c="#"+f.getHash(),a=!1));a&&null!=f&&null!=f.getTitle()&&f.getTitle()!=this.defaultFilename&&m.push("title="+encodeURIComponent(f.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<m.length?"?"+m.join("&"):"")+c};EditorUi.prototype.createHtml=function(a,b,c,d,e,g,k,l,n,t,y){this.getBasenames();var f={};""!=e&&e!=mxConstants.NONE&&(f.highlight=e);"auto"!==d&&(f.target=d);n||(f.lightbox= +!1);f.nav=this.editor.graph.foldingEnabled;c=parseInt(c);isNaN(c)||100==c||(f.zoom=c/100);c=[];k&&(c.push("pages"),f.resize=!0,null!=this.pages&&null!=this.currentPage&&(f.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(c.push("zoom"),f.resize=!0);l&&c.push("layers");0<c.length&&(n&&c.push("lightbox"),f.toolbar=c.join(" "));null!=t&&0<t.length&&(f.edit=t);null!=a?f.url=a:f.xml=this.getFileData(!0,null,null,null,null,!k);b='<div class="mxgraph" style="'+(g?"max-width:100%;":"")+(""!=c?"border:1px solid transparent;": +"")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(f))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";y(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,c,d){var f=document.createElement("div"); f.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("html"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(e);var m=document.createElement("div");m.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var g=document.createElement("input");g.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";g.setAttribute("value","url");g.setAttribute("type","radio");g.setAttribute("name", "type-embedhtmldialog");e=g.cloneNode(!0);e.setAttribute("value","copy");m.appendChild(e);var p=document.createElement("span");mxUtils.write(p,mxResources.get("includeCopyOfMyDiagram"));m.appendChild(p);mxUtils.br(m);m.appendChild(g);p=document.createElement("span");mxUtils.write(p,mxResources.get("publicDiagramUrl"));m.appendChild(p);var k=this.getCurrentFile();null==c&&null!=k&&k.constructor==window.DriveFile&&(p=document.createElement("a"),p.style.paddingLeft="12px",p.style.color="gray",p.setAttribute("href", -"javascript:void(0);"),mxUtils.write(p,mxResources.get("share")),m.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(k.getId())})));e.setAttribute("checked","checked");null==c&&g.setAttribute("disabled","disabled");f.appendChild(m);var x=this.addLinkSection(f),l=this.addCheckbox(f,mxResources.get("zoom"),!0,null,!0);mxUtils.write(f,":");var n=document.createElement("input");n.setAttribute("type","text");n.style.marginRight="16px"; -n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight="12px";n.value="100%";f.appendChild(n);var t=this.addCheckbox(f,mxResources.get("fit"),!0),m=null!=this.pages&&1<this.pages.length,u=u=this.addCheckbox(f,mxResources.get("allPages"),m,!m),F=this.addCheckbox(f,mxResources.get("layers"),!0),G=this.addCheckbox(f,mxResources.get("lightbox"),!0),J=this.addEditButton(f,G),E=J.getEditInput();E.style.marginBottom="16px";mxEvent.addListener(G,"change",function(){G.checked?E.removeAttribute("disabled"): -E.setAttribute("disabled","disabled");E.checked&&G.checked?J.getEditSelect().removeAttribute("disabled"):J.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,f,mxUtils.bind(this,function(){d(g.checked?c:null,l.checked,n.value,x.getTarget(),x.getColor(),t.checked,u.checked,F.checked,G.checked,J.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace= +"javascript:void(0);"),mxUtils.write(p,mxResources.get("share")),m.appendChild(p),mxEvent.addListener(p,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(k.getId())})));e.setAttribute("checked","checked");null==c&&g.setAttribute("disabled","disabled");f.appendChild(m);var y=this.addLinkSection(f),l=this.addCheckbox(f,mxResources.get("zoom"),!0,null,!0);mxUtils.write(f,":");var n=document.createElement("input");n.setAttribute("type","text");n.style.marginRight="16px"; +n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight="12px";n.value="100%";f.appendChild(n);var u=this.addCheckbox(f,mxResources.get("fit"),!0),m=null!=this.pages&&1<this.pages.length,t=t=this.addCheckbox(f,mxResources.get("allPages"),m,!m),G=this.addCheckbox(f,mxResources.get("layers"),!0),I=this.addCheckbox(f,mxResources.get("lightbox"),!0),J=this.addEditButton(f,I),E=J.getEditInput();E.style.marginBottom="16px";mxEvent.addListener(I,"change",function(){I.checked?E.removeAttribute("disabled"): +E.setAttribute("disabled","disabled");E.checked&&I.checked?J.getEditSelect().removeAttribute("disabled"):J.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,f,mxUtils.bind(this,function(){d(g.checked?c:null,l.checked,n.value,y.getTarget(),y.getColor(),u.checked,t.checked,G.checked,I.checked,J.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,c,d,e,g){var f=document.createElement("div");f.style.whiteSpace= "nowrap";var m=document.createElement("h3");mxUtils.write(m,a||mxResources.get("link"));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";f.appendChild(m);var p=this.getCurrentFile(),m="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=p&&p.constructor==window.DriveFile&&!b){a=80;var m="https://desk.draw.io/support/solutions/articles/16000039384",k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;"; -var x=document.createElement("div");x.style.whiteSpace="normal";mxUtils.write(x,mxResources.get("linkAccountRequired"));k.appendChild(x);x=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(p.getId())}));x.style.marginTop="12px";x.className="geBtn";k.appendChild(x);f.appendChild(k);x=document.createElement("a");x.style.paddingLeft="12px";x.style.color="gray";x.style.fontSize="11px";x.setAttribute("href","javascript:void(0);");mxUtils.write(x,mxResources.get("check")); -k.appendChild(x);mxEvent.addListener(x,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var q=null,l=null;if(null!=c||null!=d)a+=30,mxUtils.write(f,mxResources.get("width")+":"),q=document.createElement("input"), -q.setAttribute("type","text"),q.style.marginRight="16px",q.style.width="50px",q.style.marginLeft="6px",q.style.marginRight="16px",q.style.marginBottom="10px",q.value="100%",f.appendChild(q),mxUtils.write(f,mxResources.get("height")+":"),l=document.createElement("input"),l.setAttribute("type","text"),l.style.width="50px",l.style.marginLeft="6px",l.style.marginBottom="10px",l.value=d+"px",f.appendChild(l),mxUtils.br(f);var n=this.addLinkSection(f,g);c=null!=this.pages&&1<this.pages.length;var t=null; -if(null==p||p.constructor!=window.DriveFile||b)t=this.addCheckbox(f,mxResources.get("allPages"),c,!c);var v=this.addCheckbox(f,mxResources.get("lightbox"),!0),u=this.addEditButton(f,v),J=u.getEditInput(),E=this.addCheckbox(f,mxResources.get("layers"),!0);E.style.marginLeft=J.style.marginLeft;E.style.marginBottom="16px";E.style.marginTop="8px";mxEvent.addListener(v,"change",function(){v.checked?(E.removeAttribute("disabled"),J.removeAttribute("disabled")):(E.setAttribute("disabled","disabled"),J.setAttribute("disabled", -"disabled"));J.checked&&v.checked?u.getEditSelect().removeAttribute("disabled"):u.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,f,mxUtils.bind(this,function(){e(n.getTarget(),n.getColor(),null==t?!0:t.checked,v.checked,u.getLink(),E.checked,null!=q?q.value:null,null!=l?l.value:null)}),null,mxResources.get("create"),m);this.showDialog(b.container,340,254+a,!0,!0);null!=q?(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select(): +var y=document.createElement("div");y.style.whiteSpace="normal";mxUtils.write(y,mxResources.get("linkAccountRequired"));k.appendChild(y);y=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(p.getId())}));y.style.marginTop="12px";y.className="geBtn";k.appendChild(y);f.appendChild(k);y=document.createElement("a");y.style.paddingLeft="12px";y.style.color="gray";y.style.fontSize="11px";y.setAttribute("href","javascript:void(0);");mxUtils.write(y,mxResources.get("check")); +k.appendChild(y);mxEvent.addListener(y,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var q=null,l=null;if(null!=c||null!=d)a+=30,mxUtils.write(f,mxResources.get("width")+":"),q=document.createElement("input"), +q.setAttribute("type","text"),q.style.marginRight="16px",q.style.width="50px",q.style.marginLeft="6px",q.style.marginRight="16px",q.style.marginBottom="10px",q.value="100%",f.appendChild(q),mxUtils.write(f,mxResources.get("height")+":"),l=document.createElement("input"),l.setAttribute("type","text"),l.style.width="50px",l.style.marginLeft="6px",l.style.marginBottom="10px",l.value=d+"px",f.appendChild(l),mxUtils.br(f);var n=this.addLinkSection(f,g);c=null!=this.pages&&1<this.pages.length;var u=null; +if(null==p||p.constructor!=window.DriveFile||b)u=this.addCheckbox(f,mxResources.get("allPages"),c,!c);var v=this.addCheckbox(f,mxResources.get("lightbox"),!0),t=this.addEditButton(f,v),J=t.getEditInput(),E=this.addCheckbox(f,mxResources.get("layers"),!0);E.style.marginLeft=J.style.marginLeft;E.style.marginBottom="16px";E.style.marginTop="8px";mxEvent.addListener(v,"change",function(){v.checked?(E.removeAttribute("disabled"),J.removeAttribute("disabled")):(E.setAttribute("disabled","disabled"),J.setAttribute("disabled", +"disabled"));J.checked&&v.checked?t.getEditSelect().removeAttribute("disabled"):t.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,f,mxUtils.bind(this,function(){e(n.getTarget(),n.getColor(),null==u?!0:u.checked,v.checked,t.getLink(),E.checked,null!=q?q.value:null,null!=l?l.value:null)}),null,mxResources.get("create"),m);this.showDialog(b.container,340,254+a,!0,!0);null!=q?(q.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select(): document.execCommand("selectAll",!1,null)):n.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,c,d,e){var f=document.createElement("div");f.style.whiteSpace="nowrap";var m=document.createElement("h3");mxUtils.write(m,mxResources.get("image"));m.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(e?"10":"4")+"px";f.appendChild(m);if(e){mxUtils.write(f,mxResources.get("zoom")+":");var g=document.createElement("input");g.setAttribute("type","text");g.style.marginRight= -"16px";g.style.width="60px";g.style.marginLeft="4px";g.style.marginRight="12px";g.value=this.lastExportZoom||"100%";f.appendChild(g);mxUtils.write(f,mxResources.get("borderWidth")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.value=this.lastExportBorder||"0";f.appendChild(p);mxUtils.br(f)}var k=this.addCheckbox(f,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),x=d?null:this.addCheckbox(f, -mxResources.get("includeCopyOfMyDiagram"),!0),m=this.editor.graph,l=d?null:this.addCheckbox(f,mxResources.get("transparentBackground"),m.background==mxConstants.NONE||null==m.background);null!=l&&(l.style.marginBottom="16px");a=new CustomDialog(this,f,mxUtils.bind(this,function(){var a=parseInt(g.value)/100||1,b=parseInt(p.value)||0;c(!k.checked,null!=x?x.checked:!1,null!=l?l.checked:!1,a,b)}),null,a,b);this.showDialog(a.container,300,(e?25:0)+(d?125:210),!0,!0)};EditorUi.prototype.showExportDialog= +"16px";g.style.width="60px";g.style.marginLeft="4px";g.style.marginRight="12px";g.value=this.lastExportZoom||"100%";f.appendChild(g);mxUtils.write(f,mxResources.get("borderWidth")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.value=this.lastExportBorder||"0";f.appendChild(p);mxUtils.br(f)}var k=this.addCheckbox(f,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),y=d?null:this.addCheckbox(f, +mxResources.get("includeCopyOfMyDiagram"),!0),m=this.editor.graph,l=d?null:this.addCheckbox(f,mxResources.get("transparentBackground"),m.background==mxConstants.NONE||null==m.background);null!=l&&(l.style.marginBottom="16px");a=new CustomDialog(this,f,mxUtils.bind(this,function(){var a=parseInt(g.value)/100||1,b=parseInt(p.value)||0;c(!k.checked,null!=y?y.checked:!1,null!=l?l.checked:!1,a,b)}),null,a,b);this.showDialog(a.container,300,(e?25:0)+(d?125:210),!0,!0)};EditorUi.prototype.showExportDialog= function(a,b,c,d,e,g,k,l){k=null!=k?k:!0;var f=document.createElement("div");f.style.whiteSpace="nowrap";var m=this.editor.graph,p="jpeg"==l?196:300,q=document.createElement("h3");mxUtils.write(q,a);q.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";f.appendChild(q);mxUtils.write(f,mxResources.get("zoom")+":");var n=document.createElement("input");n.setAttribute("type","text");n.style.marginRight="16px";n.style.width="60px";n.style.marginLeft="4px";n.style.marginRight= -"12px";n.value=this.lastExportZoom||"100%";f.appendChild(n);mxUtils.write(f,mxResources.get("borderWidth")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.value=this.lastExportBorder||"0";f.appendChild(t);mxUtils.br(f);var v=this.addCheckbox(f,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=l),u=this.addCheckbox(f,mxResources.get("selectionOnly"),!1,m.isSelectionEmpty()),y=document.createElement("input"); -y.style.marginTop="16px";y.style.marginRight="8px";y.style.marginLeft="24px";y.setAttribute("disabled","disabled");y.setAttribute("type","checkbox");g&&(f.appendChild(y),mxUtils.write(f,mxResources.get("crop")),mxUtils.br(f),p+=26,mxEvent.addListener(u,"change",function(){u.checked?y.removeAttribute("disabled"):y.setAttribute("disabled","disabled")}));m.isSelectionEmpty()||(y.setAttribute("checked","checked"),y.defaultChecked=!0);var z=this.addCheckbox(f,mxResources.get("shadow"),m.shadowVisible), +"12px";n.value=this.lastExportZoom||"100%";f.appendChild(n);mxUtils.write(f,mxResources.get("borderWidth")+":");var u=document.createElement("input");u.setAttribute("type","text");u.style.marginRight="16px";u.style.width="60px";u.style.marginLeft="4px";u.value=this.lastExportBorder||"0";f.appendChild(u);mxUtils.br(f);var v=this.addCheckbox(f,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=l),t=this.addCheckbox(f,mxResources.get("selectionOnly"),!1,m.isSelectionEmpty()),x=document.createElement("input"); +x.style.marginTop="16px";x.style.marginRight="8px";x.style.marginLeft="24px";x.setAttribute("disabled","disabled");x.setAttribute("type","checkbox");g&&(f.appendChild(x),mxUtils.write(f,mxResources.get("crop")),mxUtils.br(f),p+=26,mxEvent.addListener(t,"change",function(){t.checked?x.removeAttribute("disabled"):x.setAttribute("disabled","disabled")}));m.isSelectionEmpty()||(x.setAttribute("checked","checked"),x.defaultChecked=!0);var z=this.addCheckbox(f,mxResources.get("shadow"),m.shadowVisible), E=document.createElement("input");E.style.marginTop="16px";E.style.marginRight="8px";E.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||E.setAttribute("disabled","disabled");b&&(f.appendChild(E),mxUtils.write(f,mxResources.get("embedImages")),mxUtils.br(f),p+=26);var K=null;if("png"==l||"jpeg"==l)K=this.addCheckbox(f,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),p+=26;var O=this.addCheckbox(f,mxResources.get("includeCopyOfMyDiagram"),k,null,null, "jpeg"!=l),R=null!=this.pages&&1<this.pages.length,X=this.addCheckbox(f,R?mxResources.get("allPages"):"",R,!R,null,"jpeg"!=l);X.style.marginLeft="24px";X.style.marginBottom="16px";R?p+=26:X.style.display="none";mxEvent.addListener(O,"change",function(){O.checked&&R?X.removeAttribute("disabled"):X.setAttribute("disabled","disabled")});k&&R||X.setAttribute("disabled","disabled");var U=document.createElement("select");U.style.maxWidth="260px";U.style.marginLeft="8px";U.style.marginRight="10px";U.className= "geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));U.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));U.appendChild(a);a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));U.appendChild(a);"svg"==l&&(mxUtils.write(f,mxResources.get("links")+":"),f.appendChild(U),mxUtils.br(f),mxUtils.br(f), -p+=26);c=new CustomDialog(this,f,mxUtils.bind(this,function(){this.lastExportBorder=t.value;this.lastExportZoom=n.value;e(n.value,v.checked,!u.checked,z.checked,O.checked,E.checked,t.value,y.checked,!X.checked,U.value,null!=K?K.checked:null)}),null,c,d);this.showDialog(c.container,340,p,!0,!0,null,null,null,null,!0);n.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a, -b,c,d,e){var f=document.createElement("div");f.style.whiteSpace="nowrap";var m=this.editor.graph;if(null!=b){var g=document.createElement("h3");mxUtils.write(g,b);g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";f.appendChild(g)}var p=this.addCheckbox(f,mxResources.get("fit"),!0),k=this.addCheckbox(f,mxResources.get("shadow"),m.shadowVisible&&d,!d),x=this.addCheckbox(f,c),l=this.addCheckbox(f,mxResources.get("lightbox"),!0),n=this.addEditButton(f,l),t=n.getEditInput(), -v=1<m.model.getChildCount(m.model.getRoot()),u=this.addCheckbox(f,mxResources.get("layers"),v,!v);u.style.marginLeft=t.style.marginLeft;u.style.marginBottom="12px";u.style.marginTop="8px";mxEvent.addListener(l,"change",function(){l.checked?(v&&u.removeAttribute("disabled"),t.removeAttribute("disabled")):(u.setAttribute("disabled","disabled"),t.setAttribute("disabled","disabled"));t.checked&&l.checked?n.getEditSelect().removeAttribute("disabled"):n.getEditSelect().setAttribute("disabled","disabled")}); -b=new CustomDialog(this,f,mxUtils.bind(this,function(){a(p.checked,k.checked,x.checked,l.checked,n.getLink(),u.checked)}),null,mxResources.get("embed"),e);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,d,e,g,k,l){function f(b){var f=" ",p="";d&&(f=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ -EditorUi.drawHost+"/?client=1&lightbox=1"+(e?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",p+="cursor:pointer;");a&&(p+="max-width:100%;");var x="";c&&(x=' width="'+Math.round(m.width)+'" height="'+Math.round(m.height)+'"');k('<img src="'+b+'"'+x+(""!=p?' style="'+p+'"':"")+f+"/>")}var m=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=d?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");f(a)}),null,null,null, +p+=26);c=new CustomDialog(this,f,mxUtils.bind(this,function(){this.lastExportBorder=u.value;this.lastExportZoom=n.value;e(n.value,v.checked,!t.checked,z.checked,O.checked,E.checked,u.value,x.checked,!X.checked,U.value,null!=K?K.checked:null)}),null,c,d);this.showDialog(c.container,340,p,!0,!0,null,null,null,null,!0);n.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?n.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(a, +b,c,d,e){var f=document.createElement("div");f.style.whiteSpace="nowrap";var m=this.editor.graph;if(null!=b){var g=document.createElement("h3");mxUtils.write(g,b);g.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";f.appendChild(g)}var p=this.addCheckbox(f,mxResources.get("fit"),!0),k=this.addCheckbox(f,mxResources.get("shadow"),m.shadowVisible&&d,!d),y=this.addCheckbox(f,c),l=this.addCheckbox(f,mxResources.get("lightbox"),!0),n=this.addEditButton(f,l),u=n.getEditInput(), +v=1<m.model.getChildCount(m.model.getRoot()),t=this.addCheckbox(f,mxResources.get("layers"),v,!v);t.style.marginLeft=u.style.marginLeft;t.style.marginBottom="12px";t.style.marginTop="8px";mxEvent.addListener(l,"change",function(){l.checked?(v&&t.removeAttribute("disabled"),u.removeAttribute("disabled")):(t.setAttribute("disabled","disabled"),u.setAttribute("disabled","disabled"));u.checked&&l.checked?n.getEditSelect().removeAttribute("disabled"):n.getEditSelect().setAttribute("disabled","disabled")}); +b=new CustomDialog(this,f,mxUtils.bind(this,function(){a(p.checked,k.checked,y.checked,l.checked,n.getLink(),t.checked)}),null,mxResources.get("embed"),e);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,c,d,e,g,k,l){function f(b){var f=" ",p="";d&&(f=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(e?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",p+="cursor:pointer;");a&&(p+="max-width:100%;");var y="";c&&(y=' width="'+Math.round(m.width)+'" height="'+Math.round(m.height)+'"');k('<img src="'+b+'"'+y+(""!=p?' style="'+p+'"':"")+f+"/>")}var m=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=d?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");f(a)}),null,null,null, mxUtils.bind(this,function(a){l({message:mxResources.get("unknownError")})}),null,!0,c?2:1,null,b);else if(b=this.getFileData(!0),m.width*m.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var p="";c&&(p="&w="+Math.round(2*m.width)+"&h="+Math.round(2*m.height));var q=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(d?"1":"0")+p+"&xml="+encodeURIComponent(b));q.send(mxUtils.bind(this,function(){200<=q.getStatus()&&299>=q.getStatus()?f("data:image/png;base64,"+q.getText()):l({message:mxResources.get("unknownError")})}))}else l({message:mxResources.get("drawingTooLarge")})}; -EditorUi.prototype.createEmbedSvg=function(a,b,c,d,e,g,k){var f=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!c),m=f.getElementsByTagName("a");if(null!=m)for(var p=0;p<m.length;p++){var x=m[p].getAttribute("href");null!=x&&"#"==x.charAt(0)&&"_blank"==m[p].getAttribute("target")&&m[p].removeAttribute("target")}d&&f.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(f);if(c){var l=" ",q="";d&&(l="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ +EditorUi.prototype.createEmbedSvg=function(a,b,c,d,e,g,k){var f=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!c),m=f.getElementsByTagName("a");if(null!=m)for(var p=0;p<m.length;p++){var y=m[p].getAttribute("href");null!=y&&"#"==y.charAt(0)&&"_blank"==m[p].getAttribute("target")&&m[p].removeAttribute("target")}d&&f.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(f);if(c){var l=" ",q="";d&&(l="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ EditorUi.drawHost+"/?client=1&lightbox=1"+(e?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",q+="cursor:pointer;");a&&(q+="max-width:100%;");this.convertImages(f,mxUtils.bind(this,function(a){k('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=q?' style="'+q+'"':"")+l+"/>")}))}else q="",d&&(f.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+ EditorUi.drawHost+"/?client=1&lightbox=1"+(e?"&edit=_blank":"")+(g?"&layers=1":"")+"');}}})(this);"),q+="cursor:pointer;"),a&&(a=parseInt(f.getAttribute("width")),b=parseInt(f.getAttribute("height")),f.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),q+="max-width:100%;max-height:"+b+"px;",f.removeAttribute("height")),""!=q&&f.setAttribute("style",q),this.editor.addFontCss(f),this.editor.graph.mathEnabled&&this.editor.addMathCss(f),k(mxUtils.getXml(f))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date- a)/1E3);var b=Math.floor(a/31536E3);if(1<b)return b+" "+mxResources.get("years");b=Math.floor(a/2592E3);if(1<b)return b+" "+mxResources.get("months");b=Math.floor(a/86400);if(1<b)return b+" "+mxResources.get("days");b=Math.floor(a/3600);if(1<b)return b+" "+mxResources.get("hours");b=Math.floor(a/60);return 1<b?b+" "+mxResources.get("minutes"):1==b?b+" "+mxResources.get("minute"):null};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var c=null;if("diagram"==a.nodeName)c=a;else if("mxfile"== a.nodeName){var d=a.getElementsByTagName("diagram");if(0<d.length){var c=d[0],f=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?c.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:f.apply(this,arguments)}}}null!=c&&(a=Editor.parseDiagramNode(c))}d=this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(q){}finally{this.editor.graph=d}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,c){try{var d=this.editor.graph,f=null;if(null!= c&&0<c.length)d=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(d.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(c).documentElement,!0),d),f=c;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var d=this.createTemporaryGraph(d.getStylesheet()),e=d.getGlobalVariable,m=this.pages[0];d.getGlobalVariable=function(a){return"page"==a?m.getName():"pagenumber"==a?1:e.apply(this,arguments)};document.body.appendChild(d.container); -d.model.setRoot(m.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==f&&(f=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var e=c.toDataURL("image/png"),e=this.writeGraphModelToPng(e,"tEXt","mxfile",encodeURIComponent(f));a(e.substring(e.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(H){null!=b&&b(H)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)}catch(y){null!= -b&&b(y)}};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,d,e,g,k,l){l=null!=l?l:!0;k=b.background;k==mxConstants.NONE&&(k=null);g=b.getSvg(k,null,null,null,null,g);b.shadowVisible&&b.addSvgShadow(g);null!=a&&g.setAttribute("content",a);null!=c&&g.setAttribute("resource",c);if(null!=e)this.embedFonts(g,mxUtils.bind(this,function(a){l?this.convertImages(a,mxUtils.bind(this,function(a){e((d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ +d.model.setRoot(m.root)}this.exportToCanvas(mxUtils.bind(this,function(c){try{null==f&&(f=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var e=c.toDataURL("image/png"),e=this.writeGraphModelToPng(e,"tEXt","mxfile",encodeURIComponent(f));a(e.substring(e.lastIndexOf(",")+1));d!=this.editor.graph&&d.container.parentNode.removeChild(d.container)}catch(H){null!=b&&b(H)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,d.shadowVisible,null,d)}catch(x){null!= +b&&b(x)}};EditorUi.prototype.getEmbeddedSvg=function(a,b,c,d,e,g,k,l){l=null!=l?l:!0;k=b.background;k==mxConstants.NONE&&(k=null);g=b.getSvg(k,null,null,null,null,g);b.shadowVisible&&b.addSvgShadow(g);null!=a&&g.setAttribute("content",a);null!=c&&g.setAttribute("resource",c);if(null!=e)this.embedFonts(g,mxUtils.bind(this,function(a){l?this.convertImages(a,mxUtils.bind(this,function(a){e((d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ mxUtils.getXml(a))})):e((d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(a))}));else return(d?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(g)};EditorUi.prototype.embedFonts=function(a,b){this.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&& -this.editor.addFontCss(a,this.editor.resolvedFontCss),this.embedExtFonts(mxUtils.bind(this,function(c){try{null!=c&&this.editor.addFontCss(a,c),b(a)}catch(t){b(a)}}))}catch(p){b(a)}}))};EditorUi.prototype.exportImage=function(a,b,c,d,e,g,k,l,n,u,x){n=null!=n?n:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var f=this.editor.graph.isSelectionEmpty();c=null!=c?c:f;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); -try{this.saveCanvas(a,e?this.getFileData(!0,null,null,null,c,l):null,n,null==this.pages||0==this.pages.length,x)}catch(B){"Invalid image"==B.message?this.downloadFile(n):this.handleError(B)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,d,null,null,g,k,u)}catch(C){this.spinner.stop(),this.handleError(C)}}};EditorUi.prototype.embedCssFonts=function(a,b){function c(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$", +this.editor.addFontCss(a,this.editor.resolvedFontCss),this.embedExtFonts(mxUtils.bind(this,function(c){try{null!=c&&this.editor.addFontCss(a,c),b(a)}catch(u){b(a)}}))}catch(p){b(a)}}))};EditorUi.prototype.exportImage=function(a,b,c,d,e,g,k,l,n,t,y){n=null!=n?n:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var f=this.editor.graph.isSelectionEmpty();c=null!=c?c:f;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); +try{this.saveCanvas(a,e?this.getFileData(!0,null,null,null,c,l):null,n,null==this.pages||0==this.pages.length,y)}catch(A){"Invalid image"==A.message?this.downloadFile(n):this.handleError(A)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,c,a||1,b,d,null,null,g,k,t)}catch(D){this.spinner.stop(),this.handleError(D)}}};EditorUi.prototype.embedCssFonts=function(a,b){function c(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$", "g"),"")}var d=a.split("url("),f=0;null==this.cachedFonts&&(this.cachedFonts={});var e=mxUtils.bind(this,function(){if(0==f){for(var a=[d[0]],e=1;e<d.length;e++){var m=d[e].indexOf(")");a.push('url("');a.push(this.cachedFonts[c(d[e].substring(0,m))]);a.push('"'+d[e].substring(m))}b(a.join(""))}});if(0<d.length){for(var m=1;m<d.length;m++){var g=d[m].indexOf(")"),k=null,l=d[m].indexOf("format(",g);0<l&&(k=c(d[m].substring(l+7,d[m].indexOf(")",l))));mxUtils.bind(this,function(a){if(null==this.cachedFonts[a]){this.cachedFonts[a]= a;f++;var b="application/x-font-ttf";if("svg"==k||/(\.svg)($|\?)/i.test(a))b="image/svg+xml";else if("otf"==k||"embedded-opentype"==k||/(\.otf)($|\?)/i.test(a))b="application/x-font-opentype";else if("woff"==k||/(\.woff)($|\?)/i.test(a))b="application/font-woff";else if("woff2"==k||/(\.woff2)($|\?)/i.test(a))b="application/font-woff2";else if("eot"==k||/(\.eot)($|\?)/i.test(a))b="application/vnd.ms-fontobject";else if("sfnt"==k||/(\.sfnt)($|\?)/i.test(a))b="application/font-sfnt";var c=a;/^https?:\/\//.test(c)&& !this.editor.isCorsEnabledForUrl(c)&&(c=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(c,mxUtils.bind(this,function(b){this.cachedFonts[a]=b;f--;e()}),mxUtils.bind(this,function(a){f--;e()}),!0,null,"data:"+b+";charset=utf-8;base64,")}})(c(d[m].substring(0,g)),k)}e()}else b(a)};EditorUi.prototype.loadFonts=function(a){null!=this.editor.fontCss&&null==this.editor.resolvedFontCss?this.embedCssFonts(this.editor.fontCss,mxUtils.bind(this,function(b){this.editor.resolvedFontCss=b;a()})):a()};EditorUi.prototype.embedExtFonts= function(a){var b=this.editor.graph.extFonts;if(null!=b&&0<b.length){var c="",d=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts={});for(var f=mxUtils.bind(this,function(){0==d&&this.embedCssFonts(c,a)}),e=0;e<b.length;e++){var g=b[e].name,k=b[e].url;0==k.indexOf(Editor.GOOGLE_FONTS)?null==this.cachedGoogleFonts[k]?(d++,this.loadUrl(k,mxUtils.bind(this,function(a){this.cachedGoogleFonts[k]=a;c+=a;d--;f()}),mxUtils.bind(this,function(a){d--;c+="@import url("+k+");";f()}))):c+=this.cachedGoogleFonts[k]: -c+='@font-face {font-family: "'+g+'";src: url("'+k+'");}'}f()}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,d,e,g,k,l,n,u,x,A,C,B,I){try{g=null!=g?g:!0;k=null!=k?k:!0;A=null!=A?A:this.editor.graph;C=null!=C?C:0;var f=n?null:A.background;f==mxConstants.NONE&&(f=null);null==f&&(f=d);null==f&&0==n&&(f="#ffffff");this.convertImages(A.getSvg(null,null,null,B,null,k,null,null,null,u),mxUtils.bind(this,function(c){try{var d=new Image;d.onload=mxUtils.bind(this,function(){try{var m=function(){mxClient.IS_SF? -window.setTimeout(function(){q.drawImage(d,C/l,C/l);a(k)},0):(q.drawImage(d,C/l,C/l),a(k))},k=document.createElement("canvas"),p=parseInt(c.getAttribute("width")),x=parseInt(c.getAttribute("height"));l=null!=l?l:1;null!=b&&(l=g?Math.min(1,Math.min(3*b/(4*x),b/p)):b/p);p=Math.ceil(l*p)+2*C;x=Math.ceil(l*x)+2*C;k.setAttribute("width",p);k.setAttribute("height",x);var q=k.getContext("2d");null!=f&&(q.beginPath(),q.rect(0,0,p,x),q.fillStyle=f,q.fill());q.scale(l,l);if(I){var n=A.view,t=n.scale;n.scale= -1;var v=btoa(unescape(encodeURIComponent(n.createSvgGrid(n.gridColor))));n.scale=t;var v="data:image/svg+xml;base64,"+v,u=A.gridSize*n.gridSteps*l,y=A.getGraphBounds(),z=n.translate.x*t,D=n.translate.y*t,B=z+(y.x-z)/t,G=D+(y.y-D)/t,H=new Image;H.onload=function(){try{for(var a=-Math.round(u-mxUtils.mod((z-B)*l,u)),b=-Math.round(u-mxUtils.mod((D-G)*l,u));a<p;a+=u)for(var c=b;c<x;c+=u)q.drawImage(H,a/l,c/l);m()}catch(M){null!=e&&e(M)}};H.onerror=function(a){null!=e&&e(a)};H.src=v}else m()}catch(Z){null!= -e&&e(Z)}});d.onerror=function(a){null!=e&&e(a)};u&&this.editor.graph.addSvgShadow(c);this.editor.graph.mathEnabled&&this.editor.addMathCss(c);var m=mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(c,this.editor.resolvedFontCss),d.src=this.createSvgDataUri(mxUtils.getXml(c))}catch(K){null!=e&&e(K)}});this.embedExtFonts(mxUtils.bind(this,function(a){try{null!=a&&this.editor.addFontCss(c,a),this.loadFonts(m)}catch(O){null!=e&&e(O)}}))}catch(K){null!=e&&e(K)}}), -c,x)}catch(G){null!=e&&e(G)}};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var f="http://"==d.substring(0,7)||"https://"==d.substring(0,8);f&&!navigator.onLine?d=c.svgBrokenImage.src:!f||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.editor.isCorsEnabledForUrl(d)?"chrome-extension://"==d.substring(0,19)||mxClient.IS_CHROMEAPP||(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+ +c+='@font-face {font-family: "'+g+'";src: url("'+k+'");}'}f()}else a()};EditorUi.prototype.exportToCanvas=function(a,b,c,d,e,g,k,l,n,t,y,B,D,A,F){try{g=null!=g?g:!0;k=null!=k?k:!0;B=null!=B?B:this.editor.graph;D=null!=D?D:0;var f=n?null:B.background;f==mxConstants.NONE&&(f=null);null==f&&(f=d);null==f&&0==n&&(f="#ffffff");this.convertImages(B.getSvg(null,null,null,A,null,k,null,null,null,t),mxUtils.bind(this,function(c){try{var d=new Image;d.onload=mxUtils.bind(this,function(){try{var m=function(){mxClient.IS_SF? +window.setTimeout(function(){n.drawImage(d,D/l,D/l);a(k)},0):(n.drawImage(d,D/l,D/l),a(k))},k=document.createElement("canvas"),p=parseInt(c.getAttribute("width")),y=parseInt(c.getAttribute("height"));l=null!=l?l:1;null!=b&&(l=g?Math.min(1,Math.min(3*b/(4*y),b/p)):b/p);p=Math.ceil(l*p)+2*D;y=Math.ceil(l*y)+2*D;k.setAttribute("width",p);k.setAttribute("height",y);var n=k.getContext("2d");null!=f&&(n.beginPath(),n.rect(0,0,p,y),n.fillStyle=f,n.fill());n.scale(l,l);if(F){var q=B.view,u=q.scale;q.scale= +1;var v=btoa(unescape(encodeURIComponent(q.createSvgGrid(q.gridColor))));q.scale=u;var v="data:image/svg+xml;base64,"+v,t=B.gridSize*q.gridSteps*l,x=B.getGraphBounds(),A=q.translate.x*u,z=q.translate.y*u,C=A+(x.x-A)/u,I=z+(x.y-z)/u,H=new Image;H.onload=function(){try{for(var a=-Math.round(t-mxUtils.mod((A-C)*l,t)),b=-Math.round(t-mxUtils.mod((z-I)*l,t));a<p;a+=t)for(var c=b;c<y;c+=t)n.drawImage(H,a/l,c/l);m()}catch(M){null!=e&&e(M)}};H.onerror=function(a){null!=e&&e(a)};H.src=v}else m()}catch(Z){null!= +e&&e(Z)}});d.onerror=function(a){null!=e&&e(a)};t&&this.editor.graph.addSvgShadow(c);this.editor.graph.mathEnabled&&this.editor.addMathCss(c);var m=mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(c,this.editor.resolvedFontCss),d.src=this.createSvgDataUri(mxUtils.getXml(c))}catch(K){null!=e&&e(K)}});this.embedExtFonts(mxUtils.bind(this,function(a){try{null!=a&&this.editor.addFontCss(c,a),this.loadFonts(m)}catch(O){null!=e&&e(O)}}))}catch(K){null!=e&&e(K)}}), +c,y)}catch(I){null!=e&&e(I)}};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,c=this;a.convert=function(d){if(null!=d){var f="http://"==d.substring(0,7)||"https://"==d.substring(0,8);f&&!navigator.onLine?d=c.svgBrokenImage.src:!f||d.substring(0,a.baseUrl.length)==a.baseUrl||c.crossOriginImages&&c.editor.isCorsEnabledForUrl(d)?"chrome-extension://"==d.substring(0,19)||mxClient.IS_CHROMEAPP||(d=b.apply(this,arguments)):d=PROXY_URL+"?url="+ encodeURIComponent(d)}return d};return a};EditorUi.prototype.convertImages=function(a,b,c,d){null==d&&(d=this.createImageUrlConverter());var f=0,e=c||{};c=mxUtils.bind(this,function(c,m){for(var g=a.getElementsByTagName(c),k=0;k<g.length;k++)mxUtils.bind(this,function(c){try{if(null!=c){var g=d.convert(c.getAttribute(m));if(null!=g&&"data:"!=g.substring(0,5)){var k=e[g];null==k?(f++,this.convertImageToDataUri(g,function(d){null!=d&&(e[g]=d,c.setAttribute(m,d));f--;0==f&&b(a)})):c.setAttribute(m,k)}else null!= -g&&c.setAttribute(m,g)}}catch(B){}})(g[k])});c("image","xlink:href");c("img","src");0==f&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,d,e,g,k,l){try{var f=!k&&(d||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a)||/(\.pdf)($|\?)/i.test(a));e=null!=e?e:!0;var m=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var d=a.getText();if(f){if((9==document.documentMode||10==document.documentMode)&& +g&&c.setAttribute(m,g)}}catch(A){}})(g[k])});c("image","xlink:href");c("img","src");0==f&&b(a)};EditorUi.prototype.loadUrl=function(a,b,c,d,e,g,k,l){try{var f=!k&&(d||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a)||/(\.pdf)($|\?)/i.test(a));e=null!=e?e:!0;var m=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var d=a.getText();if(f){if((9==document.documentMode||10==document.documentMode)&& "undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var d=Array(a.length),e=0;e<a.length;e++)d[e]=String.fromCharCode(a[e]);d=d.join("")}g=null!=g?g:"data:image/png;base64,";d=g+this.base64Encode(d)}b(d)}}else null!=c&&(0==a.getStatus()?c({message:mxResources.get("accessDenied")},a):c({message:mxResources.get("error")+" "+a.getStatus()},a))}),function(a){null!=c&&c({message:mxResources.get("error")+" "+a.getStatus()})},f,this.timeout,function(){e&& -null!=c&&c({code:App.ERROR_TIMEOUT,retry:m})},l)});m()}catch(x){null!=c&&c(x)}};EditorUi.prototype.isCorsEnabledForUrl=function(a){return this.editor.isCorsEnabledForUrl(a)};EditorUi.prototype.convertImageToDataUri=function(a,b){try{var c=!0,d=window.setTimeout(mxUtils.bind(this,function(){c=!1;b(this.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){window.clearTimeout(d);c&&b(this.createSvgDataUri(a.getText()))}),function(){window.clearTimeout(d); -c&&b(this.svgBrokenImage.src)});else{var f=new Image,e=this;this.crossOriginImages&&(f.crossOrigin="anonymous");f.onload=function(){window.clearTimeout(d);if(c)try{var a=document.createElement("canvas"),g=a.getContext("2d");a.height=f.height;a.width=f.width;g.drawImage(f,0,0);b(a.toDataURL())}catch(D){b(e.svgBrokenImage.src)}};f.onerror=function(){window.clearTimeout(d);c&&b(e.svgBrokenImage.src)};f.src=a}}catch(z){b(this.svgBrokenImage.src)}};EditorUi.prototype.importXml=function(a,b,c,d,e){b=null!= +null!=c&&c({code:App.ERROR_TIMEOUT,retry:m})},l)});m()}catch(y){null!=c&&c(y)}};EditorUi.prototype.isCorsEnabledForUrl=function(a){return this.editor.isCorsEnabledForUrl(a)};EditorUi.prototype.convertImageToDataUri=function(a,b){try{var c=!0,d=window.setTimeout(mxUtils.bind(this,function(){c=!1;b(this.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){window.clearTimeout(d);c&&b(this.createSvgDataUri(a.getText()))}),function(){window.clearTimeout(d); +c&&b(this.svgBrokenImage.src)});else{var f=new Image,e=this;this.crossOriginImages&&(f.crossOrigin="anonymous");f.onload=function(){window.clearTimeout(d);if(c)try{var a=document.createElement("canvas"),g=a.getContext("2d");a.height=f.height;a.width=f.width;g.drawImage(f,0,0);b(a.toDataURL())}catch(C){b(e.svgBrokenImage.src)}};f.onerror=function(){window.clearTimeout(d);c&&b(e.svgBrokenImage.src)};f.src=a}}catch(z){b(this.svgBrokenImage.src)}};EditorUi.prototype.importXml=function(a,b,c,d,e){b=null!= b?b:0;c=null!=c?c:0;var f=[];try{var g=this.editor.graph;if(null!=a&&0<a.length){g.model.beginUpdate();try{var m=mxUtils.parseXml(a);a={};var k=this.editor.extractGraphModel(m.documentElement,null!=this.pages);if(null!=k&&"mxfile"==k.nodeName&&null!=this.pages){var p=k.getElementsByTagName("diagram");if(1==p.length)k=Editor.parseDiagramNode(p[0]),null!=this.currentPage&&(a[p[0].getAttribute("id")]=this.currentPage.getId());else if(1<p.length){var m=[],l=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&& -(a[p[0].getAttribute("id")]=this.pages[0].getId(),k=Editor.parseDiagramNode(p[0]),d=!1,l=1);for(;l<p.length;l++){var n=p[l].getAttribute("id");p[l].removeAttribute("id");var t=this.updatePageRoot(new DiagramPage(p[l]));a[n]=p[l].getAttribute("id");var v=this.pages.length;null==t.getName()&&t.setName(mxResources.get("pageWithNumber",[v+1]));g.model.execute(new ChangePage(this,t,t,v,!0));m.push(t)}this.updatePageLinks(a,m)}}if(null!=k&&"mxGraphModel"===k.nodeName)for(f=g.importGraphModel(k,b,c,d),l= -0;l<f.length;l++)this.updatePageLinksForCell(a,f[l])}finally{g.model.endUpdate()}}}catch(I){if(e)throw I;this.handleError(I)}return f};EditorUi.prototype.updatePageLinks=function(a,b){for(var c=0;c<b.length;c++)this.updatePageLinksForCell(a,b[c].root)};EditorUi.prototype.updatePageLinksForCell=function(a,b){var c=document.createElement("div"),d=this.editor.graph,f=d.getLinkForCell(b);null!=f&&d.setLinkForCell(b,this.updatePageLink(a,f));if(d.isHtmlLabel(b)){c.innerHTML=d.getLabel(b);for(var e=c.getElementsByTagName("a"), +(a[p[0].getAttribute("id")]=this.pages[0].getId(),k=Editor.parseDiagramNode(p[0]),d=!1,l=1);for(;l<p.length;l++){var n=p[l].getAttribute("id");p[l].removeAttribute("id");var u=this.updatePageRoot(new DiagramPage(p[l]));a[n]=p[l].getAttribute("id");var v=this.pages.length;null==u.getName()&&u.setName(mxResources.get("pageWithNumber",[v+1]));g.model.execute(new ChangePage(this,u,u,v,!0));m.push(u)}this.updatePageLinks(a,m)}}if(null!=k&&"mxGraphModel"===k.nodeName)for(f=g.importGraphModel(k,b,c,d),l= +0;l<f.length;l++)this.updatePageLinksForCell(a,f[l])}finally{g.model.endUpdate()}}}catch(F){if(e)throw F;this.handleError(F)}return f};EditorUi.prototype.updatePageLinks=function(a,b){for(var c=0;c<b.length;c++)this.updatePageLinksForCell(a,b[c].root)};EditorUi.prototype.updatePageLinksForCell=function(a,b){var c=document.createElement("div"),d=this.editor.graph,f=d.getLinkForCell(b);null!=f&&d.setLinkForCell(b,this.updatePageLink(a,f));if(d.isHtmlLabel(b)){c.innerHTML=d.getLabel(b);for(var e=c.getElementsByTagName("a"), g=!1,m=0;m<e.length;m++)f=e[m].getAttribute("href"),null!=f&&(e[m].setAttribute("href",this.updatePageLink(a,f)),g=!0);g&&d.labelChanged(b,c.innerHTML)}for(m=0;m<d.model.getChildCount(b);m++)this.updatePageLinksForCell(a,d.model.getChildAt(b,m))};EditorUi.prototype.updatePageLink=function(a,b){if("data:page/id,"==b.substring(0,13)){var c=a[b.substring(b.indexOf(",")+1)];b=null!=c?"data:page/id,"+c:null}else if("data:action/json,"==b.substring(0,17))try{var d=JSON.parse(b.substring(17));if(null!=d.actions){for(var f= 0;f<d.actions.length;f++){var e=d.actions[f];null!=e.open&&"data:page/id,"==e.open.substring(0,13)&&(c=a[e.open.substring(e.open.indexOf(",")+1)],null!=c?e.open="data:page/id,"+c:delete e.open)}b="data:action/json,"+JSON.stringify(d)}}catch(z){}return b};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,c,d){d=null!=d?d:a.name;c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)}); var f=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var f=this.isRemoteVisioFormat(d);try{var e="UNKNOWN-VISIO",g=d.lastIndexOf(".");0<=g&&g<d.length&&(e=d.substring(g+1).toUpperCase());EditorUi.logEvent({category:e+"-MS-IMPORT-FILE",action:"filename_"+d,label:f?"remote":"local"})}catch(H){}if(f)if(null!=VSD_CONVERT_URL){f=new FormData;f.append("file1",a,d);var m=new XMLHttpRequest;m.open("POST",VSD_CONVERT_URL);m.responseType="blob";this.addRemoteServiceSecurityCheck(m); -m.onreadystatechange=mxUtils.bind(this,function(){if(4==m.readyState)if(200<=m.status&&299>=m.status)try{var a=m.response;if("text/xml"==a.type){var f=new FileReader;f.onload=mxUtils.bind(this,function(a){try{b(a.target.result)}catch(C){c({message:mxResources.get("errorLoadingFile")})}});f.readAsText(a)}else this.doImportVisio(a,b,c,d)}catch(A){c(A)}else c({})});m.send(f)}else c({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")}); +m.onreadystatechange=mxUtils.bind(this,function(){if(4==m.readyState)if(200<=m.status&&299>=m.status)try{var a=m.response;if("text/xml"==a.type){var f=new FileReader;f.onload=mxUtils.bind(this,function(a){try{b(a.target.result)}catch(D){c({message:mxResources.get("errorLoadingFile")})}});f.readAsText(a)}else this.doImportVisio(a,b,c,d)}catch(B){c(B)}else c({})});m.send(f)}else c({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")}); else try{this.doImportVisio(a,b,c,d)}catch(H){c(H)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.importGraphML=function(a,b,c){c=null!=c?c:mxUtils.bind(this,function(a){this.handleError(a)});var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a, b,c)}catch(v){c(v)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?d():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",d))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(m){this.handleError(m)}else this.spinner.stop(), this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,c){var d=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter){try{EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+a.length}),EditorUi.debug("convertLucidChart",a)}catch(v){}try{b(LucidImporter.importState(JSON.parse(a)))}catch(v){null!= @@ -8918,7 +8919,7 @@ window.console&&console.error(v),c(v)}}else c({message:mxResources.get("serviceU e=parseFloat(p[0].getAttribute("height")))}c(f.result,a,e)}catch(J){d(J)}};b.src=f.result};f.onerror=function(a){d(a)}}else d(a)};g.onerror=function(a){d(a)};g.send()};EditorUi.prototype.insertAsPreText=function(a,b,c){var d=this.editor.graph,f=null;d.getModel().beginUpdate();try{f=d.insertVertex(null,null,"<pre>"+a+"</pre>",b,c,1,1,"text;html=1;align=left;verticalAlign=top;"),d.updateCellSize(f,!0)}finally{d.getModel().endUpdate()}return f};EditorUi.prototype.insertTextAt=function(a,b,c,d,e,g,k){g= null!=g?g:!0;k=null!=k?k:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,c,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(e||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var f=this.editor.graph; if("data:application/pdf;base64,"==a.substring(0,28)){var m=Editor.extractGraphModelFromPdf(a);if(null!=m&&0<m.length)return this.importXml(m,b,c,g,!0)}if("data:image/png;base64,"==a.substring(0,22)&&(m=this.extractGraphModelFromPng(a),null!=m&&0<m.length))return this.importXml(m,b,c,g,!0);if("data:image/svg+xml;"==a.substring(0,19))try{m=null;"data:image/svg+xml;base64,"==a.substring(0,26)?(m=a.substring(a.indexOf(",")+1),m=window.atob&&!mxClient.IS_SF?atob(m):Base64.decode(m,!0)):m=decodeURIComponent(a.substring(a.indexOf(",")+ -1));var p=this.importXml(m,b,c,g,!0);if(0<p.length)return p}catch(x){}this.loadImage(a,mxUtils.bind(this,function(d){if("data:"==a.substring(0,5))this.resizeImage(d,a,mxUtils.bind(this,function(a,d,e){f.setSelectionCell(f.insertVertex(null,null,"",f.snap(b),f.snap(c),d,e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(a)+";"))}),k,this.maxImageSize);else{var e=Math.min(1,Math.min(this.maxImageSize/d.width, +1));var p=this.importXml(m,b,c,g,!0);if(0<p.length)return p}catch(y){}this.loadImage(a,mxUtils.bind(this,function(d){if("data:"==a.substring(0,5))this.resizeImage(d,a,mxUtils.bind(this,function(a,d,e){f.setSelectionCell(f.insertVertex(null,null,"",f.snap(b),f.snap(c),d,e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(a)+";"))}),k,this.maxImageSize);else{var e=Math.min(1,Math.min(this.maxImageSize/d.width, this.maxImageSize/d.height)),g=Math.round(d.width*e);d=Math.round(d.height*e);f.setSelectionCell(f.insertVertex(null,null,"",f.snap(b),f.snap(c),g,d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var e=null;f.getModel().beginUpdate();try{e=f.insertVertex(f.getDefaultParent(),null,a,f.snap(b),f.snap(c),1,1,"text;"+(d?"html=1;":"")),f.updateCellSize(e),f.fireEvent(new mxEventObject("textInserted", "cells",[e]))}finally{f.getModel().endUpdate()}f.setSelectionCell(e)}))}else{a=Graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,c,g);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,c,g))}),mxUtils.bind(this,function(a){this.handleError(a)}));else{f=this.editor.graph;e=null;f.getModel().beginUpdate();try{e=f.insertVertex(f.getDefaultParent(),null,"",f.snap(b), f.snap(c),1,1,"text;"+(d?"html=1;":"")),f.fireEvent(new mxEventObject("textInserted","cells",[e])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),a.length>this.maxTextBytes&&(a=a.substring(0,this.maxTextBytes)+"..."),e.value=a,f.updateCellSize(e),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“â€â€˜â€™]))/i.test(e.value)&&f.setLinkForCell(e, @@ -8927,34 +8928,34 @@ EditorUi.prototype.isLucidChartData=function(a){return null!=a&&('{"state":"{\\" "none";document.body.appendChild(c);this.importFileInputElt=c}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";if(!b){var d=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var c=new Blob([a],{type:"application/octet-stream"});this.importVisio(c,mxUtils.bind(this,function(a){this.importXml(a, 0,0,!0)}),null,b)}else this.editor.graph.setSelectionCells(this.importXml(a,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var f=this.dialog,e=f.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;e.apply(f,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=function(a,b,c){var d=this,f=mxUtils.bind(this,function(){this.loadingExtensions= !1;"undefined"!==typeof JSZip?JSZip.loadAsync(a).then(function(f){if(0==Object.keys(f.files).length)c();else{var e=0,g,m=!1;f.forEach(function(a,d){var f=d.name.toLowerCase();"diagram/diagram.xml"==f?(m=!0,d.async("string").then(function(a){0==a.indexOf("<mxfile ")?b(a):c()})):0==f.indexOf("versions/")&&(f=parseInt(f.substr(9)),f>e&&(e=f,g=d))});0<e?g.async("string").then(function(f){!d.isOffline()&&(new XMLHttpRequest).upload&&d.isRemoteFileFormat(f,a.name)?d.parseFile(new Blob([f],{type:"application/octet-stream"}), -mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?b(a.responseText):c())}),a.name):c()}):m||c()}},function(a){c(a)}):c()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.importFile=function(a,b,c,d,e,g,k,l,n,u,x){u=null!=u?u:!0;var f=!1,m=null,p=mxUtils.bind(this,function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this, -a,k)):b=this.importXml(a,c,d,u);null!=l&&l(b)});"image"==b.substring(0,5)?(n=!1,"image/png"==b.substring(0,9)&&(b=x?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(m=this.importXml(b,c,d,u),n=!0)),n||(b=this.editor.graph,x=a.indexOf(";"),0<x&&(a=a.substring(0,x)+a.substring(a.indexOf(",",x+1))),u&&b.isGridEnabled()&&(c=b.snap(c),d=b.snap(d)),m=[b.insertVertex(null,null,"",c,d,e,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?b(a.responseText):c())}),a.name):c()}):m||c()}},function(a){c(a)}):c()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?f():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",f))};EditorUi.prototype.importFile=function(a,b,c,d,e,g,k,l,n,t,y){t=null!=t?t:!0;var f=!1,m=null,p=mxUtils.bind(this,function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this, +a,k)):b=this.importXml(a,c,d,t);null!=l&&l(b)});"image"==b.substring(0,5)?(n=!1,"image/png"==b.substring(0,9)&&(b=y?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(m=this.importXml(b,c,d,t),n=!0)),n||(b=this.editor.graph,y=a.indexOf(";"),0<y&&(a=a.substring(0,y)+a.substring(a.indexOf(",",y+1))),t&&b.isGridEnabled()&&(c=b.snap(c),d=b.snap(d)),m=[b.insertVertex(null,null,"",c,d,e,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ a+";")])):/(\.*<graphml )/.test(a)?(f=!0,this.importGraphML(a,p)):null!=n&&null!=k&&(/(\.v(dx|sdx?))($|\?)/i.test(k)||/(\.vs(x|sx?))($|\?)/i.test(k))?(f=!0,this.importVisio(n,p)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,k)?(f=!0,this.parseFile(null!=n?n:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?p(a.responseText):null!=l&&l(null))}),k)):0==a.indexOf("PK")&&null!=n?(f=!0,this.importZipFile(n, -p,mxUtils.bind(this,function(){m=this.insertTextAt(this.validateFileData(a),c,d,!0,null,u);l(m)}))):/(\.v(sd|dx))($|\?)/i.test(k)||/(\.vs(s|x))($|\?)/i.test(k)||(m=this.insertTextAt(this.validateFileData(a),c,d,!0,null,u));f||null==l||l(m);return m};EditorUi.prototype.base64Encode=function(a){for(var b="",c=0,d=a.length,f,e,g;c<d;){f=a.charCodeAt(c++)&255;if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f& +p,mxUtils.bind(this,function(){m=this.insertTextAt(this.validateFileData(a),c,d,!0,null,t);l(m)}))):/(\.v(sd|dx))($|\?)/i.test(k)||/(\.vs(s|x))($|\?)/i.test(k)||(m=this.insertTextAt(this.validateFileData(a),c,d,!0,null,t));f||null==l||l(m);return m};EditorUi.prototype.base64Encode=function(a){for(var b="",c=0,d=a.length,f,e,g;c<d;){f=a.charCodeAt(c++)&255;if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f& 3)<<4);b+="==";break}e=a.charCodeAt(c++);if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(e&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&15)<<2);b+="=";break}g=a.charCodeAt(c++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f& -3)<<4|(e&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&15)<<2|(g&192)>>6);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,d,e,g,k,l,n,u,x,A){b=null!=b?b:0;c=null!=c?c:0;d=null!=d?d:this.maxImageSize;u=null!=u?u:this.maxImageBytes;var f=null!=b&&null!=c,m=!0,p=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var q=x||this.resampleThreshold,t=0;t<a.length;t++)if("image/"==a[t].type.substring(0, -6)&&a[t].size>q){p=!0;break}var v=mxUtils.bind(this,function(){var p=this.editor.graph,n=p.gridSize;e=null!=e?e:mxUtils.bind(this,function(a,b,c,d,e,g,m,k,p){try{return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,m)),null):this.importFile(a,b,c,d,e,g,m,k,p,f,A)}catch(Z){return this.handleError(Z),null}});g=null!=g?g:mxUtils.bind(this,function(a){p.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q= -a.length,t=q,v=[],C=mxUtils.bind(this,function(a,b){v[a]=b;if(0==--t){this.spinner.stop();if(null!=l)l(v);else{var c=[];p.getModel().beginUpdate();try{for(var d=0;d<v.length;d++){var f=v[d]();null!=f&&(c=c.concat(f))}}finally{p.getModel().endUpdate()}}g(c)}}),B=0;B<q;B++)mxUtils.bind(this,function(f){var g=a[f];if(null!=g){var l=new FileReader;l.onload=mxUtils.bind(this,function(a){if(null==k||k(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var l=a.target.result,q=l.indexOf(","), -t=decodeURIComponent(escape(atob(l.substring(q+1)))),v=mxUtils.parseXml(t),t=v.getElementsByTagName("svg");if(0<t.length){var t=t[0],B=A?null:t.getAttribute("content");null!=B&&"<"!=B.charAt(0)&&"%"!=B.charAt(0)&&(B=unescape(window.atob?atob(B):Base64.decode(B,!0)));null!=B&&"%"==B.charAt(0)&&(B=decodeURIComponent(B));null==B||"<mxfile "!==B.substring(0,8)&&"<mxGraphModel "!==B.substring(0,14)?C(f,mxUtils.bind(this,function(){try{if(l.substring(0,q+1),null!=v){var a=v.getElementsByTagName("svg"); -if(0<a.length){var m=a[0],k=m.getAttribute("width"),x=m.getAttribute("height"),k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN,x=null!=x&&"%"!=x.charAt(x.length-1)?parseFloat(x):NaN,t=m.getAttribute("viewBox");if(null==t||0==t.length)m.setAttribute("viewBox","0 0 "+k+" "+x);else if(isNaN(k)||isNaN(x)){var u=t.split(" ");3<u.length&&(k=parseFloat(u[2]),x=parseFloat(u[3]))}l=this.createSvgDataUri(mxUtils.getXml(m));var A=Math.min(1,Math.min(d/Math.max(1,k)),d/Math.max(1,x)),C=e(l,g.type,b+f* -n,c+f*n,Math.max(1,Math.round(k*A)),Math.max(1,Math.round(x*A)),g.name);if(isNaN(k)||isNaN(x)){var B=new Image;B.onload=mxUtils.bind(this,function(){k=Math.max(1,B.width);x=Math.max(1,B.height);C[0].geometry.width=k;C[0].geometry.height=x;m.setAttribute("viewBox","0 0 "+k+" "+x);l=this.createSvgDataUri(mxUtils.getXml(m));var a=l.indexOf(";");0<a&&(l=l.substring(0,a)+l.substring(l.indexOf(",",a+1)));p.setCellStyles("image",l,[C[0]])});B.src=this.createSvgDataUri(mxUtils.getXml(m))}return C}}}catch(ia){}return null})): -C(f,mxUtils.bind(this,function(){return e(B,"text/xml",b+f*n,c+f*n,0,0,g.name)}))}else C(f,mxUtils.bind(this,function(){return null}))}else{t=!1;if("image/png"==g.type){var y=A?null:this.extractGraphModelFromPng(a.target.result);if(null!=y&&0<y.length){var z=new Image;z.src=a.target.result;C(f,mxUtils.bind(this,function(){return e(y,"text/xml",b+f*n,c+f*n,z.width,z.height,g.name)}));t=!0}}t||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"), -mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,a.target.result,mxUtils.bind(this,function(k,p,l){C(f,mxUtils.bind(this,function(){if(null!=k&&k.length<u){var q=m&&this.isResampleImage(a.target.result,x)?Math.min(1,Math.min(d/p,d/l)):1;return e(k,g.type,b+f*n,c+f*n,Math.round(p*q),Math.round(l*q),g.name)}this.handleError({message:mxResources.get("imageTooBig")}); -return null}))}),m,d,x)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else l=a.target.result,e(l,g.type,b+f*n,c+f*n,240,160,g.name,function(a){C(f,function(){return a})},g)});/(\.v(dx|sdx?))($|\?)/i.test(g.name)||/(\.vs(x|sx?))($|\?)/i.test(g.name)?e(null,g.type,b+f*n,c+f*n,240,160,g.name,function(a){C(f,function(){return a})},g):"image"==g.type.substring(0,5)||"application/pdf"==g.type?l.readAsDataURL(g):l.readAsText(g)}})(B)});if(p){p=[]; -for(t=0;t<a.length;t++)p.push(a[t]);a=p;this.confirmImageResize(function(a){m=a;v()},n)}else v()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,f=function(d,f){if(d||b)mxSettings.setResizeImages(d?f:null),mxSettings.save();c();a(f)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"), +3)<<4|(e&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((e&15)<<2|(g&192)>>6);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g&63)}return b};EditorUi.prototype.importFiles=function(a,b,c,d,e,g,k,l,n,t,y,B){b=null!=b?b:0;c=null!=c?c:0;d=null!=d?d:this.maxImageSize;t=null!=t?t:this.maxImageBytes;var f=null!=b&&null!=c,m=!0,p=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var q=y||this.resampleThreshold,u=0;u<a.length;u++)if("image/"==a[u].type.substring(0, +6)&&a[u].size>q){p=!0;break}var v=mxUtils.bind(this,function(){var p=this.editor.graph,n=p.gridSize;e=null!=e?e:mxUtils.bind(this,function(a,b,c,d,e,g,m,k,p){try{return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,m)),null):this.importFile(a,b,c,d,e,g,m,k,p,f,B)}catch(Z){return this.handleError(Z),null}});g=null!=g?g:mxUtils.bind(this,function(a){p.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q= +a.length,u=q,v=[],D=mxUtils.bind(this,function(a,b){v[a]=b;if(0==--u){this.spinner.stop();if(null!=l)l(v);else{var c=[];p.getModel().beginUpdate();try{for(var d=0;d<v.length;d++){var f=v[d]();null!=f&&(c=c.concat(f))}}finally{p.getModel().endUpdate()}}g(c)}}),A=0;A<q;A++)mxUtils.bind(this,function(f){var g=a[f];if(null!=g){var l=new FileReader;l.onload=mxUtils.bind(this,function(a){if(null==k||k(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var l=a.target.result,q=l.indexOf(","), +u=decodeURIComponent(escape(atob(l.substring(q+1)))),v=mxUtils.parseXml(u),u=v.getElementsByTagName("svg");if(0<u.length){var u=u[0],A=B?null:u.getAttribute("content");null!=A&&"<"!=A.charAt(0)&&"%"!=A.charAt(0)&&(A=unescape(window.atob?atob(A):Base64.decode(A,!0)));null!=A&&"%"==A.charAt(0)&&(A=decodeURIComponent(A));null==A||"<mxfile "!==A.substring(0,8)&&"<mxGraphModel "!==A.substring(0,14)?D(f,mxUtils.bind(this,function(){try{if(l.substring(0,q+1),null!=v){var a=v.getElementsByTagName("svg"); +if(0<a.length){var m=a[0],k=m.getAttribute("width"),y=m.getAttribute("height"),k=null!=k&&"%"!=k.charAt(k.length-1)?parseFloat(k):NaN,y=null!=y&&"%"!=y.charAt(y.length-1)?parseFloat(y):NaN,u=m.getAttribute("viewBox");if(null==u||0==u.length)m.setAttribute("viewBox","0 0 "+k+" "+y);else if(isNaN(k)||isNaN(y)){var B=u.split(" ");3<B.length&&(k=parseFloat(B[2]),y=parseFloat(B[3]))}l=this.createSvgDataUri(mxUtils.getXml(m));var t=Math.min(1,Math.min(d/Math.max(1,k)),d/Math.max(1,y)),D=e(l,g.type,b+f* +n,c+f*n,Math.max(1,Math.round(k*t)),Math.max(1,Math.round(y*t)),g.name);if(isNaN(k)||isNaN(y)){var A=new Image;A.onload=mxUtils.bind(this,function(){k=Math.max(1,A.width);y=Math.max(1,A.height);D[0].geometry.width=k;D[0].geometry.height=y;m.setAttribute("viewBox","0 0 "+k+" "+y);l=this.createSvgDataUri(mxUtils.getXml(m));var a=l.indexOf(";");0<a&&(l=l.substring(0,a)+l.substring(l.indexOf(",",a+1)));p.setCellStyles("image",l,[D[0]])});A.src=this.createSvgDataUri(mxUtils.getXml(m))}return D}}}catch(ia){}return null})): +D(f,mxUtils.bind(this,function(){return e(A,"text/xml",b+f*n,c+f*n,0,0,g.name)}))}else D(f,mxUtils.bind(this,function(){return null}))}else{u=!1;if("image/png"==g.type){var z=B?null:this.extractGraphModelFromPng(a.target.result);if(null!=z&&0<z.length){var x=new Image;x.src=a.target.result;D(f,mxUtils.bind(this,function(){return e(z,"text/xml",b+f*n,c+f*n,x.width,x.height,g.name)}));u=!0}}u||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"), +mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,a.target.result,mxUtils.bind(this,function(k,p,l){D(f,mxUtils.bind(this,function(){if(null!=k&&k.length<t){var q=m&&this.isResampleImage(a.target.result,y)?Math.min(1,Math.min(d/p,d/l)):1;return e(k,g.type,b+f*n,c+f*n,Math.round(p*q),Math.round(l*q),g.name)}this.handleError({message:mxResources.get("imageTooBig")}); +return null}))}),m,d,y)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else l=a.target.result,e(l,g.type,b+f*n,c+f*n,240,160,g.name,function(a){D(f,function(){return a})},g)});/(\.v(dx|sdx?))($|\?)/i.test(g.name)||/(\.vs(x|sx?))($|\?)/i.test(g.name)?e(null,g.type,b+f*n,c+f*n,240,160,g.name,function(a){D(f,function(){return a})},g):"image"==g.type.substring(0,5)||"application/pdf"==g.type?l.readAsDataURL(g):l.readAsText(g)}})(A)});if(p){p=[]; +for(u=0;u<a.length;u++)p.push(a[u]);a=p;this.confirmImageResize(function(a){m=a;v()},n)}else v()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,f=function(d,f){if(d||b)mxSettings.setResizeImages(d?f:null),mxSettings.save();c();a(f)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"), function(a){f(a,!0)},function(a){f(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):f(!1,d)};EditorUi.prototype.parseFile=function(a,b,c){c=null!=c?c:a.name;var d=new FormData;d.append("format","xml");d.append("upfile",a,c);var f=new XMLHttpRequest;f.open("POST", OPEN_URL);f.onreadystatechange=function(){b(f)};f.send(d);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+a.size})}catch(q){}};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,c,d,e,g){e=null!=e?e:this.maxImageSize;var f=Math.max(1,a.width),m=Math.max(1,a.height);if(d&&this.isResampleImage(b,g))try{var k=Math.max(f/e,m/e);if(1<k){var p=Math.round(f/k),l=Math.round(m/k),n=document.createElement("canvas"); -n.width=p;n.height=l;n.getContext("2d").drawImage(a,0,0,p,l);var q=n.toDataURL();if(q.length<b.length){var t=document.createElement("canvas");t.width=p;t.height=l;var u=t.toDataURL();q!==u&&(b=q,f=p,m=l)}}}catch(F){}c(b,f,m)};EditorUi.prototype.crcTable=[];for(var b=0;256>b;b++)for(var e=b,g=0;8>g;g++)e=1==(e&1)?3988292384^e>>>1:e>>>1,EditorUi.prototype.crcTable[b]=e;EditorUi.prototype.updateCRC=function(a,b,c,d){for(var f=0;f<d;f++)a=EditorUi.prototype.crcTable[(a^b.charCodeAt(c+f))&255]^a>>>8;return a}; +n.width=p;n.height=l;n.getContext("2d").drawImage(a,0,0,p,l);var q=n.toDataURL();if(q.length<b.length){var u=document.createElement("canvas");u.width=p;u.height=l;var t=u.toDataURL();q!==t&&(b=q,f=p,m=l)}}}catch(G){}c(b,f,m)};EditorUi.prototype.crcTable=[];for(var b=0;256>b;b++)for(var e=b,g=0;8>g;g++)e=1==(e&1)?3988292384^e>>>1:e>>>1,EditorUi.prototype.crcTable[b]=e;EditorUi.prototype.updateCRC=function(a,b,c,d){for(var f=0;f<d;f++)a=EditorUi.prototype.crcTable[(a^b.charCodeAt(c+f))&255]^a>>>8;return a}; EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,c,d,e){function f(a,b){var c=k;k+=b;return a.substring(c,k)}function g(a){a=f(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function m(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+ 1);a=window.atob?atob(a):Base64.decode(a,!0);var k=0;if(f(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=e&&e();else if(f(a,4),"IHDR"!=f(a,4))null!=e&&e();else{f(a,17);e=a.substring(0,k);do{var p=g(a);if("IDAT"==f(a,4)){e=a.substring(0,k-8);"pHYs"==b&&"dpi"==c?(c=Math.round(d/.0254),c=m(c)+m(c)+String.fromCharCode(1)):c=c+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+d;d=4294967295;d=this.updateCRC(d,b,0,4);d=this.updateCRC(d,c,0,c.length);e+=m(c.length)+ b+c+m(d^4294967295);e+=a.substring(k-8,a.length);break}e+=a.substring(k-8,k-4+p);f(a,p);f(a,4)}while(p);return"data:image/png;base64,"+(window.btoa?btoa(e):Base64.encode(e,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){return Editor.extractGraphModelFromPng(a)};EditorUi.prototype.loadImage=function(a,b,c){try{var d=new Image;d.onload=function(){b(d)};null!=c&&(d.onerror=c);d.src=a}catch(v){if(null!=c)c(v);else throw v;}};var k=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval= mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph,c=b.cellEditor.startEditing;b.cellEditor.startEditing=function(d,f){var e=this.graph.getAttributeForCell(d,"plantUmlData");if(null!=e){var g=JSON.parse(e),e=new TextareaDialog(a,mxResources.get("plantUml")+":",g.data,function(c){null!=c&&a.spinner.spin(document.body,mxResources.get("inserting"))&&a.generatePlantUmlImage(c,g.format, function(f,e,k){a.spinner.stop();b.getModel().beginUpdate();try{if("txt"==g.format)b.labelChanged(d,"<pre>"+f+"</pre>"),b.updateCellSize(d,!0);else{b.setCellStyles("image",a.convertDataUri(f),[d]);var m=b.model.getGeometry(d);null!=m&&(m=m.clone(),m.width=e,m.height=k,b.cellsResized([d],[m],!1))}b.setAttributeForCell(d,"plantUmlData",JSON.stringify({data:c,format:g.format}))}finally{b.getModel().endUpdate()}},function(b){a.handleError(b)})},null,null,400,220);a.showDialog(e.container,420,300,!0,!0); -e.init()}else c.apply(this,arguments)};b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(I){a.handleError(I)}return c};var d=this.clearDefaultStyle;this.clearDefaultStyle=function(){d.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var e=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl= +e.init()}else c.apply(this,arguments)};b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(F){a.handleError(F)}return c};var d=this.clearDefaultStyle;this.clearDefaultStyle=function(){d.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var e=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl= function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return e.apply(this,arguments)};var g=b.addClickHandler;b.addClickHandler=function(a,c,d){var f=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)|| !mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&mxEvent.consume(a);null!=f&&f(a,c)};g.call(this,a,c,d)};k.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,360,null!=a.pages&&1<a.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var l=b.getExportVariables;b.getExportVariables=function(){var b=l.apply(this,arguments); -b.pagecount=null!=a.pages?a.pages.length:1;b.page=null!=a.currentPage?a.currentPage.getName():"";b.pagenumber=null!=a.pages&&null!=a.currentPage?mxUtils.indexOf(a.pages,a.currentPage)+1:1;return b};var n=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:"pagecount"==b?null!=a.pages?a.pages.length:1:n.apply(this,arguments)};var u=b.labelLinkClicked; -b.labelLinkClicked=function(a,c,d){var f=c.getAttribute("href");if(null==f||!b.isCustomLink(f)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))u.apply(this,arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(f),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var H=this.actions.get("print");H.setEnabled(!mxClient.IS_IOS|| +b.pagecount=null!=a.pages?a.pages.length:1;b.page=null!=a.currentPage?a.currentPage.getName():"";b.pagenumber=null!=a.pages&&null!=a.currentPage?mxUtils.indexOf(a.pages,a.currentPage)+1:1;return b};var n=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:"pagecount"==b?null!=a.pages?a.pages.length:1:n.apply(this,arguments)};var t=b.labelLinkClicked; +b.labelLinkClicked=function(a,c,d){var f=c.getAttribute("href");if(null==f||!b.isCustomLink(f)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))t.apply(this,arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(f),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var H=this.actions.get("print");H.setEnabled(!mxClient.IS_IOS|| !navigator.standalone);H.visible=H.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"find"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),this.keyHandler.bindAction(75,!0,"insertEllipse",!0),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]= "synchronize"),this.installImagePasteHandler(),this.installNativeClipboardHandler();this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation(); a.preventDefault()}),mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,c,d,f,e,g){b.insertImage(a,e,g)},function(){},function(a){return"image/"==a.type.substring(0, @@ -8962,14 +8963,14 @@ a.preventDefault()}),mxEvent.addListener(c,"dragover",mxUtils.bind(this,function !1,a.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));"undefined"!==typeof window.mxSettings&&(H=this.editor.graph.view,H.setUnit(mxSettings.getUnit()),H.addListener("unitChanged",function(a,b){mxSettings.setUnit(b.getProperty("unit")); mxSettings.save()}),this.ruler=!this.canvasSupported||9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,H.unit),this.refresh());if("1"==urlParams.styledev){H=document.getElementById("geFooter");null!=H&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left= "2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this,function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),H.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(), -c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var x=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:x.apply(this,arguments)}}H=document.getElementById("geInfo");null!=H&&H.parentNode.removeChild(H);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var A=null;mxEvent.addListener(b.container,"dragleave", -function(a){b.isEnabled()&&(null!=A&&(A.parentNode.removeChild(A),A=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null==A&&(!mxClient.IS_IE||10<document.documentMode)&&(A=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=A&&(A.parentNode.removeChild(A),A=null);if(b.isEnabled()){var c= -mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),d=b.view.translate,f=b.view.scale,e=c.x/f-d.x,g=c.y/f-d.y;mxEvent.isAltDown(a)&&(g=e=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,e,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var k=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages); -if(null!=c)b.setSelectionCells(this.importXml(c,e,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var m=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=m;var p=null,d=c.getElementsByTagName("img");null!=d&&1==d.length?(m=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)||(p=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(m=c[0].getAttribute("href")));var l=!0,n=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(m, -e,g,!0,p,null,l))});p&&m.length>this.resampleThreshold?this.confirmImageResize(function(a){l=a;n()},mxEvent.isControlDown(a)):n()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),mxUtils.bind(this,function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",e,g,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ -k+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(k,e,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"),e,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var a=this.editor.graph;a.container.addEventListener("paste", +c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var y=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:y.apply(this,arguments)}}H=document.getElementById("geInfo");null!=H&&H.parentNode.removeChild(H);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var B=null;mxEvent.addListener(b.container,"dragleave", +function(a){b.isEnabled()&&(null!=B&&(B.parentNode.removeChild(B),B=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null==B&&(!mxClient.IS_IE||10<document.documentMode)&&(B=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=B&&(B.parentNode.removeChild(B),B=null);if(b.isEnabled()){var c= +mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),d=b.view.translate,f=b.view.scale,e=c.x/f-d.x,g=c.y/f-d.y;mxEvent.isAltDown(a)&&(g=e=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,e,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var m=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages); +if(null!=c)b.setSelectionCells(this.importXml(c,e,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var k=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=k;var p=null,d=c.getElementsByTagName("img");null!=d&&1==d.length?(k=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)||(p=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(k=c[0].getAttribute("href")));var l=!0,n=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(k, +e,g,!0,p,null,l))});p&&k.length>this.resampleThreshold?this.confirmImageResize(function(a){l=a;n()},mxEvent.isControlDown(a)):n()}else null!=m&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(m)?this.loadImage(decodeURIComponent(m),mxUtils.bind(this,function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",e,g,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +m+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(m,e,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"),e,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var a=this.editor.graph;a.container.addEventListener("paste", mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b))try{for(var c=b.clipboardData||b.originalEvent.clipboardData,d=!1,f=0;f<c.types.length;f++)if("text/"===c.types[f].substring(0,5)){d=!0;break}if(!d){var e=c.items;for(index in e){var g=e[index];if("file"===g.kind){if(a.isEditing())this.importFiles([g.getAsFile()],0,0,this.maxImageSize,function(b,c,d,f,e,g){a.insertImage(b,e,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var k= -this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],k.x,k.y,this.maxImageSize);mxEvent.consume(b)}break}}}}catch(D){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function a(){window.setTimeout(function(){c.innerHTML=" ";c.focus();document.execCommand("selectAll",!1,null)},0)}var b=this.editor.graph,c=document.createElement("div");c.setAttribute("autocomplete","off");c.setAttribute("autocorrect","off");c.setAttribute("autocapitalize","off");c.setAttribute("spellcheck", +this.editor.graph.getInsertPoint();this.importFiles([g.getAsFile()],k.x,k.y,this.maxImageSize);mxEvent.consume(b)}break}}}}catch(C){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function a(){window.setTimeout(function(){c.innerHTML=" ";c.focus();document.execCommand("selectAll",!1,null)},0)}var b=this.editor.graph,c=document.createElement("div");c.setAttribute("autocomplete","off");c.setAttribute("autocorrect","off");c.setAttribute("autocapitalize","off");c.setAttribute("spellcheck", "false");c.style.textRendering="optimizeSpeed";c.style.fontFamily="monospace";c.style.wordBreak="break-all";c.style.background="transparent";c.style.color="transparent";c.style.position="absolute";c.style.whiteSpace="nowrap";c.style.overflow="hidden";c.style.display="block";c.style.fontSize="1";c.style.zIndex="-1";c.style.resize="none";c.style.outline="none";c.style.width="1px";c.style.height="1px";mxUtils.setOpacity(c,0);c.contentEditable=!0;c.innerHTML=" ";var d=!1;this.keyHandler.bindControlKey(88, null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var f=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==f.nodeName||"TEXTAREA"==f.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||d||(c.style.left=b.container.scrollLeft+10+"px",c.style.top=b.container.scrollTop+10+"px",b.container.appendChild(c), d=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){c.focus();document.execCommand("selectAll",!1,null)},0):(c.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var f=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!d||224!=f&&17!=f&&91!=f||(d=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),c.parentNode.removeChild(c),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(c, @@ -8982,9 +8983,9 @@ mxUtils.bind(this,function(a,b){mxSettings.setPageFormat(this.editor.graph.pageF mxSettings.save()})),this.editor.autosave=mxSettings.getAutosave();null!=this.sidebar&&this.sidebar.showPalette("search",mxSettings.settings.search);this.editor.chromeless&&!this.editor.editable||null==this.sidebar||!(mxSettings.settings.isNew||8>=parseInt(mxSettings.settings.version||0))||(this.toggleScratchpad(),mxSettings.save());this.addListener("formatWidthChanged",function(){mxSettings.setFormatWidth(this.formatWidth);mxSettings.save()})}};EditorUi.prototype.copyCells=function(a,b){var c=this.editor.graph; if(c.isSelectionEmpty())a.innerHTML="";else{var d=mxUtils.sortCells(c.model.getTopmostCells(c.getSelectionCells())),f=mxUtils.getXml(c.encodeCells(d));mxUtils.setTextContent(a,encodeURIComponent(f));b?(c.removeCells(d,!1),c.lastPasteXml=null):(c.lastPasteXml=f,c.pasteCounter=0);a.focus();document.execCommand("selectAll",!1,null)}};EditorUi.prototype.pasteCells=function(a,b,c){if(!mxEvent.isConsumed(a)){var d=b;if(c&&null!=a.clipboardData&&a.clipboardData.getData){var f=a.clipboardData.getData("text/html"); if(null!=f&&0<f.length){if(d=document.createElement("div"),d.innerHTML=f,f=d.getElementsByTagName("style"),null!=f)for(;0<f.length;)f[0].parentNode.removeChild(f[0])}else f=a.clipboardData.getData("text/plain"),null!=f&&0<f.length&&(d=document.createElement("div"),mxUtils.setTextContent(d,f))}f=d.getElementsByTagName("span");if(null!=f&&0<f.length&&"application/vnd.lucid.chart.objects"===f[0].getAttribute("data-lucid-type"))c=f[0].getAttribute("data-lucid-content"),null!=c&&0<c.length&&(this.convertLucidChart(c, -mxUtils.bind(this,function(a){var b=this.editor.graph;b.lastPasteXml==a?b.pasteCounter++:(b.lastPasteXml=a,b.pasteCounter=0);var c=b.pasteCounter*b.gridSize;b.setSelectionCells(this.importXml(a,c,c));b.scrollCellToVisible(b.getSelectionCell())}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a));else{var e=mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText),g=!1;try{var k=e.lastIndexOf("%3E");0<=k&&k<e.length-3&&(e=e.substring(0,k+3))}catch(C){}try{var f=d.getElementsByTagName("span"), -m=null!=f&&0<f.length?mxUtils.trim(decodeURIComponent(f[0].textContent)):decodeURIComponent(e);this.isCompatibleString(m)&&(g=!0,e=m)}catch(C){}try{var l=this.editor.graph;if(null!=e&&0<e.length){l.lastPasteXml==e?l.pasteCounter++:(l.lastPasteXml=e,l.pasteCounter=0);var p=l.pasteCounter*l.gridSize;if(g||this.isCompatibleString(e))l.setSelectionCells(this.importXml(e,p,p));else{var n=l.getInsertPoint();l.isMouseInsertPoint()&&(p=0,l.lastPasteXml==e&&0<l.pasteCounter&&l.pasteCounter--);l.setSelectionCells(this.insertTextAt(e, -n.x+p,n.y+p,!0))}l.isSelectionEmpty()||(l.scrollCellToVisible(l.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(l.view.getState(l.getSelectionCell())));try{mxEvent.consume(a)}catch(C){}}else c||(l.lastPasteXml=null,l.pasteCounter=0)}catch(C){this.handleError(C)}}}b.innerHTML=" "};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b=null,c=0;c<a.length;c++)mxEvent.addListener(a[c],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null); +mxUtils.bind(this,function(a){var b=this.editor.graph;b.lastPasteXml==a?b.pasteCounter++:(b.lastPasteXml=a,b.pasteCounter=0);var c=b.pasteCounter*b.gridSize;b.setSelectionCells(this.importXml(a,c,c));b.scrollCellToVisible(b.getSelectionCell())}),mxUtils.bind(this,function(a){this.handleError(a)})),mxEvent.consume(a));else{var e=mxUtils.trim(null==d.innerText?mxUtils.getTextContent(d):d.innerText),g=!1;try{var k=e.lastIndexOf("%3E");0<=k&&k<e.length-3&&(e=e.substring(0,k+3))}catch(D){}try{var f=d.getElementsByTagName("span"), +m=null!=f&&0<f.length?mxUtils.trim(decodeURIComponent(f[0].textContent)):decodeURIComponent(e);this.isCompatibleString(m)&&(g=!0,e=m)}catch(D){}try{var l=this.editor.graph;if(null!=e&&0<e.length){l.lastPasteXml==e?l.pasteCounter++:(l.lastPasteXml=e,l.pasteCounter=0);var p=l.pasteCounter*l.gridSize;if(g||this.isCompatibleString(e))l.setSelectionCells(this.importXml(e,p,p));else{var n=l.getInsertPoint();l.isMouseInsertPoint()&&(p=0,l.lastPasteXml==e&&0<l.pasteCounter&&l.pasteCounter--);l.setSelectionCells(this.insertTextAt(e, +n.x+p,n.y+p,!0))}l.isSelectionEmpty()||(l.scrollCellToVisible(l.getSelectionCell()),null!=this.hoverIcons&&this.hoverIcons.update(l.view.getState(l.getSelectionCell())));try{mxEvent.consume(a)}catch(D){}}else c||(l.lastPasteXml=null,l.pasteCounter=0)}catch(D){this.handleError(D)}}}b.innerHTML=" "};EditorUi.prototype.addFileDropHandler=function(a){if(Graph.fileSupport)for(var b=null,c=0;c<a.length;c++)mxEvent.addListener(a[c],"dragleave",function(a){null!=b&&(b.parentNode.removeChild(b),b=null); a.stopPropagation();a.preventDefault()}),mxEvent.addListener(a[c],"dragover",mxUtils.bind(this,function(a){(this.editor.graph.isEnabled()||"1"!=urlParams.embed)&&null==b&&(!mxClient.IS_IE||10<document.documentMode&&12>document.documentMode)&&(b=this.highlightElement());a.stopPropagation();a.preventDefault()})),mxEvent.addListener(a[c],"drop",mxUtils.bind(this,function(a){null!=b&&(b.parentNode.removeChild(b),b=null);if(this.editor.graph.isEnabled()||"1"!=urlParams.embed)if(0<a.dataTransfer.files.length)this.hideDialog(), "1"==urlParams.embed?this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,null,null,null,null,!mxEvent.isControlDown(a)&&!mxEvent.isShiftDown(a)):this.openFiles(a.dataTransfer.files,!0);else{var c=this.extractGraphModelFromEvent(a);if(null==c){var d=null!=a.dataTransfer?a.dataTransfer:a.clipboardData;null!=d&&(10==document.documentMode||11==document.documentMode?c=d.getData("Text"):(c=null,c=0<=mxUtils.indexOf(d.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):0<=mxUtils.indexOf(d.types, "text/html")?d.getData("text/html"):null,null!=c&&0<c.length?(d=document.createElement("div"),d.innerHTML=c,d=d.getElementsByTagName("img"),0<d.length&&(c=d[0].getAttribute("src"))):0<=mxUtils.indexOf(d.types,"text/plain")&&(c=d.getData("text/plain"))),null!=c&&("data:image/png;base64,"==c.substring(0,22)?(c=this.extractGraphModelFromPng(c),null!=c&&0<c.length&&this.openLocalFile(c,null,!0)):!this.isOffline()&&this.isRemoteFileFormat(c)?(new mxXmlRequest(OPEN_URL,"format=xml&data="+encodeURIComponent(c))).send(mxUtils.bind(this, @@ -8992,10 +8993,10 @@ function(a){200<=a.getStatus()&&299>=a.getStatus()&&this.openLocalFile(a.getText var e=document.documentElement;d=(f.clientWidth||e.clientWidth)-3;f=Math.max(f.clientHeight||0,e.clientHeight)-3}else b=a.offsetTop,c=a.offsetLeft,d=a.clientWidth,f=a.clientHeight;e=document.createElement("div");e.style.zIndex=mxPopupMenu.prototype.zIndex+2;e.style.border="3px dotted rgb(254, 137, 12)";e.style.pointerEvents="none";e.style.position="absolute";e.style.top=b+"px";e.style.left=c+"px";e.style.width=Math.max(0,d-3)+"px";e.style.height=Math.max(0,f-3)+"px";null!=a&&a.parentNode==this.editor.graph.container? this.editor.graph.container.appendChild(e):document.body.appendChild(e);return e};EditorUi.prototype.stringToCells=function(a){a=mxUtils.parseXml(a);var b=this.editor.extractGraphModel(a.documentElement);a=[];if(null!=b){var c=new mxCodec(b.ownerDocument),d=new mxGraphModel;c.decode(b,d);b=d.getChildAt(d.getRoot(),0);for(c=0;c<d.getChildCount(b);c++)a.push(d.getChildAt(b,c))}return a};EditorUi.prototype.openFiles=function(a,b){if(this.spinner.spin(document.body,mxResources.get("loading")))for(var c= 0;c<a.length;c++)mxUtils.bind(this,function(a){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{var d=c.target.result,f=a.name;if(null!=f&&0<f.length){!this.useCanvasForExport&&/(\.png)$/i.test(f)?f=f.substring(0,f.length-4)+".drawio":/(\.pdf)$/i.test(f)&&(f=f.substring(0,f.length-4)+".drawio");var e=mxUtils.bind(this,function(a){f=0<=f.lastIndexOf(".")?f.substring(0,f.lastIndexOf("."))+".drawio":f+".drawio";if("<mxlibrary"==a.substring(0,10)){null==this.getCurrentFile()&&"1"!=urlParams.embed&& -this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,f))}catch(A){this.handleError(A,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,f,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();e(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop();e(a)}));else if(Graph.fileSupport&&!this.isOffline()&& +this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,a,f))}catch(B){this.handleError(B,mxResources.get("errorLoadingFile"))}}else this.openLocalFile(a,f,b)});if(/(\.v(dx|sdx?))($|\?)/i.test(f)||/(\.vs(x|sx?))($|\?)/i.test(f))this.importVisio(a,mxUtils.bind(this,function(a){this.spinner.stop();e(a)}));else if(/(\.*<graphml )/.test(d))this.importGraphML(d,mxUtils.bind(this,function(a){this.spinner.stop();e(a)}));else if(Graph.fileSupport&&!this.isOffline()&& (new XMLHttpRequest).upload&&this.isRemoteFileFormat(d,f))this.parseFile(a,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?e(a.responseText):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))}));else if(this.isLucidChartData(d))/(\.json)$/i.test(f)&&(f=f.substring(0,f.length-5)+".drawio"),this.convertLucidChart(d,mxUtils.bind(this,function(a){this.spinner.stop();this.openLocalFile(a, -f,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==c.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,c.target.result,a.name))}catch(x){this.handleError(x,mxResources.get("errorLoadingFile"))}}else if(0==d.indexOf("PK"))this.importZipFile(a,mxUtils.bind(this,function(a){this.spinner.stop(); -e(a)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,f,b)}));else{if("image/png"==a.type.substring(0,9))d=this.extractGraphModelFromPng(d);else if("application/pdf"==a.type){var g=Editor.extractGraphModelFromPdf(d);null!=g&&(d=g)}this.spinner.stop();this.openLocalFile(d,f,b)}}}catch(x){this.handleError(x)}});c.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"!==a.type.substring(0,5)&&"application/pdf"!==a.type||"image/svg"=== +f,b)}),mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));else if("<mxlibrary"==c.target.result.substring(0,10)){this.spinner.stop();null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.openLocalFile(this.emptyDiagramXml,this.defaultFilename,b);try{this.loadLibrary(new LocalLibrary(this,c.target.result,a.name))}catch(y){this.handleError(y,mxResources.get("errorLoadingFile"))}}else if(0==d.indexOf("PK"))this.importZipFile(a,mxUtils.bind(this,function(a){this.spinner.stop(); +e(a)}),mxUtils.bind(this,function(){this.spinner.stop();this.openLocalFile(d,f,b)}));else{if("image/png"==a.type.substring(0,9))d=this.extractGraphModelFromPng(d);else if("application/pdf"==a.type){var g=Editor.extractGraphModelFromPdf(d);null!=g&&(d=g)}this.spinner.stop();this.openLocalFile(d,f,b)}}}catch(y){this.handleError(y)}});c.onerror=mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a);window.openFile=null});"image"!==a.type.substring(0,5)&&"application/pdf"!==a.type||"image/svg"=== a.type.substring(0,9)?c.readAsText(a):c.readAsDataURL(a)})(a[c])};EditorUi.prototype.openLocalFile=function(a,b,c){var d=this.getCurrentFile(),f=mxUtils.bind(this,function(){window.openFile=null;if(null==b&&null!=this.getCurrentFile()&&this.isDiagramEmpty()){var d=mxUtils.parseXml(a);null!=d&&(this.editor.setGraphXml(d.documentElement),this.editor.graph.selectAll())}else this.fileLoaded(new LocalFile(this,a,b||this.defaultFilename,c))});if(null!=a&&0<a.length)null==d||!d.isModified()&&(mxClient.IS_CHROMEAPP|| EditorUi.isElectronApp)?f():(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")):(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a,b),window.openWindow(this.getUrl(),null,mxUtils.bind(this,function(){null!=d&&d.isModified()?this.confirm(mxResources.get("allChangesLost"),null,f,mxResources.get("cancel"),mxResources.get("discardChanges")): f()})));else throw Error(mxResources.get("notADiagramFile"));};EditorUi.prototype.getBasenames=function(){var a={};if(null!=this.pages)for(var b=0;b<this.pages.length;b++)this.updatePageRoot(this.pages[b]),this.addBasenamesForCell(this.pages[b].root,a);else this.addBasenamesForCell(this.editor.graph.model.getRoot(),a);var b=[],c;for(c in a)b.push(c);return b};EditorUi.prototype.addBasenamesForCell=function(a,b){function c(a){if(null!=a){var c=a.lastIndexOf(".");0<c&&(a=a.substring(c+1,a.length)); @@ -9009,14 +9010,14 @@ e.data,m=mxUtils.bind(this,function(a){if(null!=a&&"function"===typeof a.charAt& k)return;if("dialog"==k.action){this.showError(null!=k.titleKey?mxResources.get(k.titleKey):k.title,null!=k.messageKey?mxResources.get(k.messageKey):k.message,null!=k.buttonKey?mxResources.get(k.buttonKey):k.button);null!=k.modified&&(this.editor.modified=k.modified);return}if("prompt"==k.action){this.spinner.stop();var l=new FilenameDialog(this,k.defaultValue||"",null!=k.okKey?mxResources.get(k.okKey):null,function(a){null!=a&&g.postMessage(JSON.stringify({event:"prompt",value:a,message:k}),"*")}, null!=k.titleKey?mxResources.get(k.titleKey):k.title);this.showDialog(l.container,300,80,!0,!1);l.init();return}if("draft"==k.action){var p=m(k.xml);this.spinner.stop();l=new DraftDialog(this,mxResources.get("draftFound",[k.name||this.defaultFilename]),p,mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"edit",message:k}),"*")}),mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"discard",message:k}),"*")}), k.editKey?mxResources.get(k.editKey):null,k.discardKey?mxResources.get(k.discardKey):null,k.ignore?mxUtils.bind(this,function(){this.hideDialog();g.postMessage(JSON.stringify({event:"draft",result:"ignore",message:k}),"*")}):null);this.showDialog(l.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{l.init()}catch(P){g.postMessage(JSON.stringify({event:"draft",error:P.toString(),message:k}),"*")}return}if("template"==k.action){this.spinner.stop();var n= -1==k.enableRecent,q=1==k.enableSearch,t=1==k.enableCustomTemp,l=new NewDialog(this,!1,null!=k.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=k.callback?g.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,e,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,n?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}): -null,q?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){g.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")}),null,null,t?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},0)})}):null);this.showDialog(l.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));l.init();return}if("textContent"== -k.action){var u=this.getDiagramTextContent();g.postMessage(JSON.stringify({event:"textContent",data:u,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var v=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body, -v):this.spinner.stop();return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var y=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var z=this.editor.graph,K=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=k.format;b.message=k;b.data=a;b.xml=encodeURIComponent(y); -g.postMessage(JSON.stringify(b),"*")}),O=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);"xmlpng"==k.format&&(a=this.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(y)));z!=this.editor.graph&&z.container.parentNode.removeChild(z.container);K(a)}),R=k.pageId||(null!=this.pages?this.pages[0].getId():null);if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage.getId()!=R){for(var X=z.getGlobalVariable,z=this.createTemporaryGraph(z.getStylesheet()),U,L=0;L<this.pages.length;L++)if(this.pages[L].getId()== -R){U=this.updatePageRoot(this.pages[L]);break}z.getGlobalVariable=function(a){return"page"==a?U.getName():"pagenumber"==a?1:X.apply(this,arguments)};document.body.appendChild(z.container);z.model.setRoot(U.root)}if(null!=k.layerIds){for(var V=z.model,W=V.getChildCells(V.getRoot()),l={},L=0;L<k.layerIds.length;L++)l[k.layerIds[L]]=!0;for(L=0;L<W.length;L++)V.setVisible(W[L],l[W[L].id]||!1)}this.exportToCanvas(mxUtils.bind(this,function(a){O(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this, -function(){O(null)}),null,null,k.scale,null,null,null,z)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=R?"&pageId="+R:"")+(null!=k.layerIds?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(y))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?K("data:image/png;base64,"+a.getText()):O(null)}),mxUtils.bind(this,function(){O(null)}))}}else{null!= -k.xml&&0<k.xml.length&&this.setFileData(k.xml);v=this.createLoadMessage("export");if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var ga=this.getXmlFileData();v.xml=mxUtils.getXml(ga);v.data=this.getFileData(null,null,!0,null,null,null,ga);v.format=k.format}else if("html"==k.format)y=this.editor.getGraphXml(),v.data=this.getHtml(y,this.editor.graph),v.xml=mxUtils.getXml(y),v.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;var fa=this.editor.graph.background; +1==k.enableRecent,q=1==k.enableSearch,u=1==k.enableCustomTemp,l=new NewDialog(this,!1,null!=k.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=k.callback?g.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,e,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,n?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}): +null,q?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){g.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")}),null,null,u?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},0)})}):null);this.showDialog(l.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));l.init();return}if("textContent"== +k.action){var t=this.getDiagramTextContent();g.postMessage(JSON.stringify({event:"textContent",data:t,message:k}),"*");return}if("status"==k.action){null!=k.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(k.messageKey))):null!=k.message&&this.editor.setStatus(mxUtils.htmlEntities(k.message));null!=k.modified&&(this.editor.modified=k.modified);return}if("spinner"==k.action){var v=null!=k.messageKey?mxResources.get(k.messageKey):k.message;null==k.show||k.show?this.spinner.spin(document.body, +v):this.spinner.stop();return}if("export"==k.action){if("png"==k.format||"xmlpng"==k.format){if(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){var z=null!=k.xml?k.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var x=this.editor.graph,K=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=k.format;b.message=k;b.data=a;b.xml=encodeURIComponent(z); +g.postMessage(JSON.stringify(b),"*")}),O=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);"xmlpng"==k.format&&(a=this.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(z)));x!=this.editor.graph&&x.container.parentNode.removeChild(x.container);K(a)}),R=k.pageId||(null!=this.pages?this.pages[0].getId():null);if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage.getId()!=R){for(var X=x.getGlobalVariable,x=this.createTemporaryGraph(x.getStylesheet()),U,L=0;L<this.pages.length;L++)if(this.pages[L].getId()== +R){U=this.updatePageRoot(this.pages[L]);break}x.getGlobalVariable=function(a){return"page"==a?U.getName():"pagenumber"==a?1:X.apply(this,arguments)};document.body.appendChild(x.container);x.model.setRoot(U.root)}if(null!=k.layerIds){for(var V=x.model,W=V.getChildCells(V.getRoot()),l={},L=0;L<k.layerIds.length;L++)l[k.layerIds[L]]=!0;for(L=0;L<W.length;L++)V.setVisible(W[L],l[W[L].id]||!1)}this.exportToCanvas(mxUtils.bind(this,function(a){O(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this, +function(){O(null)}),null,null,k.scale,null,null,null,x)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==k.format?"1":"0")+(null!=R?"&pageId="+R:"")+(null!=k.layerIds?"&extras="+encodeURIComponent(JSON.stringify({layerIds:k.layerIds})):"")+(null!=k.scale?"&scale="+k.scale:"")+"&base64=1&xml="+encodeURIComponent(z))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?K("data:image/png;base64,"+a.getText()):O(null)}),mxUtils.bind(this,function(){O(null)}))}}else{null!= +k.xml&&0<k.xml.length&&this.setFileData(k.xml);v=this.createLoadMessage("export");if("html2"==k.format||"html"==k.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var ga=this.getXmlFileData();v.xml=mxUtils.getXml(ga);v.data=this.getFileData(null,null,!0,null,null,null,ga);v.format=k.format}else if("html"==k.format)z=this.editor.getGraphXml(),v.data=this.getHtml(z,this.editor.graph),v.xml=mxUtils.getXml(z),v.format=k.format;else{mxSvgCanvas2D.prototype.foAltText=null;var fa=this.editor.graph.background; fa==mxConstants.NONE&&(fa=null);v.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);v.format="svg";var ba=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();v.data=this.createSvgDataUri(a);g.postMessage(JSON.stringify(v),"*")});if("xmlsvg"==k.format)(null==k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin))&&this.getEmbeddedSvg(v.xml,this.editor.graph,null,!0,ba,null,null,k.embedImages);else if(null== k.spin&&null==k.spinKey||this.spinner.spin(document.body,null!=k.spinKey?mxResources.get(k.spinKey):k.spin)){this.editor.graph.setEnabled(!1);var Y=this.editor.graph.getSvg(fa);this.embedFonts(Y,mxUtils.bind(this,function(a){k.embedImages||null==k.embedImages?this.convertImages(a,mxUtils.bind(this,function(a){ba(mxUtils.getXml(a))})):ba(mxUtils.getXml(a))}))}return}g.postMessage(JSON.stringify(v),"*")}return}if("load"==k.action)d=1==k.autosave,this.hideDialog(),null!=k.modified&&null==urlParams.modified&& (urlParams.modified=k.modified),null!=k.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=k.saveAndExit),null!=k.title&&null!=this.buttonContainer&&(p=document.createElement("span"),mxUtils.write(p,k.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="6px",this.buttonContainer.style.right="25px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&& @@ -9029,17 +9030,17 @@ JSON.stringify({event:"init"}):urlParams.ready||"ready";g.postMessage(e,"*")};Ed mxResources.get("saveAndExit")),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)):(mxUtils.write(b,mxResources.get("save")),b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})),a.appendChild(b),"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title", mxResources.get("saveAndExit")),b.className="geBigButton geBigStandardButton",b.style.marginLeft="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geBigButton geBigStandardButton";b.style.marginLeft="6px";b.style.marginRight="20px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})); a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://about.draw.io/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container, -640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=function(a,b){for(var c=this.editor.graph,d=c.getSelectionCells(),f=0;f<a.length;f++){var e=new window[a[f].layout](c);if(null!=a[f].config)for(var g in a[f].config)e[g]=a[f].config[g];this.executeLayout(function(){e.execute(c.getDefaultParent(),0==d.length?null:d)},f==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[],e=[],f={};if(0<c.length){var g={},k=null, -m=null,l=null,n=null,u=null,C=null,B=null,I=null,F="",G="auto",J="auto",E=null,K=null,O=40,R=40,X=100,U=0,L=this.editor.graph;L.getGraphBounds();for(var V=function(){null!=b?b(la):(L.setSelectionCells(la),L.scrollCellToVisible(L.getSelectionCell()))},W=L.getFreeInsertPoint(),ga=W.x,fa=W.y,W=fa,ba=null,Y="auto",I=null,aa=[],P=null,ca=null,Z=0;Z<c.length&&"#"==c[Z].charAt(0);){a=c[Z];for(Z++;Z<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[Z].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[Z].substring(1)), -Z++;if("#"!=a.charAt(1)){var da=a.indexOf(":");if(0<da){var Q=mxUtils.trim(a.substring(1,da)),M=mxUtils.trim(a.substring(da+1));"label"==Q?ba=L.sanitizeHtml(M):"labelname"==Q&&0<M.length&&"-"!=M?n=M:"labels"==Q&&0<M.length&&"-"!=M?u=JSON.parse(M):"style"==Q?k=M:"parentstyle"==Q?C=M:"stylename"==Q&&0<M.length&&"-"!=M?l=M:"styles"==Q&&0<M.length&&"-"!=M?m=JSON.parse(M):"identity"==Q&&0<M.length&&"-"!=M?B=M:"parent"==Q&&0<M.length&&"-"!=M?I=M:"namespace"==Q&&0<M.length&&"-"!=M?F=M:"width"==Q?G=M:"height"== -Q?J=M:"left"==Q&&0<M.length?E=M:"top"==Q&&0<M.length?K=M:"ignore"==Q?ca=M.split(","):"connect"==Q?aa.push(JSON.parse(M)):"link"==Q?P=M:"padding"==Q?U=parseFloat(M):"edgespacing"==Q?O=parseFloat(M):"nodespacing"==Q?R=parseFloat(M):"levelspacing"==Q?X=parseFloat(M):"layout"==Q&&(Y=M)}}}if(null==c[Z])throw Error(mxResources.get("invalidOrMissingFile"));for(var ea=this.editor.csvToArray(c[Z]),Q=da=null,M=[],T=0;T<ea.length;T++)B==ea[T]&&(da=T),I==ea[T]&&(Q=T),M.push(mxUtils.trim(ea[T]).replace(/[^a-z0-9]+/ig, -"_").replace(/^\d+/,"").replace(/_+$/,""));null==ba&&(ba="%"+M[0]+"%");if(null!=aa)for(var S=0;S<aa.length;S++)null==g[aa[S].to]&&(g[aa[S].to]={});B=[];for(T=Z+1;T<c.length;T++){var ha=this.editor.csvToArray(c[T]);if(null==ha){var ma=40<c[T].length?c[T].substring(0,40)+"...":c[T];throw Error(ma+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));}0<ha.length&&B.push(ha)}L.model.beginUpdate();try{for(T=0;T<B.length;T++){var ha=B[T],N=null,ka=null!=da?F+ha[da]:null;null!=ka&&(N=L.model.getCell(ka)); -var c=null!=N,ia=new mxCell(ba,new mxGeometry(ga,W,0,0),k||"whiteSpace=wrap;html=1;");ia.vertex=!0;ia.id=ka;for(var ja=0;ja<ha.length;ja++)L.setAttributeForCell(ia,M[ja],ha[ja]);if(null!=n&&null!=u){var ua=u[ia.getAttribute(n)];null!=ua&&L.labelChanged(ia,ua)}if(null!=l&&null!=m){var va=m[ia.getAttribute(l)];null!=va&&(ia.style=va)}L.setAttributeForCell(ia,"placeholders","1");ia.style=L.replacePlaceholders(ia,ia.style);c&&(L.model.setGeometry(N,ia.geometry),L.model.setStyle(N,ia.style),0>mxUtils.indexOf(e, -N)&&e.push(N));N=ia;if(!c)for(S=0;S<aa.length;S++)g[aa[S].to][N.getAttribute(aa[S].to)]=N;null!=P&&"link"!=P&&(L.setLinkForCell(N,N.getAttribute(P)),L.setAttributeForCell(N,P,null));L.fireEvent(new mxEventObject("cellsInserted","cells",[N]));var wa=this.editor.graph.getPreferredSizeForCell(N);N.vertex&&(null!=E&&null!=N.getAttribute(E)&&(N.geometry.x=ga+parseFloat(N.getAttribute(E))),null!=K&&null!=N.getAttribute(K)&&(N.geometry.y=fa+parseFloat(N.getAttribute(K))),"@"==G.charAt(0)&&null!=N.getAttribute(G.substring(1))? -N.geometry.width=parseFloat(N.getAttribute(G.substring(1))):N.geometry.width="auto"==G?wa.width+U:parseFloat(G),"@"==J.charAt(0)&&null!=N.getAttribute(J.substring(1))?N.geometry.height=parseFloat(N.getAttribute(J.substring(1))):N.geometry.height="auto"==J?wa.height+U:parseFloat(J),W+=N.geometry.height+R);c?(null==f[ka]&&(f[ka]=[]),f[ka].push(N)):(I=null!=Q?L.model.getCell(F+ha[Q]):null,d.push(N),null!=I?(I.style=L.replacePlaceholders(I,C),L.addCell(N,I)):e.push(L.addCell(N)))}for(var na=e.slice(), +640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=function(a,b){for(var c=this.editor.graph,d=c.getSelectionCells(),e=0;e<a.length;e++){var f=new window[a[e].layout](c);if(null!=a[e].config)for(var g in a[e].config)f[g]=a[e].config[g];this.executeLayout(function(){f.execute(c.getDefaultParent(),0==d.length?null:d)},e==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[],e=[],f={};if(0<c.length){var g={},k=null, +m=null,l=null,n=null,t=null,D=null,A=null,F=null,G="",I="auto",J="auto",E=null,K=null,O=40,R=40,X=100,U=0,L=this.editor.graph;L.getGraphBounds();for(var V=function(){null!=b?b(la):(L.setSelectionCells(la),L.scrollCellToVisible(L.getSelectionCell()))},W=L.getFreeInsertPoint(),ga=W.x,fa=W.y,W=fa,ba=null,Y="auto",F=null,aa=[],P=null,ca=null,Z=0;Z<c.length&&"#"==c[Z].charAt(0);){a=c[Z];for(Z++;Z<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[Z].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[Z].substring(1)), +Z++;if("#"!=a.charAt(1)){var da=a.indexOf(":");if(0<da){var Q=mxUtils.trim(a.substring(1,da)),M=mxUtils.trim(a.substring(da+1));"label"==Q?ba=L.sanitizeHtml(M):"labelname"==Q&&0<M.length&&"-"!=M?n=M:"labels"==Q&&0<M.length&&"-"!=M?t=JSON.parse(M):"style"==Q?k=M:"parentstyle"==Q?D=M:"stylename"==Q&&0<M.length&&"-"!=M?l=M:"styles"==Q&&0<M.length&&"-"!=M?m=JSON.parse(M):"identity"==Q&&0<M.length&&"-"!=M?A=M:"parent"==Q&&0<M.length&&"-"!=M?F=M:"namespace"==Q&&0<M.length&&"-"!=M?G=M:"width"==Q?I=M:"height"== +Q?J=M:"left"==Q&&0<M.length?E=M:"top"==Q&&0<M.length?K=M:"ignore"==Q?ca=M.split(","):"connect"==Q?aa.push(JSON.parse(M)):"link"==Q?P=M:"padding"==Q?U=parseFloat(M):"edgespacing"==Q?O=parseFloat(M):"nodespacing"==Q?R=parseFloat(M):"levelspacing"==Q?X=parseFloat(M):"layout"==Q&&(Y=M)}}}if(null==c[Z])throw Error(mxResources.get("invalidOrMissingFile"));for(var ea=this.editor.csvToArray(c[Z]),Q=da=null,M=[],T=0;T<ea.length;T++)A==ea[T]&&(da=T),F==ea[T]&&(Q=T),M.push(mxUtils.trim(ea[T]).replace(/[^a-z0-9]+/ig, +"_").replace(/^\d+/,"").replace(/_+$/,""));null==ba&&(ba="%"+M[0]+"%");if(null!=aa)for(var S=0;S<aa.length;S++)null==g[aa[S].to]&&(g[aa[S].to]={});A=[];for(T=Z+1;T<c.length;T++){var ha=this.editor.csvToArray(c[T]);if(null==ha){var ma=40<c[T].length?c[T].substring(0,40)+"...":c[T];throw Error(ma+" ("+T+"):\n"+mxResources.get("containsValidationErrors"));}0<ha.length&&A.push(ha)}L.model.beginUpdate();try{for(T=0;T<A.length;T++){var ha=A[T],N=null,ka=null!=da?G+ha[da]:null;null!=ka&&(N=L.model.getCell(ka)); +var c=null!=N,ia=new mxCell(ba,new mxGeometry(ga,W,0,0),k||"whiteSpace=wrap;html=1;");ia.vertex=!0;ia.id=ka;for(var ja=0;ja<ha.length;ja++)L.setAttributeForCell(ia,M[ja],ha[ja]);if(null!=n&&null!=t){var ua=t[ia.getAttribute(n)];null!=ua&&L.labelChanged(ia,ua)}if(null!=l&&null!=m){var va=m[ia.getAttribute(l)];null!=va&&(ia.style=va)}L.setAttributeForCell(ia,"placeholders","1");ia.style=L.replacePlaceholders(ia,ia.style);c&&(L.model.setGeometry(N,ia.geometry),L.model.setStyle(N,ia.style),0>mxUtils.indexOf(e, +N)&&e.push(N));N=ia;if(!c)for(S=0;S<aa.length;S++)g[aa[S].to][N.getAttribute(aa[S].to)]=N;null!=P&&"link"!=P&&(L.setLinkForCell(N,N.getAttribute(P)),L.setAttributeForCell(N,P,null));L.fireEvent(new mxEventObject("cellsInserted","cells",[N]));var wa=this.editor.graph.getPreferredSizeForCell(N);N.vertex&&(null!=E&&null!=N.getAttribute(E)&&(N.geometry.x=ga+parseFloat(N.getAttribute(E))),null!=K&&null!=N.getAttribute(K)&&(N.geometry.y=fa+parseFloat(N.getAttribute(K))),"@"==I.charAt(0)&&null!=N.getAttribute(I.substring(1))? +N.geometry.width=parseFloat(N.getAttribute(I.substring(1))):N.geometry.width="auto"==I?wa.width+U:parseFloat(I),"@"==J.charAt(0)&&null!=N.getAttribute(J.substring(1))?N.geometry.height=parseFloat(N.getAttribute(J.substring(1))):N.geometry.height="auto"==J?wa.height+U:parseFloat(J),W+=N.geometry.height+R);c?(null==f[ka]&&(f[ka]=[]),f[ka].push(N)):(F=null!=Q?L.model.getCell(G+ha[Q]):null,d.push(N),null!=F?(F.style=L.replacePlaceholders(F,D),L.addCell(N,F)):e.push(L.addCell(N)))}for(var na=e.slice(), la=e.slice(),S=0;S<aa.length;S++)for(var xa=aa[S],T=0;T<d.length;T++){var N=d[T],ya=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d&&(L.setAttributeForCell(b,c.from,null),""!=d))for(var d=d.split(","),e=0;e<d.length;e++){var f=g[c.to][d[e]];if(null!=f){var k=c.label;null!=c.fromlabel&&(k=(b.getAttribute(c.fromlabel)||"")+(k||""));null!=c.tolabel&&(k=(k||"")+(f.getAttribute(c.tolabel)||""));var m="target"==c.placeholders==!c.invert?f:a,m=null!=c.style?L.replacePlaceholders(m, c.style):L.createCurrentEdgeStyle();la.push(L.insertEdge(null,null,k||"",c.invert?f:a,c.invert?a:f,m));mxUtils.remove(c.invert?a:f,na)}}});ya(N,N,xa);if(null!=f[N.id])for(ja=0;ja<f[N.id].length;ja++)ya(N,f[N.id][ja],xa)}if(null!=ca)for(T=0;T<d.length;T++)for(N=d[T],ja=0;ja<ca.length;ja++)L.setAttributeForCell(N,mxUtils.trim(ca[ja]),null);if(0<e.length){var oa=new mxParallelEdgeLayout(L);oa.spacing=O;var ta=function(){0<oa.spacing&&oa.execute(L.getDefaultParent());for(var a=0;a<e.length;a++){var b= -L.getCellGeometry(e[a]);b.x=Math.round(L.snap(b.x));b.y=Math.round(L.snap(b.y));"auto"==G&&(b.width=Math.round(L.snap(b.width)));"auto"==J&&(b.height=Math.round(L.snap(b.height)))}};if("["==Y.charAt(0)){var za=V;L.view.validate();this.executeLayoutList(JSON.parse(Y),function(){ta();za()});V=null}else if("circle"==Y){var ra=new mxCircleLayout(L);ra.resetEdges=!1;var Aa=ra.isVertexIgnored;ra.isVertexIgnored=function(a){return Aa.apply(this,arguments)||0>mxUtils.indexOf(e,a)};this.executeLayout(function(){ra.execute(L.getDefaultParent()); +L.getCellGeometry(e[a]);b.x=Math.round(L.snap(b.x));b.y=Math.round(L.snap(b.y));"auto"==I&&(b.width=Math.round(L.snap(b.width)));"auto"==J&&(b.height=Math.round(L.snap(b.height)))}};if("["==Y.charAt(0)){var za=V;L.view.validate();this.executeLayoutList(JSON.parse(Y),function(){ta();za()});V=null}else if("circle"==Y){var ra=new mxCircleLayout(L);ra.resetEdges=!1;var Aa=ra.isVertexIgnored;ra.isVertexIgnored=function(a){return Aa.apply(this,arguments)||0>mxUtils.indexOf(e,a)};this.executeLayout(function(){ra.execute(L.getDefaultParent()); ta()},!0,V);V=null}else if("horizontaltree"==Y||"verticaltree"==Y||"auto"==Y&&la.length==2*e.length-1&&1==na.length){L.view.validate();var sa=new mxCompactTreeLayout(L,"horizontaltree"==Y);sa.levelDistance=R;sa.edgeRouting=!1;sa.resetEdges=!1;this.executeLayout(function(){sa.execute(L.getDefaultParent(),0<na.length?na[0]:null)},!0,V);V=null}else if("horizontalflow"==Y||"verticalflow"==Y||"auto"==Y&&1==na.length){L.view.validate();var pa=new mxHierarchicalLayout(L,"horizontalflow"==Y?mxConstants.DIRECTION_WEST: mxConstants.DIRECTION_NORTH);pa.intraCellSpacing=R;pa.parallelEdgeSpacing=O;pa.interRankCellSpacing=X;pa.disableEdgeStyle=!1;this.executeLayout(function(){pa.execute(L.getDefaultParent(),la);L.moveCells(la,ga,fa)},!0,V);V=null}else if("organic"==Y||"auto"==Y&&la.length>e.length){L.view.validate();var qa=new mxFastOrganicLayout(L);qa.forceConstant=3*R;qa.resetEdges=!1;var Ba=qa.isVertexIgnored;qa.isVertexIgnored=function(a){return Ba.apply(this,arguments)||0>mxUtils.indexOf(e,a)};oa=new mxParallelEdgeLayout(L); oa.spacing=O;this.executeLayout(function(){qa.execute(L.getDefaultParent());ta()},!0,V);V=null}}this.hideDialog()}finally{L.model.endUpdate()}null!=V&&V()}}catch(Ca){this.handleError(Ca)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b=window.location.search;return b};EditorUi.prototype.getUrl= @@ -9059,65 +9060,65 @@ function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.len var n=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){n.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),c=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=c&&c.isEditable()&&c.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b); this.actions.get("connectionPoints").setEnabled(b);this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("editGeometry").setEnabled(a.getModel().isVertex(a.getSelectionCell()));this.actions.get("createShape").setEnabled(b);this.actions.get("createRevision").setEnabled(b);this.actions.get("moveToFolder").setEnabled(null!=c);this.actions.get("makeCopy").setEnabled(null!=c&&!c.isRestricted());this.actions.get("editDiagram").setEnabled(b&& (null==c||!c.isRestricted()));this.actions.get("publishLink").setEnabled(null!=c&&!c.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=c&&c.isRenamable()|| -"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var u=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);u.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption= +"1"==urlParams.embed);this.actions.get("close").setEnabled(null!=c);this.menus.get("publish").setEnabled(null!=c&&!c.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var t=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);t.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption= !1,ExportDialog.showGifOption=!1,ExportDialog.exportFile=function(a,b,c,d,e,g,k){var f=a.editor.graph;if("xml"==c)a.hideDialog(),a.saveData(b,"xml",mxUtils.getXml(a.editor.getGraphXml()),"text/xml");else if("svg"==c)a.hideDialog(),a.saveData(b,"svg",mxUtils.getXml(f.getSvg(d,e,g)),"image/svg+xml");else{var m=a.getFileData(!0,null,null,null,null,!0),l=f.getGraphBounds(),n=Math.floor(l.width*e/f.view.scale),p=Math.floor(l.height*e/f.view.scale);if(m.length<=MAX_REQUEST_SIZE&&n*p<MAX_AREA)if(a.hideDialog(), "png"!=c&&"jpg"!=c&&"jpeg"!=c||!a.isExportToCanvas()){var q={globalVars:f.getExportVariables()};a.saveRequest(b,c,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+c+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(0<k?"&dpi="+k:"")+"&bg="+(null!=d?d:"none")+"&w="+n+"&h="+p+"&border="+g+"&xml="+encodeURIComponent(m))})}else"png"==c?a.exportImage(e,null==d||"none"==d,!0,!1,!1,g,!0,!1,null,null,k):a.exportImage(e,!1,!0,!1, !1,g,!0,!1,"jpeg");else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var a=this.editor.graph,b="";if(null!=this.pages)for(var c=0;c<this.pages.length;c++){var d=a;this.currentPage!=this.pages[c]&&(d=this.createTemporaryGraph(a.getStylesheet()),d.model.setRoot(this.pages[c].root));b+=this.pages[c].getName()+" "+d.getIndexableText()+" "}else b=a.getIndexableText();this.editor.graph.setEnabled(!0);return b}; EditorUi.prototype.showRemotelyStoredLibrary=function(a){var b={},c=document.createElement("div");c.style.whiteSpace="nowrap";var d=document.createElement("h3");mxUtils.write(d,mxUtils.htmlEntities(a));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(d);var e=document.createElement("div");e.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";e.innerHTML='<div style="text-align:center;padding:8px;"><img src="/images/spin.gif"></div>'; var f={};try{var g=mxSettings.getCustomLibraries();for(a=0;a<g.length;a++){var k=g[a];if("R"==k.substring(0,1)){var l=JSON.parse(decodeURIComponent(k.substring(1)));f[l[0]]={id:l[0],title:l[1],downloadUrl:l[2]}}}}catch(H){}this.remoteInvoke("getCustomLibraries",null,null,function(a){e.innerHTML="";if(0==a.length)e.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var c=0;c<a.length;c++){var d=a[c];f[d.id]&& (b[d.id]=d);var g=this.addCheckbox(e,d.title,f[d.id]);(function(a,c){mxEvent.addListener(c,"change",function(){this.checked?b[a.id]=a:delete b[a.id]})})(d,g)}},mxUtils.bind(this,function(a){e.innerHTML="";var b=document.createElement("div");b.style.padding="8px";b.style.textAlign="center";mxUtils.write(b,mxResources.get("error")+": ");mxUtils.write(b,null!=a&&null!=a.message?a.message:mxResources.get("unknownError"));e.appendChild(b)}));c.appendChild(e);c=new CustomDialog(this,c,mxUtils.bind(this, -function(){this.spinner.spin(document.body,mxResources.get("loading"));var a=0,c;for(c in b)null==f[c]&&(a++,mxUtils.bind(this,function(b){this.remoteInvoke("getFileContent",[b.downloadUrl],null,mxUtils.bind(this,function(c){a--;0==a&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,c,b))}catch(B){this.handleError(B,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){a--;0==a&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(b[c])); +function(){this.spinner.spin(document.body,mxResources.get("loading"));var a=0,c;for(c in b)null==f[c]&&(a++,mxUtils.bind(this,function(b){this.remoteInvoke("getFileContent",[b.downloadUrl],null,mxUtils.bind(this,function(c){a--;0==a&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,c,b))}catch(A){this.handleError(A,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){a--;0==a&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(b[c])); for(c in f)b[c]||this.closeLibrary(new RemoteLibrary(this,null,f[c]));0==a&&this.spinner.stop()}),null,null,"https://desk.draw.io/support/solutions/articles/16000092763");this.showDialog(c.container,340,375,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(a){this.remoteWin=a;for(var b=0;b<this.remoteInvokeQueue.length;b++)a.postMessage(this.remoteInvokeQueue[b], "*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(a){var b=a.msgMarkers,c=this.remoteInvokeCallbacks[b.callbackId];if(null==c)throw Error("No callback for "+(null!=b?b.callbackId:"null"));a.error?c.error&&c.error(a.error.errResp):c.callback&&c.callback.apply(this,a.resp);this.remoteInvokeCallbacks[b.callbackId]=null};EditorUi.prototype.remoteInvoke=function(a,b,c,d,e){var f=!0,g=window.setTimeout(mxUtils.bind(this,function(){f=!1;e({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}), this.timeout),k=mxUtils.bind(this,function(){window.clearTimeout(g);f&&d.apply(this,arguments)});c=c||{};c.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:k,error:e});a=JSON.stringify({event:"remoteInvoke",funtionName:a,functionArgs:b,msgMarkers:c});null!=this.remoteWin?this.remoteWin.postMessage(a,"*"):this.remoteInvokeQueue.push(a)};EditorUi.prototype.handleRemoteInvoke=function(a){var b=mxUtils.bind(this,function(b,c){var d={event:"remoteInvokeResponse",msgMarkers:a.msgMarkers}; null!=c?d.error={errResp:c}:null!=b&&(d.resp=b);this.remoteWin.postMessage(JSON.stringify(d),"*")});try{var c=a.funtionName,d=this.remoteInvokableFns[c];if(null!=d&&"function"===typeof this[c]){var e=a.functionArgs;Array.isArray(e)||(e=[]);if(d.isAsync)e.push(function(){b(Array.prototype.slice.apply(arguments))}),e.push(function(a){b(null,a||"Unkown Error")}),this[c].apply(this,e);else{var f=this[c].apply(this,e);b([f])}}else b(null,"Invalid Call: "+c+" is not found.")}catch(z){b(null,"Invalid Call: An error occured, "+ -z.message)}};EditorUi.prototype.openDatabase=function(a,b){if(null==this.database){var c=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=c)try{var d=c.open("database","1.0");d.onupgradeneeded=function(a){a.target.result.createObjectStore("objects",{keyPath:"key"})};d.onsuccess=mxUtils.bind(this,function(b){this.database=b.target.result;a(this.database)});d.onerror=b}catch(v){b(v)}else b()}else a(this.database)};EditorUi.prototype.setDatabaseItem=function(a,b,c,d){this.openDatabase(mxUtils.bind(this, -function(e){e=e.transaction(["objects"],"readwrite").objectStore("objects").put({key:a,data:b});e.onsuccess=c;e.onerror=d}),d)};EditorUi.prototype.removeDatabaseItem=function(a,b,c){this.openDatabase(mxUtils.bind(this,function(d){d=d.transaction(["objects"],"readwrite").objectStore("objects")["delete"](a);d.onsuccess=b;d.onerror=c}),c)};EditorUi.prototype.getDatabaseItems=function(a,b){this.openDatabase(mxUtils.bind(this,function(c){c=c.transaction(["objects"],"readwrite").objectStore("objects").openCursor(IDBKeyRange.lowerBound(0)); -var d=[];c.onsuccess=function(b){null==b.target.result?a(d):(d.push(b.target.result.value),b.target.result["continue"]())};c.onerror=b}),b)};EditorUi.prototype.commentsSupported=function(){var a=this.getCurrentFile();return null!=a?a.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsSaveNeeded():!1}; -EditorUi.prototype.getComments=function(a,b){var c=this.getCurrentFile();null!=c?c.getComments(a,b):a([])};EditorUi.prototype.addComment=function(a,b,c){var d=this.getCurrentFile();null!=d?d.addComment(a,b,c):b(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var a=this.getCurrentFile();return null!=a?a.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var a=this.getCurrentFile();return null!=a?a.canComment():!0};EditorUi.prototype.newComment=function(a,b){var c=this.getCurrentFile(); -return null!=c?c.newComment(a,b):new DrawioComment(this,null,a,Date.now(),Date.now(),!1,b)};EditorUi.prototype.isRevisionHistorySupported=function(){var a=this.getCurrentFile();return null!=a&&a.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(a,b){var c=this.getCurrentFile();null!=c&&c.getRevisions?c.getRevisions(a,b):b({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var a=this.getCurrentFile();return null!=a&&(a.constructor== -DriveFile&&a.isEditable()||a.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(a){a.setRequestHeader("Content-Language","da, mi, en, de-DE")}})(); -var CommentsWindow=function(a,c,d,b,e,g){function k(){for(var a=D.getElementsByTagName("div"),b=0,c=0;c<a.length;c++)"none"!=a[c].style.display&&a[c].parentNode==D&&b++;H.style.display=0==b?"block":"none"}function l(a,b,c,d){function e(){b.removeChild(l);b.removeChild(m);g.style.display="block";f.style.display="block"}q={div:b,comment:a,saveCallback:c,deleteOnCancel:d};var f=b.querySelector(".geCommentTxt"),g=b.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className= +z.message)}};EditorUi.prototype.openDatabase=function(a,b){if(null==this.database){var c=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=c)try{var d=c.open("database","1.0");d.onupgradeneeded=function(a){a.target.result.createObjectStore("objects",{keyPath:"key"})};d.onsuccess=mxUtils.bind(this,function(b){this.database=b.target.result;a(this.database)});d.onerror=b}catch(v){null!=b&&b(v)}else null!=b&&b()}else a(this.database)};EditorUi.prototype.setDatabaseItem=function(a, +b,c,d){this.openDatabase(mxUtils.bind(this,function(e){try{var f=e.transaction(["objects"],"readwrite").objectStore("objects").put({key:a,data:b});f.onsuccess=c;f.onerror=d}catch(z){null!=d&&d(z)}}),d)};EditorUi.prototype.removeDatabaseItem=function(a,b,c){this.openDatabase(mxUtils.bind(this,function(d){d=d.transaction(["objects"],"readwrite").objectStore("objects")["delete"](a);d.onsuccess=b;d.onerror=c}),c)};EditorUi.prototype.getDatabaseItems=function(a,b){this.openDatabase(mxUtils.bind(this,function(c){try{var d= +c.transaction(["objects"],"readwrite").objectStore("objects").openCursor(IDBKeyRange.lowerBound(0)),e=[];d.onsuccess=function(b){null==b.target.result?a(e):(e.push(b.target.result.value),b.target.result["continue"]())};d.onerror=b}catch(q){null!=b&&b(q)}}),b)};EditorUi.prototype.commentsSupported=function(){var a=this.getCurrentFile();return null!=a?a.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsRefreshNeeded():!0}; +EditorUi.prototype.commentsSaveNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(a,b){var c=this.getCurrentFile();null!=c?c.getComments(a,b):a([])};EditorUi.prototype.addComment=function(a,b,c){var d=this.getCurrentFile();null!=d?d.addComment(a,b,c):b(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var a=this.getCurrentFile();return null!=a?a.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var a= +this.getCurrentFile();return null!=a?a.canComment():!0};EditorUi.prototype.newComment=function(a,b){var c=this.getCurrentFile();return null!=c?c.newComment(a,b):new DrawioComment(this,null,a,Date.now(),Date.now(),!1,b)};EditorUi.prototype.isRevisionHistorySupported=function(){var a=this.getCurrentFile();return null!=a&&a.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(a,b){var c=this.getCurrentFile();null!=c&&c.getRevisions?c.getRevisions(a,b):b({message:mxResources.get("unknownError")})}; +EditorUi.prototype.isRevisionHistoryEnabled=function(){var a=this.getCurrentFile();return null!=a&&(a.constructor==DriveFile&&a.isEditable()||a.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(a){a.setRequestHeader("Content-Language","da, mi, en, de-DE")}})(); +var CommentsWindow=function(a,c,d,b,e,g){function k(){for(var a=C.getElementsByTagName("div"),b=0,c=0;c<a.length;c++)"none"!=a[c].style.display&&a[c].parentNode==C&&b++;H.style.display=0==b?"block":"none"}function l(a,b,c,d){function e(){b.removeChild(l);b.removeChild(m);g.style.display="block";f.style.display="block"}q={div:b,comment:a,saveCallback:c,deleteOnCancel:d};var f=b.querySelector(".geCommentTxt"),g=b.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className= "geCommentEditTxtArea";l.style.minHeight=f.offsetHeight+"px";l.value=a.content;b.insertBefore(l,f);var m=document.createElement("div");m.className="geCommentEditBtns";var n=mxUtils.button(mxResources.get("cancel"),function(){d?(b.parentNode.removeChild(b),k()):e();q=null});n.className="geCommentEditBtn";m.appendChild(n);var p=mxUtils.button(mxResources.get("save"),function(){f.innerHTML="";a.content=l.value;mxUtils.write(f,a.content);e();c(a);q=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this, function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(p.click(),mxEvent.consume(a)):27==a.keyCode&&(n.click(),mxEvent.consume(a)))}));p.focus();p.className="geCommentEditBtn gePrimaryBtn";m.appendChild(p);b.insertBefore(m,f);g.style.display="none";f.style.display="none";l.focus()}function n(b,c){c.innerHTML="";var d=new Date(b.modifiedDate),e=a.timeSince(d);null==e&&(e=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo", -[e],"{1} ago"));c.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString())}function u(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function f(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function m(a){a.style.border="";a.removeChild(a.busyImg)}function p(b,c,d,e,g){function x(a,c,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className= -"geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,"click",function(a){c(a,b);a.preventDefault();mxEvent.consume(a)});I.appendChild(e);d&&(e.style.display="none")}function A(){function a(b){c.push(d);if(null!=b.replies)for(var e=0;e<b.replies.length;e++)d=d.nextSibling,a(b.replies[e])}var c=[],d=y;a(b);return{pdiv:d,replies:c}}function B(c,d,g,k,n){function x(){u(v);b.addReply(C,function(a){C.id=a;b.replies.push(C);m(v);g&&g()},function(b){q();f(v);a.handleError(b,null, -null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},k,n)}function q(){l(C,v,function(a){x()},!0)}var t=A().pdiv,C=a.newComment(c,a.getCurrentUser());C.pCommentId=b.id;null==b.replies&&(b.replies=[]);var v=p(C,b.replies,t,e+1);d?q():x()}if(g||!b.isResolved){H.style.display="none";var y=document.createElement("div");y.className="geCommentContainer";y.setAttribute("data-commentId",b.id);y.style.marginLeft=20*e+5+"px";b.isResolved&&"dark"!=uiTheme&&(y.style.backgroundColor="ghostWhite"); -var z=document.createElement("div");z.className="geCommentHeader";var K=document.createElement("img");K.className="geCommentUserImg";K.src=b.user.pictureUrl||Editor.userImage;z.appendChild(K);K=document.createElement("div");K.className="geCommentHeaderTxt";z.appendChild(K);var G=document.createElement("div");G.className="geCommentUsername";mxUtils.write(G,b.user.displayName||"");K.appendChild(G);G=document.createElement("div");G.className="geCommentDate";G.setAttribute("data-commentId",b.id);n(b, -G);K.appendChild(G);y.appendChild(z);z=document.createElement("div");z.className="geCommentTxt";mxUtils.write(z,b.content||"");y.appendChild(z);z=document.createElement("div");z.className="geCommentActions";var I=document.createElement("ul");I.className="geCommentActionsList";z.appendChild(I);t||0!=e&&!v||x(mxResources.get("reply"),function(){B("",!0)},b.isResolved);K=a.getCurrentUser();null==K||K.id!=b.user.id||t||(x(mxResources.get("edit"),function(){function c(){l(b,y,function(){u(y);b.editComment(b.content, -function(){m(y)},function(b){f(y);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}c()},b.isResolved),x(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){u(y);b.deleteComment(function(){for(var a=A(b).replies,d=0;d<a.length;d++)D.removeChild(a[d]);for(d=0;d<c.length;d++)if(c[d]==b){c.splice(d,1);break}H.style.display=0==D.getElementsByTagName("div").length?"block":"none"},function(b){f(y);a.handleError(b,null,null, -null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},b.isResolved));t||0!=e||x(b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function c(){var c=a.target;c.innerHTML="";b.isResolved=!b.isResolved;mxUtils.write(c,b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var d=b.isResolved?"none":"",e=A(b).replies,f="dark"==uiTheme?"transparent":b.isResolved?"ghostWhite":"white",g=0;g<e.length;g++){e[g].style.backgroundColor=f;for(var l=e[g].querySelectorAll(".geCommentAction"), -m=0;m<l.length;m++)l[m]!=c.parentNode&&(l[m].style.display=d);C||(e[g].style.display="none")}k()}b.isResolved?B(mxResources.get("reOpened")+": ",!0,c,!1,!0):B(mxResources.get("markedAsResolved"),!1,c,!0)});y.appendChild(z);null!=d?D.insertBefore(y,d.nextSibling):D.appendChild(y);for(d=0;null!=b.replies&&d<b.replies.length;d++)z=b.replies[d],z.isResolved=b.isResolved,p(z,b.replies,null,e+1,g);null!=q&&(q.comment.id==b.id?(g=b.content,b.content=q.comment.content,l(b,y,q.saveCallback,q.deleteOnCancel), -b.content=g):null==q.comment.id&&q.comment.pCommentId==b.id&&(D.appendChild(q.div),l(q.comment,q.div,q.saveCallback,q.deleteOnCancel)));return y}}var t=!a.canComment(),v=a.canReplyToReplies(),q=null,z=document.createElement("div");z.className="geCommentsWin";z.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var y=EditorUi.compactUi?"26px":"30px",D=document.createElement("div");D.className="geCommentsList";D.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke": -Dialog.backdropColor;D.style.bottom=parseInt(y)+7+"px";z.appendChild(D);var H=document.createElement("span");H.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(H,mxResources.get("noCommentsFound"));var x=document.createElement("div");x.className="geToolbarContainer geCommentsToolbar";x.style.height=y;x.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";x.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;mxClient.IS_QUIRKS&&(x.style.filter= -"none");y=document.createElement("a");y.className="geButton";mxClient.IS_QUIRKS&&(y.style.filter="none");if(!t){var A=y.cloneNode();A.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';A.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(A,"click",function(b){function c(){l(d,e,function(b){u(e);a.addComment(b,function(a){b.id=a;B.push(b);m(e)},function(b){f(e);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})}, -!0)}var d=a.newComment("",a.getCurrentUser()),e=p(d,B,null,0);c();b.preventDefault();mxEvent.consume(b)});x.appendChild(A)}A=y.cloneNode();A.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';A.setAttribute("title",mxResources.get("showResolved"));var C=!1;"dark"==uiTheme&&(A.style.filter="invert(100%)");mxEvent.addListener(A,"click",function(a){this.className=(C=!C)?"geButton geCheckedBtn":"geButton";I();a.preventDefault();mxEvent.consume(a)});x.appendChild(A);a.commentsRefreshNeeded()&& -(A=y.cloneNode(),A.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',A.setAttribute("title",mxResources.get("refresh")),"dark"==uiTheme&&(A.style.filter="invert(100%)"),mxEvent.addListener(A,"click",function(a){I();a.preventDefault();mxEvent.consume(a)}),x.appendChild(A));a.commentsSaveNeeded()&&(y=y.cloneNode(),y.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',y.setAttribute("title",mxResources.get("save")),"dark"==uiTheme&& -(y.style.filter="invert(100%)"),mxEvent.addListener(y,"click",function(a){g();a.preventDefault();mxEvent.consume(a)}),x.appendChild(y));z.appendChild(x);var B=[],I=mxUtils.bind(this,function(){this.hasError=!1;if(null!=q)try{q.div=q.div.cloneNode(!0);var b=q.div.querySelector(".geCommentEditTxtArea"),c=q.div.querySelector(".geCommentEditBtns");q.comment.content=b.value;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}catch(E){a.handleError(E)}D.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+ -IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";v=a.canReplyToReplies();a.commentsSupported()?a.getComments(function(a){function b(a){if(null!=a){a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});for(var c=0;c<a.length;c++)b(a[c].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});D.innerHTML="";D.appendChild(H);H.style.display="block";B=a;for(a=0;a<B.length;a++)b(B[a].replies), -p(B[a],B,null,0,C);null!=q&&null==q.comment.id&&null==q.comment.pCommentId&&(D.appendChild(q.div),l(q.comment,q.div,q.saveCallback,q.deleteOnCancel))},mxUtils.bind(this,function(a){D.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(a&&a.message?": "+a.message:""));this.hasError=!0})):D.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});I();this.refreshComments=I;x=mxUtils.bind(this,function(){function a(b){var d=c[b.id];if(null!=d)for(n(b,d),d=0;null!=b.replies&&d<b.replies.length;d++)a(b.replies[d])} -if(this.window.isVisible()){for(var b=D.querySelectorAll(".geCommentDate"),c={},d=0;d<b.length;d++){var e=b[d];c[e.getAttribute("data-commentId")]=e}for(d=0;d<B.length;d++)a(B[d])}});setInterval(x,6E4);this.refreshCommentsTime=x;this.window=new mxWindow(mxResources.get("comments"),z,c,d,b,e,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW, -mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var F=mxUtils.bind(this,function(){var a=this.window.getX(), -b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",F);this.destroy=function(){mxEvent.removeListener(window,"resize",F);this.window.destroy()}},ConfirmDialog=function(a,c,d,b,e,g,k,l,n,u,f){var m=document.createElement("div");m.style.textAlign="center";f=null!=f?f:44;var p=document.createElement("div");p.style.padding="6px";p.style.overflow="auto";p.style.maxHeight=f+"px";p.style.lineHeight="1.2em";mxClient.IS_QUIRKS&&(p.style.height="60px");mxUtils.write(p,c); -m.appendChild(p);null!=u&&(p=document.createElement("div"),p.style.padding="6px 0 6px 0",c=document.createElement("img"),c.setAttribute("src",u),p.appendChild(c),m.appendChild(p));u=document.createElement("div");u.style.textAlign="center";u.style.whiteSpace="nowrap";var t=document.createElement("input");t.setAttribute("type","checkbox");g=mxUtils.button(g||mxResources.get("cancel"),function(){a.hideDialog();null!=b&&b(t.checked)});g.className="geBtn";null!=l&&(g.innerHTML=l+"<br>"+g.innerHTML,g.style.paddingBottom= -"8px",g.style.paddingTop="8px",g.style.height="auto",g.style.width="40%");a.editor.cancelFirst&&u.appendChild(g);var v=mxUtils.button(e||mxResources.get("ok"),function(){a.hideDialog();null!=d&&d(t.checked)});u.appendChild(v);null!=k?(v.innerHTML=k+"<br>"+v.innerHTML+"<br>",v.style.paddingBottom="8px",v.style.paddingTop="8px",v.style.height="auto",v.className="geBtn",v.style.width="40%"):v.className="geBtn gePrimaryBtn";a.editor.cancelFirst||u.appendChild(g);m.appendChild(u);n?(u.style.marginTop= -"10px",p=document.createElement("p"),p.style.marginTop="20px",p.appendChild(t),e=document.createElement("span"),mxUtils.write(e," "+mxResources.get("rememberThisSetting")),p.appendChild(e),m.appendChild(p),mxEvent.addListener(e,"click",function(a){t.checked=!t.checked;mxEvent.consume(a)})):u.style.marginTop="12px";this.init=function(){v.focus()};this.container=m};EditorUi.DIFF_INSERT="i";EditorUi.DIFF_REMOVE="r";EditorUi.DIFF_UPDATE="u";EditorUi.prototype.codec=new mxCodec;EditorUi.prototype.viewStateProperties={background:!0,backgroundImage:!0,shadowVisible:!0,foldingEnabled:!0,pageScale:!0,mathEnabled:!0,pageFormat:!0,extFonts:!0};EditorUi.prototype.cellProperties={id:!0,value:!0,xmlValue:!0,vertex:!0,edge:!0,visible:!0,collapsed:!0,connectable:!0,parent:!0,children:!0,previous:!0,source:!0,target:!0,edges:!0,geometry:!0,style:!0,mxObjectId:!0,mxTransient:!0}; -EditorUi.prototype.patchPages=function(a,c,d,b,e){var g={},k=[],l={},n={},u={},f={};if(null!=b&&null!=b[EditorUi.DIFF_UPDATE])for(var m in b[EditorUi.DIFF_UPDATE])g[m]=b[EditorUi.DIFF_UPDATE][m];if(null!=c[EditorUi.DIFF_REMOVE])for(b=0;b<c[EditorUi.DIFF_REMOVE].length;b++)n[c[EditorUi.DIFF_REMOVE][b]]=!0;if(null!=c[EditorUi.DIFF_INSERT])for(b=0;b<c[EditorUi.DIFF_INSERT].length;b++)l[c[EditorUi.DIFF_INSERT][b].previous]=c[EditorUi.DIFF_INSERT][b];if(null!=c[EditorUi.DIFF_UPDATE])for(m in c[EditorUi.DIFF_UPDATE])b= -c[EditorUi.DIFF_UPDATE][m],null!=b.previous&&(f[b.previous]=m);if(null!=a){var p="";for(b=0;b<a.length;b++){var t=a[b].getId();u[t]=a[b];null!=f[p]||n[t]||null!=c[EditorUi.DIFF_UPDATE]&&null!=c[EditorUi.DIFF_UPDATE][t]&&null!=c[EditorUi.DIFF_UPDATE][t].previous||(f[p]=t);p=t}}var v={},q=mxUtils.bind(this,function(a){var b=null!=a?a.getId():"";if(null!=a&&!v[b]){v[b]=!0;k.push(a);var m=null!=c[EditorUi.DIFF_UPDATE]?c[EditorUi.DIFF_UPDATE][b]:null;null!=m&&(this.updatePageRoot(a),null!=m.name&&a.setName(m.name), -null!=m.view&&this.patchViewState(a,m.view),null!=m.cells&&this.patchPage(a,m.cells,g[a.getId()],e),!d||null==m.cells&&null==m.view||(a.needsUpdate=!0))}a=f[b];null!=a&&(delete f[b],q(u[a]));a=l[b];null!=a&&(delete l[b],z(a))}),z=mxUtils.bind(this,function(a){a=mxUtils.parseXml(a.data).documentElement;a=new DiagramPage(a);this.updatePageRoot(a);var b=u[a.getId()];null==b?q(a):(b.root=a.root,this.currentPage==b?this.editor.graph.model.setRoot(b.root):d&&(b.needsUpdate=!0))});q();for(m in f)q(u[f[m]]), +[e],"{1} ago"));c.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString())}function t(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function f(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function m(a){a.style.border="";a.removeChild(a.busyImg)}function p(b,c,d,e,g){function y(a,c,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className= +"geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,"click",function(a){c(a,b);a.preventDefault();mxEvent.consume(a)});I.appendChild(e);d&&(e.style.display="none")}function B(){function a(b){c.push(d);if(null!=b.replies)for(var e=0;e<b.replies.length;e++)d=d.nextSibling,a(b.replies[e])}var c=[],d=x;a(b);return{pdiv:d,replies:c}}function A(c,d,g,k,n){function y(){t(v);b.addReply(D,function(a){D.id=a;b.replies.push(D);m(v);g&&g()},function(b){q();f(v);a.handleError(b,null, +null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},k,n)}function q(){l(D,v,function(a){y()},!0)}var u=B().pdiv,D=a.newComment(c,a.getCurrentUser());D.pCommentId=b.id;null==b.replies&&(b.replies=[]);var v=p(D,b.replies,u,e+1);d?q():y()}if(g||!b.isResolved){H.style.display="none";var x=document.createElement("div");x.className="geCommentContainer";x.setAttribute("data-commentId",b.id);x.style.marginLeft=20*e+5+"px";b.isResolved&&"dark"!=uiTheme&&(x.style.backgroundColor="ghostWhite"); +var z=document.createElement("div");z.className="geCommentHeader";var K=document.createElement("img");K.className="geCommentUserImg";K.src=b.user.pictureUrl||Editor.userImage;z.appendChild(K);K=document.createElement("div");K.className="geCommentHeaderTxt";z.appendChild(K);var F=document.createElement("div");F.className="geCommentUsername";mxUtils.write(F,b.user.displayName||"");K.appendChild(F);F=document.createElement("div");F.className="geCommentDate";F.setAttribute("data-commentId",b.id);n(b, +F);K.appendChild(F);x.appendChild(z);z=document.createElement("div");z.className="geCommentTxt";mxUtils.write(z,b.content||"");x.appendChild(z);z=document.createElement("div");z.className="geCommentActions";var I=document.createElement("ul");I.className="geCommentActionsList";z.appendChild(I);u||0!=e&&!v||y(mxResources.get("reply"),function(){A("",!0)},b.isResolved);K=a.getCurrentUser();null==K||K.id!=b.user.id||u||(y(mxResources.get("edit"),function(){function c(){l(b,x,function(){t(x);b.editComment(b.content, +function(){m(x)},function(b){f(x);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}c()},b.isResolved),y(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){t(x);b.deleteComment(function(){for(var a=B(b).replies,d=0;d<a.length;d++)C.removeChild(a[d]);for(d=0;d<c.length;d++)if(c[d]==b){c.splice(d,1);break}H.style.display=0==C.getElementsByTagName("div").length?"block":"none"},function(b){f(x);a.handleError(b,null,null, +null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},b.isResolved));u||0!=e||y(b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function c(){var c=a.target;c.innerHTML="";b.isResolved=!b.isResolved;mxUtils.write(c,b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var d=b.isResolved?"none":"",e=B(b).replies,f="dark"==uiTheme?"transparent":b.isResolved?"ghostWhite":"white",g=0;g<e.length;g++){e[g].style.backgroundColor=f;for(var l=e[g].querySelectorAll(".geCommentAction"), +m=0;m<l.length;m++)l[m]!=c.parentNode&&(l[m].style.display=d);D||(e[g].style.display="none")}k()}b.isResolved?A(mxResources.get("reOpened")+": ",!0,c,!1,!0):A(mxResources.get("markedAsResolved"),!1,c,!0)});x.appendChild(z);null!=d?C.insertBefore(x,d.nextSibling):C.appendChild(x);for(d=0;null!=b.replies&&d<b.replies.length;d++)z=b.replies[d],z.isResolved=b.isResolved,p(z,b.replies,null,e+1,g);null!=q&&(q.comment.id==b.id?(g=b.content,b.content=q.comment.content,l(b,x,q.saveCallback,q.deleteOnCancel), +b.content=g):null==q.comment.id&&q.comment.pCommentId==b.id&&(C.appendChild(q.div),l(q.comment,q.div,q.saveCallback,q.deleteOnCancel)));return x}}var u=!a.canComment(),v=a.canReplyToReplies(),q=null,z=document.createElement("div");z.className="geCommentsWin";z.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var x=EditorUi.compactUi?"26px":"30px",C=document.createElement("div");C.className="geCommentsList";C.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke": +Dialog.backdropColor;C.style.bottom=parseInt(x)+7+"px";z.appendChild(C);var H=document.createElement("span");H.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(H,mxResources.get("noCommentsFound"));var y=document.createElement("div");y.className="geToolbarContainer geCommentsToolbar";y.style.height=x;y.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";y.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;mxClient.IS_QUIRKS&&(y.style.filter= +"none");x=document.createElement("a");x.className="geButton";mxClient.IS_QUIRKS&&(x.style.filter="none");if(!u){var B=x.cloneNode();B.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';B.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(B,"click",function(b){function c(){l(d,e,function(b){t(e);a.addComment(b,function(a){b.id=a;A.push(b);m(e)},function(b){f(e);c();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})}, +!0)}var d=a.newComment("",a.getCurrentUser()),e=p(d,A,null,0);c();b.preventDefault();mxEvent.consume(b)});y.appendChild(B)}B=x.cloneNode();B.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';B.setAttribute("title",mxResources.get("showResolved"));var D=!1;"dark"==uiTheme&&(B.style.filter="invert(100%)");mxEvent.addListener(B,"click",function(a){this.className=(D=!D)?"geButton geCheckedBtn":"geButton";F();a.preventDefault();mxEvent.consume(a)});y.appendChild(B);a.commentsRefreshNeeded()&& +(B=x.cloneNode(),B.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',B.setAttribute("title",mxResources.get("refresh")),"dark"==uiTheme&&(B.style.filter="invert(100%)"),mxEvent.addListener(B,"click",function(a){F();a.preventDefault();mxEvent.consume(a)}),y.appendChild(B));a.commentsSaveNeeded()&&(x=x.cloneNode(),x.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',x.setAttribute("title",mxResources.get("save")),"dark"==uiTheme&& +(x.style.filter="invert(100%)"),mxEvent.addListener(x,"click",function(a){g();a.preventDefault();mxEvent.consume(a)}),y.appendChild(x));z.appendChild(y);var A=[],F=mxUtils.bind(this,function(){this.hasError=!1;if(null!=q)try{q.div=q.div.cloneNode(!0);var b=q.div.querySelector(".geCommentEditTxtArea"),c=q.div.querySelector(".geCommentEditBtns");q.comment.content=b.value;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}catch(E){a.handleError(E)}C.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+ +IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";v=a.canReplyToReplies();a.commentsSupported()?a.getComments(function(a){function b(a){if(null!=a){a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});for(var c=0;c<a.length;c++)b(a[c].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});C.innerHTML="";C.appendChild(H);H.style.display="block";A=a;for(a=0;a<A.length;a++)b(A[a].replies), +p(A[a],A,null,0,D);null!=q&&null==q.comment.id&&null==q.comment.pCommentId&&(C.appendChild(q.div),l(q.comment,q.div,q.saveCallback,q.deleteOnCancel))},mxUtils.bind(this,function(a){C.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(a&&a.message?": "+a.message:""));this.hasError=!0})):C.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});F();this.refreshComments=F;y=mxUtils.bind(this,function(){function a(b){var d=c[b.id];if(null!=d)for(n(b,d),d=0;null!=b.replies&&d<b.replies.length;d++)a(b.replies[d])} +if(this.window.isVisible()){for(var b=C.querySelectorAll(".geCommentDate"),c={},d=0;d<b.length;d++){var e=b[d];c[e.getAttribute("data-commentId")]=e}for(d=0;d<A.length;d++)a(A[d])}});setInterval(y,6E4);this.refreshCommentsTime=y;this.window=new mxWindow(mxResources.get("comments"),z,c,d,b,e,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW, +mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var G=mxUtils.bind(this,function(){var a=this.window.getX(), +b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",G);this.destroy=function(){mxEvent.removeListener(window,"resize",G);this.window.destroy()}},ConfirmDialog=function(a,c,d,b,e,g,k,l,n,t,f){var m=document.createElement("div");m.style.textAlign="center";f=null!=f?f:44;var p=document.createElement("div");p.style.padding="6px";p.style.overflow="auto";p.style.maxHeight=f+"px";p.style.lineHeight="1.2em";mxClient.IS_QUIRKS&&(p.style.height="60px");mxUtils.write(p,c); +m.appendChild(p);null!=t&&(p=document.createElement("div"),p.style.padding="6px 0 6px 0",c=document.createElement("img"),c.setAttribute("src",t),p.appendChild(c),m.appendChild(p));t=document.createElement("div");t.style.textAlign="center";t.style.whiteSpace="nowrap";var u=document.createElement("input");u.setAttribute("type","checkbox");g=mxUtils.button(g||mxResources.get("cancel"),function(){a.hideDialog();null!=b&&b(u.checked)});g.className="geBtn";null!=l&&(g.innerHTML=l+"<br>"+g.innerHTML,g.style.paddingBottom= +"8px",g.style.paddingTop="8px",g.style.height="auto",g.style.width="40%");a.editor.cancelFirst&&t.appendChild(g);var v=mxUtils.button(e||mxResources.get("ok"),function(){a.hideDialog();null!=d&&d(u.checked)});t.appendChild(v);null!=k?(v.innerHTML=k+"<br>"+v.innerHTML+"<br>",v.style.paddingBottom="8px",v.style.paddingTop="8px",v.style.height="auto",v.className="geBtn",v.style.width="40%"):v.className="geBtn gePrimaryBtn";a.editor.cancelFirst||t.appendChild(g);m.appendChild(t);n?(t.style.marginTop= +"10px",p=document.createElement("p"),p.style.marginTop="20px",p.appendChild(u),e=document.createElement("span"),mxUtils.write(e," "+mxResources.get("rememberThisSetting")),p.appendChild(e),m.appendChild(p),mxEvent.addListener(e,"click",function(a){u.checked=!u.checked;mxEvent.consume(a)})):t.style.marginTop="12px";this.init=function(){v.focus()};this.container=m};EditorUi.DIFF_INSERT="i";EditorUi.DIFF_REMOVE="r";EditorUi.DIFF_UPDATE="u";EditorUi.prototype.codec=new mxCodec;EditorUi.prototype.viewStateProperties={background:!0,backgroundImage:!0,shadowVisible:!0,foldingEnabled:!0,pageScale:!0,mathEnabled:!0,pageFormat:!0,extFonts:!0};EditorUi.prototype.cellProperties={id:!0,value:!0,xmlValue:!0,vertex:!0,edge:!0,visible:!0,collapsed:!0,connectable:!0,parent:!0,children:!0,previous:!0,source:!0,target:!0,edges:!0,geometry:!0,style:!0,mxObjectId:!0,mxTransient:!0}; +EditorUi.prototype.patchPages=function(a,c,d,b,e){var g={},k=[],l={},n={},t={},f={};if(null!=b&&null!=b[EditorUi.DIFF_UPDATE])for(var m in b[EditorUi.DIFF_UPDATE])g[m]=b[EditorUi.DIFF_UPDATE][m];if(null!=c[EditorUi.DIFF_REMOVE])for(b=0;b<c[EditorUi.DIFF_REMOVE].length;b++)n[c[EditorUi.DIFF_REMOVE][b]]=!0;if(null!=c[EditorUi.DIFF_INSERT])for(b=0;b<c[EditorUi.DIFF_INSERT].length;b++)l[c[EditorUi.DIFF_INSERT][b].previous]=c[EditorUi.DIFF_INSERT][b];if(null!=c[EditorUi.DIFF_UPDATE])for(m in c[EditorUi.DIFF_UPDATE])b= +c[EditorUi.DIFF_UPDATE][m],null!=b.previous&&(f[b.previous]=m);if(null!=a){var p="";for(b=0;b<a.length;b++){var u=a[b].getId();t[u]=a[b];null!=f[p]||n[u]||null!=c[EditorUi.DIFF_UPDATE]&&null!=c[EditorUi.DIFF_UPDATE][u]&&null!=c[EditorUi.DIFF_UPDATE][u].previous||(f[p]=u);p=u}}var v={},q=mxUtils.bind(this,function(a){var b=null!=a?a.getId():"";if(null!=a&&!v[b]){v[b]=!0;k.push(a);var m=null!=c[EditorUi.DIFF_UPDATE]?c[EditorUi.DIFF_UPDATE][b]:null;null!=m&&(this.updatePageRoot(a),null!=m.name&&a.setName(m.name), +null!=m.view&&this.patchViewState(a,m.view),null!=m.cells&&this.patchPage(a,m.cells,g[a.getId()],e),!d||null==m.cells&&null==m.view||(a.needsUpdate=!0))}a=f[b];null!=a&&(delete f[b],q(t[a]));a=l[b];null!=a&&(delete l[b],z(a))}),z=mxUtils.bind(this,function(a){a=mxUtils.parseXml(a.data).documentElement;a=new DiagramPage(a);this.updatePageRoot(a);var b=t[a.getId()];null==b?q(a):(b.root=a.root,this.currentPage==b?this.editor.graph.model.setRoot(b.root):d&&(b.needsUpdate=!0))});q();for(m in f)q(t[f[m]]), delete f[m];for(m in l)z(l[m]),delete l[m];return k};EditorUi.prototype.patchViewState=function(a,c){if(null!=a.viewState&&null!=c){a==this.currentPage&&(a.viewState=this.editor.graph.getViewState());for(var d in c)a.viewState[d]=JSON.parse(c[d]);a==this.currentPage&&this.editor.graph.setViewState(a.viewState,!0)}}; EditorUi.prototype.createParentLookup=function(a,c){function d(a){var c=b[a];null==c&&(c={inserted:[],moved:{}},b[a]=c);return c}var b={};if(null!=c[EditorUi.DIFF_INSERT])for(var e=0;e<c[EditorUi.DIFF_INSERT].length;e++){var g=c[EditorUi.DIFF_INSERT][e],k=null!=g.parent?g.parent:"",l=null!=g.previous?g.previous:"";d(k).inserted[l]=g}if(null!=c[EditorUi.DIFF_UPDATE])for(var n in c[EditorUi.DIFF_UPDATE])g=c[EditorUi.DIFF_UPDATE][n],null!=g.previous&&(k=g.parent,null==k&&(e=a.getCell(n),null!=e&&(e= a.getParent(e),null!=e&&(k=e.getId()))),null!=k&&(d(k).moved[g.previous]=n));return b}; -EditorUi.prototype.patchPage=function(a,c,d,b){var e=a==this.currentPage?this.editor.graph.model:new mxGraphModel(a.root),g=this.createParentLookup(e,c);e.beginUpdate();try{var k=e.updateEdgeParent,l=new mxDictionary,n=[];e.updateEdgeParent=function(a,c){!l.get(a)&&b&&(l.put(a,!0),n.push(a))};var u=g[""],f=null!=u&&null!=u.inserted?u.inserted[""]:null,m=null;null!=f&&(m=this.getCellForJson(f));if(null==m){var p=null!=u&&null!=u.moved?u.moved[""]:null;null!=p&&(m=e.getCell(p))}null!=m&&(e.setRoot(m), -a.root=m);this.patchCellRecursive(a,e,e.root,g,c);if(null!=c[EditorUi.DIFF_REMOVE])for(var t=0;t<c[EditorUi.DIFF_REMOVE].length;t++){var v=e.getCell(c[EditorUi.DIFF_REMOVE][t]);null!=v&&e.remove(v)}if(null!=c[EditorUi.DIFF_UPDATE]){var q=null!=d&&null!=d.cells?d.cells[EditorUi.DIFF_UPDATE]:null;for(p in c[EditorUi.DIFF_UPDATE])this.patchCell(e,e.getCell(p),c[EditorUi.DIFF_UPDATE][p],null!=q?q[p]:null)}if(null!=c[EditorUi.DIFF_INSERT])for(t=0;t<c[EditorUi.DIFF_INSERT].length;t++)f=c[EditorUi.DIFF_INSERT][t], -v=e.getCell(f.id),null!=v&&(e.setTerminal(v,e.getCell(f.source),!0),e.setTerminal(v,e.getCell(f.target),!1));e.updateEdgeParent=k;if(b&&0<n.length)for(t=0;t<n.length;t++)e.contains(n[t])&&e.updateEdgeParent(n[t])}finally{e.endUpdate()}}; -EditorUi.prototype.patchCellRecursive=function(a,c,d,b,e){if(null!=d){for(var g=b[d.getId()],k=null!=g&&null!=g.inserted?g.inserted:{},g=null!=g&&null!=g.moved?g.moved:{},l=0,n=c.getChildCount(d),u="",f=0;f<n;f++){var m=c.getChildAt(d,f).getId();null==g[u]&&(null==e[EditorUi.DIFF_UPDATE]||null==e[EditorUi.DIFF_UPDATE][m]||null==e[EditorUi.DIFF_UPDATE][m].previous&&null==e[EditorUi.DIFF_UPDATE][m].parent)&&(g[u]=m);u=m}n=mxUtils.bind(this,function(f,g){var k=null!=f?f.getId():"";if(null!=f&&g){var m= -c.getCell(k);null!=m&&m!=f&&(f=null)}null!=f&&(c.getChildAt(d,l)!=f&&c.add(d,f,l),this.patchCellRecursive(a,c,f,b,e),l++);return k});for(u=[null];0<u.length;)if(f=u.shift(),f=n(null!=f?f.child:null,null!=f?f.insert:!1),m=g[f],null!=m&&(delete g[f],u.push({child:c.getCell(m)})),m=k[f],null!=m&&(delete k[f],u.push({child:this.getCellForJson(m),insert:!0})),0==u.length){for(f in g)u.push({child:c.getCell(g[f])}),delete g[f];for(f in k)u.push({child:this.getCellForJson(k[f]),insert:!0}),delete k[f]}}}; +EditorUi.prototype.patchPage=function(a,c,d,b){var e=a==this.currentPage?this.editor.graph.model:new mxGraphModel(a.root),g=this.createParentLookup(e,c);e.beginUpdate();try{var k=e.updateEdgeParent,l=new mxDictionary,n=[];e.updateEdgeParent=function(a,c){!l.get(a)&&b&&(l.put(a,!0),n.push(a))};var t=g[""],f=null!=t&&null!=t.inserted?t.inserted[""]:null,m=null;null!=f&&(m=this.getCellForJson(f));if(null==m){var p=null!=t&&null!=t.moved?t.moved[""]:null;null!=p&&(m=e.getCell(p))}null!=m&&(e.setRoot(m), +a.root=m);this.patchCellRecursive(a,e,e.root,g,c);if(null!=c[EditorUi.DIFF_REMOVE])for(var u=0;u<c[EditorUi.DIFF_REMOVE].length;u++){var v=e.getCell(c[EditorUi.DIFF_REMOVE][u]);null!=v&&e.remove(v)}if(null!=c[EditorUi.DIFF_UPDATE]){var q=null!=d&&null!=d.cells?d.cells[EditorUi.DIFF_UPDATE]:null;for(p in c[EditorUi.DIFF_UPDATE])this.patchCell(e,e.getCell(p),c[EditorUi.DIFF_UPDATE][p],null!=q?q[p]:null)}if(null!=c[EditorUi.DIFF_INSERT])for(u=0;u<c[EditorUi.DIFF_INSERT].length;u++)f=c[EditorUi.DIFF_INSERT][u], +v=e.getCell(f.id),null!=v&&(e.setTerminal(v,e.getCell(f.source),!0),e.setTerminal(v,e.getCell(f.target),!1));e.updateEdgeParent=k;if(b&&0<n.length)for(u=0;u<n.length;u++)e.contains(n[u])&&e.updateEdgeParent(n[u])}finally{e.endUpdate()}}; +EditorUi.prototype.patchCellRecursive=function(a,c,d,b,e){if(null!=d){for(var g=b[d.getId()],k=null!=g&&null!=g.inserted?g.inserted:{},g=null!=g&&null!=g.moved?g.moved:{},l=0,n=c.getChildCount(d),t="",f=0;f<n;f++){var m=c.getChildAt(d,f).getId();null==g[t]&&(null==e[EditorUi.DIFF_UPDATE]||null==e[EditorUi.DIFF_UPDATE][m]||null==e[EditorUi.DIFF_UPDATE][m].previous&&null==e[EditorUi.DIFF_UPDATE][m].parent)&&(g[t]=m);t=m}n=mxUtils.bind(this,function(f,g){var k=null!=f?f.getId():"";if(null!=f&&g){var m= +c.getCell(k);null!=m&&m!=f&&(f=null)}null!=f&&(c.getChildAt(d,l)!=f&&c.add(d,f,l),this.patchCellRecursive(a,c,f,b,e),l++);return k});for(t=[null];0<t.length;)if(f=t.shift(),f=n(null!=f?f.child:null,null!=f?f.insert:!1),m=g[f],null!=m&&(delete g[f],t.push({child:c.getCell(m)})),m=k[f],null!=m&&(delete k[f],t.push({child:this.getCellForJson(m),insert:!0})),0==t.length){for(f in g)t.push({child:c.getCell(g[f])}),delete g[f];for(f in k)t.push({child:this.getCellForJson(k[f]),insert:!0}),delete k[f]}}}; EditorUi.prototype.patchCell=function(a,c,d,b){if(null!=c&&null!=d){if(null==b||null==b.xmlValue&&(null==b.value||""==b.value))"value"in d?a.setValue(c,d.value):null!=d.xmlValue&&a.setValue(c,mxUtils.parseXml(d.xmlValue).documentElement);null!=b&&null!=b.style||null==d.style||a.setStyle(c,d.style);null!=d.visible&&a.setVisible(c,1==d.visible);null!=d.collapsed&&a.setCollapsed(c,1==d.collapsed);null!=d.vertex&&(c.vertex=1==d.vertex);null!=d.edge&&(c.edge=1==d.edge);null!=d.connectable&&(c.connectable= 1==d.connectable);null!=d.geometry&&a.setGeometry(c,this.codec.decode(mxUtils.parseXml(d.geometry).documentElement));null!=d.source&&a.setTerminal(c,a.getCell(d.source),!0);null!=d.target&&a.setTerminal(c,a.getCell(d.target),!1);for(var e in d)this.cellProperties[e]||(c[e]=d[e])}}; EditorUi.prototype.getPagesForNode=function(a,c){var d=this.editor.extractGraphModel(a,!0);null!=d&&(a=d);var d=a.getElementsByTagName(c||"diagram"),b=[];if(0<d.length)for(var e=0;e<d.length;e++){var g=new DiagramPage(d[e]);this.updatePageRoot(g);b.push(g)}else"mxGraphModel"==a.nodeName&&(g=new DiagramPage(a.ownerDocument.createElement("diagram")),g.setName(mxResources.get("pageWithNumber",[1])),mxUtils.setTextContent(g.node,Graph.compressNode(a)),b.push(g));return b}; -EditorUi.prototype.diffPages=function(a,c){for(var d=[],b=[],e={},g={},k={},l=null,n=0;n<c.length;n++)g[c[n].getId()]={page:c[n],prev:l},l=c[n];l=null;for(n=0;n<a.length;n++){var u=a[n].getId(),f=g[u];if(null==f)b.push(u);else{var m=this.diffPage(a[n],f.page),p={};0<Object.keys(m).length&&(p.cells=m);m=this.diffViewState(a[n],f.page);0<Object.keys(m).length&&(p.view=m);if((null!=f.prev?null==l:null!=l)||null!=l&&null!=f.prev&&l.getId()!=f.prev.getId())p.previous=null!=f.prev?f.prev.getId():"";null!= -f.page.getName()&&a[n].getName()!=f.page.getName()&&(p.name=f.page.getName());0<Object.keys(p).length&&(k[u]=p)}delete g[a[n].getId()];l=a[n]}for(u in g)f=g[u],d.push({data:mxUtils.getXml(f.page.node),previous:null!=f.prev?f.prev.getId():""});0<Object.keys(k).length&&(e[EditorUi.DIFF_UPDATE]=k);0<b.length&&(e[EditorUi.DIFF_REMOVE]=b);0<d.length&&(e[EditorUi.DIFF_INSERT]=d);return e}; +EditorUi.prototype.diffPages=function(a,c){for(var d=[],b=[],e={},g={},k={},l=null,n=0;n<c.length;n++)g[c[n].getId()]={page:c[n],prev:l},l=c[n];l=null;for(n=0;n<a.length;n++){var t=a[n].getId(),f=g[t];if(null==f)b.push(t);else{var m=this.diffPage(a[n],f.page),p={};0<Object.keys(m).length&&(p.cells=m);m=this.diffViewState(a[n],f.page);0<Object.keys(m).length&&(p.view=m);if((null!=f.prev?null==l:null!=l)||null!=l&&null!=f.prev&&l.getId()!=f.prev.getId())p.previous=null!=f.prev?f.prev.getId():"";null!= +f.page.getName()&&a[n].getName()!=f.page.getName()&&(p.name=f.page.getName());0<Object.keys(p).length&&(k[t]=p)}delete g[a[n].getId()];l=a[n]}for(t in g)f=g[t],d.push({data:mxUtils.getXml(f.page.node),previous:null!=f.prev?f.prev.getId():""});0<Object.keys(k).length&&(e[EditorUi.DIFF_UPDATE]=k);0<b.length&&(e[EditorUi.DIFF_REMOVE]=b);0<d.length&&(e[EditorUi.DIFF_INSERT]=d);return e}; EditorUi.prototype.createCellLookup=function(a,c,d){d=null!=d?d:{};d[a.getId()]={cell:a,prev:c};var b=a.getChildCount();c=null;for(var e=0;e<b;e++){var g=a.getChildAt(e);this.createCellLookup(g,c,d);c=g}return d}; EditorUi.prototype.diffCellRecursive=function(a,c,d,b,e){b=null!=b?b:{};var g=d[a.getId()];delete d[a.getId()];if(null==g)e.push(a.getId());else{var k=this.diffCell(a,g.cell);if(null!=k.parent||(null!=g.prev?null==c:null!=c)||null!=c&&null!=g.prev&&c.getId()!=g.prev.getId())k.previous=null!=g.prev?g.prev.getId():"";0<Object.keys(k).length&&(b[a.getId()]=k)}g=a.getChildCount();c=null;for(k=0;k<g;k++){var l=a.getChildAt(k);this.diffCellRecursive(l,c,d,b,e);c=l}return b}; EditorUi.prototype.diffPage=function(a,c){var d=[],b=[],e={};this.updatePageRoot(a);this.updatePageRoot(c);var g=this.createCellLookup(c.root),k=this.diffCellRecursive(a.root,null,g,k,b),l;for(l in g){var n=g[l];d.push(this.getJsonForCell(n.cell,n.prev))}0<Object.keys(k).length&&(e[EditorUi.DIFF_UPDATE]=k);0<b.length&&(e[EditorUi.DIFF_REMOVE]=b);0<d.length&&(e[EditorUi.DIFF_INSERT]=d);return e}; @@ -9162,14 +9163,14 @@ DrawioFileSync.prototype.fileChangedNotify=function(){if(this.isValidState())if( DrawioFileSync.prototype.fileChanged=function(a,c,d,b){return this.notifyThread=b=window.setTimeout(mxUtils.bind(this,function(){null!=d&&d()||(this.isValidState()?this.file.loadPatchDescriptor(mxUtils.bind(this,function(b){null!=d&&d()||(this.isValidState()?this.catchup(b,a,c,d):null!=c&&c())}),c):null!=c&&c())}),b?this.cacheReadyDelay:0)}; DrawioFileSync.prototype.reloadDescriptor=function(){this.file.loadDescriptor(mxUtils.bind(this,function(a){null!=a?(this.file.setDescriptorRevisionId(a,this.file.getCurrentRevisionId()),this.updateDescriptor(a),this.fileChangedNotify()):(this.file.inConflictState=!0,this.file.handleFileError())}),mxUtils.bind(this,function(a){this.file.inConflictState=!0;this.file.handleFileError(a)}))}; DrawioFileSync.prototype.updateDescriptor=function(a){this.file.setDescriptor(a);this.file.descriptorChanged();this.start()}; -DrawioFileSync.prototype.catchup=function(a,c,d,b){if(null!=a&&(null==b||!b())){var e=this.file.getDescriptorRevisionId(a),g=this.file.getCurrentRevisionId();if(g==e)this.file.patchDescriptor(this.file.getDescriptor(),a),null!=c&&c();else if(this.isValidState()){var k=this.file.getDescriptorSecret(a),l=0,n=!1,u=mxUtils.bind(this,function(){if(null==b||!b())if(g!=this.file.getCurrentRevisionId())null!=c&&c();else if(this.isValidState()){var f=!0,m=window.setTimeout(mxUtils.bind(this,function(){f=!1; +DrawioFileSync.prototype.catchup=function(a,c,d,b){if(null!=a&&(null==b||!b())){var e=this.file.getDescriptorRevisionId(a),g=this.file.getCurrentRevisionId();if(g==e)this.file.patchDescriptor(this.file.getDescriptor(),a),null!=c&&c();else if(this.isValidState()){var k=this.file.getDescriptorSecret(a),l=0,n=!1,t=mxUtils.bind(this,function(){if(null==b||!b())if(g!=this.file.getCurrentRevisionId())null!=c&&c();else if(this.isValidState()){var f=!0,m=window.setTimeout(mxUtils.bind(this,function(){f=!1; this.reload(c,d,b)}),this.ui.timeout);mxUtils.get(EditorUi.cacheUrl+"?id="+encodeURIComponent(this.channelId)+"&from="+encodeURIComponent(g)+"&to="+encodeURIComponent(e)+(null!=k?"&secret="+encodeURIComponent(k):""),mxUtils.bind(this,function(e){this.file.stats.bytesReceived+=e.getText().length;window.clearTimeout(m);if(f&&(null==b||!b()))if(g!=this.file.getCurrentRevisionId())null!=c&&c();else if(this.isValidState()){var k=null,p=[];if(200<=e.getStatus()&&299>=e.getStatus()&&0<e.getText().length)try{var q= -JSON.parse(e.getText());if(null!=q&&0<q.length)for(var z=0;z<q.length;z++){var y=this.stringToObject(q[z]);if(y.v>DrawioFileSync.PROTOCOL){n=!0;p=[];break}else if(y.v===DrawioFileSync.PROTOCOL&&null!=y.d)k=y.d.checksum,p.push(y.d.patch);else{n=!0;p=[];break}}}catch(D){p=[],null!=window.console&&"1"==urlParams.test&&console.log(D)}try{0<p.length?(this.file.stats.cacheHits++,this.merge(p,k,a,c,d,b)):l<=this.maxCacheReadyRetries-1&&!n&&401!=e.getStatus()?(l++,this.file.stats.cacheMiss++,window.setTimeout(u, -(l+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(c,d,b))}catch(D){null!=d&&d(D)}}else null!=d&&d()}))}else null!=d&&d()});window.setTimeout(u,this.cacheReadyDelay)}else null!=d&&d()}};DrawioFileSync.prototype.reload=function(a,c,d,b){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=a&&a()}),mxUtils.bind(this,function(a){null!=c&&c(a)}),d,b)}; +JSON.parse(e.getText());if(null!=q&&0<q.length)for(var z=0;z<q.length;z++){var x=this.stringToObject(q[z]);if(x.v>DrawioFileSync.PROTOCOL){n=!0;p=[];break}else if(x.v===DrawioFileSync.PROTOCOL&&null!=x.d)k=x.d.checksum,p.push(x.d.patch);else{n=!0;p=[];break}}}catch(C){p=[],null!=window.console&&"1"==urlParams.test&&console.log(C)}try{0<p.length?(this.file.stats.cacheHits++,this.merge(p,k,a,c,d,b)):l<=this.maxCacheReadyRetries-1&&!n&&401!=e.getStatus()?(l++,this.file.stats.cacheMiss++,window.setTimeout(t, +(l+1)*this.cacheReadyDelay)):(this.file.stats.cacheFail++,this.reload(c,d,b))}catch(C){null!=d&&d(C)}}else null!=d&&d()}))}else null!=d&&d()});window.setTimeout(t,this.cacheReadyDelay)}else null!=d&&d()}};DrawioFileSync.prototype.reload=function(a,c,d,b){this.file.updateFile(mxUtils.bind(this,function(){this.lastModified=this.file.getLastModifiedDate();this.updateStatus();this.start();null!=a&&a()}),mxUtils.bind(this,function(a){null!=c&&c(a)}),d,b)}; DrawioFileSync.prototype.merge=function(a,c,d,b,e,g){try{this.file.stats.merged++;this.lastModified=new Date;this.file.shadowPages=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);this.file.backupPatch=this.file.isModified()?this.ui.diffPages(this.file.shadowPages,this.ui.pages):null;var k=this.file.ignorePatches(a),l=this.file.getDescriptorRevisionId(d);if(!k){for(g=0;g<a.length;g++)this.file.shadowPages=this.ui.patchPages(this.file.shadowPages, -a[g]);var n=null!=c?this.ui.getHashValueForPages(this.file.shadowPages):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentRevisionId(),"to",l,"etag",this.file.getDescriptorEtag(d),"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"patches",a,"checksum",c==n,c);if(null!=c&&c!=n){var u=this.ui.hashValue(this.file.getCurrentRevisionId()),f=this.ui.hashValue(l);this.file.checksumError(e,a,"From: "+u+"\nTo: "+f+"\nChecksum: "+c+"\nCurrent: "+n,l,"merge"); -return}this.file.patch(a,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch:null)}this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.patchDescriptor(this.file.getDescriptor(),d);this.file.backupPatch=null;null!=b&&b()}catch(t){this.file.inConflictState=!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=e&&e(t);try{if(this.file.errorReportsEnabled)u=this.ui.hashValue(this.file.getCurrentRevisionId()),f=this.ui.hashValue(l),this.file.sendErrorReport("Error in merge", -"From: "+u+"\nTo: "+f+"\nChecksum: "+c+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(a,null,2)),t);else{var m=this.file.getCurrentUser(),p=null!=m?m.id:"unknown";EditorUi.logError("Error in merge",null,this.file.getMode()+"."+this.file.getId(),p,t)}}catch(v){}}}; +a[g]);var n=null!=c?this.ui.getHashValueForPages(this.file.shadowPages):null;"1"==urlParams.test&&EditorUi.debug("Sync.merge",[this],"from",this.file.getCurrentRevisionId(),"to",l,"etag",this.file.getDescriptorEtag(d),"backup",this.file.backupPatch,"attempt",this.catchupRetryCount,"patches",a,"checksum",c==n,c);if(null!=c&&c!=n){var t=this.ui.hashValue(this.file.getCurrentRevisionId()),f=this.ui.hashValue(l);this.file.checksumError(e,a,"From: "+t+"\nTo: "+f+"\nChecksum: "+c+"\nCurrent: "+n,l,"merge"); +return}this.file.patch(a,DrawioFile.LAST_WRITE_WINS?this.file.backupPatch:null)}this.file.invalidChecksum=!1;this.file.inConflictState=!1;this.file.patchDescriptor(this.file.getDescriptor(),d);this.file.backupPatch=null;null!=b&&b()}catch(u){this.file.inConflictState=!0;this.file.invalidChecksum=!0;this.file.descriptorChanged();null!=e&&e(u);try{if(this.file.errorReportsEnabled)t=this.ui.hashValue(this.file.getCurrentRevisionId()),f=this.ui.hashValue(l),this.file.sendErrorReport("Error in merge", +"From: "+t+"\nTo: "+f+"\nChecksum: "+c+"\nPatches:\n"+this.file.compressReportData(JSON.stringify(a,null,2)),u);else{var m=this.file.getCurrentUser(),p=null!=m?m.id:"unknown";EditorUi.logError("Error in merge",null,this.file.getMode()+"."+this.file.getId(),p,u)}}catch(v){}}}; DrawioFileSync.prototype.descriptorChanged=function(a){this.lastModified=this.file.getLastModifiedDate();if(null!=this.channelId){var c=this.objectToString(this.createMessage({a:"desc",m:this.lastModified.getTime()})),d=this.file.getCurrentRevisionId(),b=this.objectToString({});mxUtils.post(EditorUi.cacheUrl,this.getIdParameters()+"&from="+encodeURIComponent(a)+"&to="+encodeURIComponent(d)+"&msg="+encodeURIComponent(c)+"&data="+encodeURIComponent(b));this.file.stats.bytesSent+=b.length;this.file.stats.msgSent++}this.updateStatus()}; DrawioFileSync.prototype.objectToString=function(a){a=Graph.compress(JSON.stringify(a));null!=this.key&&"undefined"!==typeof CryptoJS&&(a=CryptoJS.AES.encrypt(a,this.key).toString());return a};DrawioFileSync.prototype.stringToObject=function(a){null!=this.key&&"undefined"!==typeof CryptoJS&&(a=CryptoJS.AES.decrypt(a,this.key).toString(CryptoJS.enc.Utf8));return JSON.parse(Graph.decompress(a))}; DrawioFileSync.prototype.fileSaved=function(a,c,d,b){this.lastModified=this.file.getLastModifiedDate();this.resetUpdateStatusThread();this.catchupRetryCount=0;if(!this.ui.isOffline()&&!this.file.inConflictState&&!this.file.redirectDialogShowing&&(this.start(),null!=this.channelId)){var e=null!=this.file.shadowPages?this.file.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.file.shadowData).documentElement);b=this.ui.getHashValueForPages(a);e=this.ui.diffPages(e,a);c=this.file.getDescriptorRevisionId(c); @@ -9185,7 +9186,7 @@ mxAsyncCanvas.prototype.decWaitCounter=function(){this.waitCounter--;0==this.wai mxAsyncCanvas.prototype.setAlpha=function(a){this.state.alpha=a};mxAsyncCanvas.prototype.setFontColor=function(a){this.state.fontColor=a};mxAsyncCanvas.prototype.setFontBackgroundColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fontBackgroundColor=a};mxAsyncCanvas.prototype.setFontBorderColor=function(a){a==mxConstants.NONE&&(a=null);this.state.fontBorderColor=a};mxAsyncCanvas.prototype.setFontSize=function(a){this.state.fontSize=a}; mxAsyncCanvas.prototype.setFontFamily=function(a){this.state.fontFamily=a};mxAsyncCanvas.prototype.setFontStyle=function(a){this.state.fontStyle=a};mxAsyncCanvas.prototype.rect=function(a,c,d,b){};mxAsyncCanvas.prototype.roundrect=function(a,c,d,b,e,g){};mxAsyncCanvas.prototype.ellipse=function(a,c,d,b){};mxAsyncCanvas.prototype.rewriteImageSource=function(a){if("http://"==a.substring(0,7)||"https://"==a.substring(0,8))a="/proxy?url="+encodeURIComponent(a);return a}; mxAsyncCanvas.prototype.image=function(a,c,d,b,e,g,k,l){e=this.rewriteImageSource(e);a=this.htmlCanvas.images[e];null==a&&(a=new Image,a.onload=mxUtils.bind(this,function(){this.decWaitCounter()}),a.onerror=mxUtils.bind(this,function(){this.decWaitCounter()}),this.incWaitCounter(),this.htmlCanvas.images[e]=a,a.src=e)};mxAsyncCanvas.prototype.fill=function(){};mxAsyncCanvas.prototype.stroke=function(){};mxAsyncCanvas.prototype.fillAndStroke=function(){}; -mxAsyncCanvas.prototype.text=function(a,c,d,b,e,g,k,l,n,u,f,m){if(null!=e&&0!=e.length&&(a=this.state.scale,"html"==n&&"function"===typeof html2canvas)){this.incWaitCounter();var p=this.canvasIndex++;html2canvas(e,{onrendered:mxUtils.bind(this,function(a){this.htmlCanvas.subCanvas[p]=a;this.decWaitCounter()}),scale:a,logging:!0})}};mxAsyncCanvas.prototype.finish=function(a){0==this.waitCounter?a():this.onComplete=a};function mxJsCanvas(a){mxAbstractCanvas2D.call(this);this.ctx=a.getContext("2d");this.ctx.textBaseline="top";this.ctx.fillStyle="rgba(255,255,255,0)";this.ctx.strokeStyle="rgba(0, 0, 0, 0)";this.M_RAD_PER_DEG=Math.PI/180;this.images=null==this.images?[]:this.images;this.subCanvas=null==this.subCanvas?[]:this.subCanvas}mxUtils.extend(mxJsCanvas,mxAbstractCanvas2D);mxJsCanvas.prototype.ctx=null;mxJsCanvas.prototype.waitCounter=0;mxJsCanvas.prototype.onComplete=null;mxJsCanvas.prototype.images=null; +mxAsyncCanvas.prototype.text=function(a,c,d,b,e,g,k,l,n,t,f,m){if(null!=e&&0!=e.length&&(a=this.state.scale,"html"==n&&"function"===typeof html2canvas)){this.incWaitCounter();var p=this.canvasIndex++;html2canvas(e,{onrendered:mxUtils.bind(this,function(a){this.htmlCanvas.subCanvas[p]=a;this.decWaitCounter()}),scale:a,logging:!0})}};mxAsyncCanvas.prototype.finish=function(a){0==this.waitCounter?a():this.onComplete=a};function mxJsCanvas(a){mxAbstractCanvas2D.call(this);this.ctx=a.getContext("2d");this.ctx.textBaseline="top";this.ctx.fillStyle="rgba(255,255,255,0)";this.ctx.strokeStyle="rgba(0, 0, 0, 0)";this.M_RAD_PER_DEG=Math.PI/180;this.images=null==this.images?[]:this.images;this.subCanvas=null==this.subCanvas?[]:this.subCanvas}mxUtils.extend(mxJsCanvas,mxAbstractCanvas2D);mxJsCanvas.prototype.ctx=null;mxJsCanvas.prototype.waitCounter=0;mxJsCanvas.prototype.onComplete=null;mxJsCanvas.prototype.images=null; mxJsCanvas.prototype.subCanvas=null;mxJsCanvas.prototype.canvasIndex=0;mxJsCanvas.prototype.hexToRgb=function(a){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(a,d,b,e){return d+d+b+b+e+e});return(a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a))?{r:parseInt(a[1],16),g:parseInt(a[2],16),b:parseInt(a[3],16)}:null};mxJsCanvas.prototype.incWaitCounter=function(){this.waitCounter++}; mxJsCanvas.prototype.decWaitCounter=function(){this.waitCounter--;0==this.waitCounter&&null!=this.onComplete&&(this.onComplete(),this.onComplete=null)};mxJsCanvas.prototype.updateFont=function(){var a="";(this.state.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="bold ");(this.state.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="italic ");this.ctx.font=a+this.state.fontSize+"px "+this.state.fontFamily}; mxJsCanvas.prototype.save=function(){this.states.push(this.state);this.state=mxUtils.clone(this.state);this.ctx.save()};mxJsCanvas.prototype.restore=function(){this.state=this.states.pop();this.ctx.restore()};mxJsCanvas.prototype.scale=function(a){this.state.scale*=a;this.state.strokeWidth*=a;this.ctx.scale(a,a)};mxJsCanvas.prototype.translate=function(a,c){this.state.dx+=a;this.state.dy+=c;this.ctx.translate(a,c)}; @@ -9200,9 +9201,9 @@ mxJsCanvas.prototype.setShadowOffset=function(a,c){this.state.shadowDx=a;this.st mxJsCanvas.prototype.arcTo=function(a,c,d,b,e,g,k){a=mxUtils.arcToCurves(this.lastMoveX,this.lastMoveY,a,c,d,b,e,g,k);if(null!=a)for(c=0;c<a.length;c+=6)this.curveTo(a[c],a[c+1],a[c+2],a[c+3],a[c+4],a[c+5])};mxJsCanvas.prototype.curveTo=function(a,c,d,b,e,g){this.ctx.bezierCurveTo(a,c,d,b,e,g);this.lastMoveX=e;this.lastMoveY=g};mxJsCanvas.prototype.rect=function(a,c,d,b){this.begin();this.moveTo(a,c);this.lineTo(a+d,c);this.lineTo(a+d,c+b);this.lineTo(a,c+b);this.close()}; mxJsCanvas.prototype.roundrect=function(a,c,d,b,e,g){this.begin();this.moveTo(a+e,c);this.lineTo(a+d-e,c);this.quadTo(a+d,c,a+d,c+g);this.lineTo(a+d,c+b-g);this.quadTo(a+d,c+b,a+d-e,c+b);this.lineTo(a+e,c+b);this.quadTo(a,c+b,a,c+b-g);this.lineTo(a,c+g);this.quadTo(a,c,a+e,c)};mxJsCanvas.prototype.ellipse=function(a,c,d,b){this.ctx.save();this.ctx.translate(a+d/2,c+b/2);this.ctx.scale(d/2,b/2);this.ctx.beginPath();this.ctx.arc(0,0,1,0,2*Math.PI,!1);this.ctx.restore()}; mxJsCanvas.prototype.rewriteImageSource=function(a){if("http://"==a.substring(0,7)||"https://"==a.substring(0,8))a="/proxy?url="+encodeURIComponent(a);return a}; -mxJsCanvas.prototype.image=function(a,c,d,b,e,g,k,l){e=this.rewriteImageSource(e);e=this.images[e];if(null!=e&&0<e.height&&0<e.width){var n=this.ctx;n.save();if(g){g=e.width;var u=e.height,f=Math.min(d/g,b/u);a+=(d-g*f)/2;c+=(b-u*f)/2;d=g*f;b=u*f}k&&(n.translate(2*a+d,0),n.scale(-1,1));l&&(n.translate(0,2*c+b),n.scale(1,-1));n.drawImage(e,a,c,d,b);n.restore()}};mxJsCanvas.prototype.begin=function(){this.ctx.beginPath()};mxJsCanvas.prototype.close=function(){this.ctx.closePath()}; +mxJsCanvas.prototype.image=function(a,c,d,b,e,g,k,l){e=this.rewriteImageSource(e);e=this.images[e];if(null!=e&&0<e.height&&0<e.width){var n=this.ctx;n.save();if(g){g=e.width;var t=e.height,f=Math.min(d/g,b/t);a+=(d-g*f)/2;c+=(b-t*f)/2;d=g*f;b=t*f}k&&(n.translate(2*a+d,0),n.scale(-1,1));l&&(n.translate(0,2*c+b),n.scale(1,-1));n.drawImage(e,a,c,d,b);n.restore()}};mxJsCanvas.prototype.begin=function(){this.ctx.beginPath()};mxJsCanvas.prototype.close=function(){this.ctx.closePath()}; mxJsCanvas.prototype.fill=function(){this.ctx.fill()};mxJsCanvas.prototype.stroke=function(){this.ctx.stroke()};mxJsCanvas.prototype.fillAndStroke=function(){if(this.state.shadow){this.ctx.stroke();this.ctx.fill();var a=this.ctx.shadowColor,c=this.ctx.shadowOffsetX,d=this.ctx.shadowOffsetY;this.ctx.shadowColor="transparent";this.ctx.shadowOffsetX=0;this.ctx.shadowOffsetY=0;this.ctx.stroke();this.ctx.shadowColor=a;this.ctx.shadowOffsetX=c;this.ctx.shadowOffsetY=d}else this.ctx.fill(),this.ctx.stroke()}; -mxJsCanvas.prototype.text=function(a,c,d,b,e,g,k,l,n,u,f,m){if(null!=e&&0!=e.length){d=this.state.scale;0!=m&&(this.ctx.translate(Math.round(a),Math.round(c)),this.ctx.rotate(m*Math.PI/180),this.ctx.translate(Math.round(-a),Math.round(-c)));if("html"==n){e=this.subCanvas[this.canvasIndex++];n=e.height;m=e.width;switch(k){case mxConstants.ALIGN_MIDDLE:c-=n/2/d;break;case mxConstants.ALIGN_BOTTOM:c-=n/d}switch(g){case mxConstants.ALIGN_CENTER:a-=m/2/d;break;case mxConstants.ALIGN_RIGHT:a-=m/d}this.ctx.save(); +mxJsCanvas.prototype.text=function(a,c,d,b,e,g,k,l,n,t,f,m){if(null!=e&&0!=e.length){d=this.state.scale;0!=m&&(this.ctx.translate(Math.round(a),Math.round(c)),this.ctx.rotate(m*Math.PI/180),this.ctx.translate(Math.round(-a),Math.round(-c)));if("html"==n){e=this.subCanvas[this.canvasIndex++];n=e.height;m=e.width;switch(k){case mxConstants.ALIGN_MIDDLE:c-=n/2/d;break;case mxConstants.ALIGN_BOTTOM:c-=n/d}switch(g){case mxConstants.ALIGN_CENTER:a-=m/2/d;break;case mxConstants.ALIGN_RIGHT:a-=m/d}this.ctx.save(); if(null!=this.state.fontBackgroundColor||null!=this.state.fontBorderColor)null!=this.state.fontBackgroundColor&&(this.ctx.fillStyle=this.state.fontBackgroundColor,this.ctx.fillRect(Math.round(a)-.5,Math.round(c)-.5,Math.round(e.width/d),Math.round(e.height/d))),null!=this.state.fontBorderColor&&(this.ctx.strokeStyle=this.state.fontBorderColor,this.ctx.lineWidth=1,this.ctx.strokeRect(Math.round(a)-.5,Math.round(c)-.5,Math.round(e.width/d),Math.round(e.height/d)));this.ctx.scale(1/d,1/d);this.ctx.drawImage(e, Math.round(a*d),Math.round(c*d))}else{this.ctx.save();this.updateFont();m=document.createElement("div");m.innerHTML=e;m.style.position="absolute";m.style.top="-9999px";m.style.left="-9999px";m.style.fontFamily=this.state.fontFamily;m.style.fontWeight="bold";m.style.fontSize=this.state.fontSize+"pt";document.body.appendChild(m);n=[m.offsetWidth,m.offsetHeight];document.body.removeChild(m);e=e.split("\n");m=n[1];this.ctx.textBaseline="top";n=c;switch(k){case mxConstants.ALIGN_MIDDLE:this.ctx.textBaseline= "middle";c-=(e.length-1)*m/2;n=c-this.state.fontSize/2;break;case mxConstants.ALIGN_BOTTOM:this.ctx.textBaseline="alphabetic",c-=m*(e.length-1),n=c-this.state.fontSize}k=[];m=[];for(d=0;d<e.length;d++)m[d]=a,k[d]=this.ctx.measureText(e[d]).width,null!=g&&g!=mxConstants.ALIGN_LEFT&&(m[d]-=k[d],g==mxConstants.ALIGN_CENTER&&(m[d]+=k[d]/2));if(null!=this.state.fontBackgroundColor||null!=this.state.fontBorderColor){a=m[0];g=k[0];for(d=1;d<e.length;d++)a=Math.min(a,m[d]),g=Math.max(g,k[d]);this.ctx.save(); @@ -9241,7 +9242,7 @@ DriveClient.prototype.getUsersList=function(){var a=[],c=JSON.parse(this.getPers DriveClient.prototype.execute=function(a){var c=mxUtils.bind(this,function(c){this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(b,c){this.authorize(!1,mxUtils.bind(this,function(){null!=c&&c();a()}),mxUtils.bind(this,function(a){var b=mxResources.get("cannotLogin");null!=a&&null!=a.error&&403==a.error.code&&null!=a.error.data&&0<a.error.data.length&&"domainPolicy"==a.error.data[0].reason&&(b=a.error.message);this.logout();this.ui.showError(mxResources.get("error"),b,mxResources.get("help"), mxUtils.bind(this,function(){this.ui.openLink("https://desk.draw.io/support/solutions/articles/16000074659")}),null,mxResources.get("ok"))}),b)}))});this.authorize(!0,a,c)}; DriveClient.prototype.executeRequest=function(a,c,d){try{var b=!0,e=null,g=0;null!=this.requestThread&&window.clearTimeout(this.requestThread);var k=mxUtils.bind(this,function(){try{this.requestThread=null;this.currentRequest=a;null!=e&&window.clearTimeout(e);e=window.setTimeout(mxUtils.bind(this,function(){b=!1;null!=d&&d({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout"),retry:k})}),this.ui.timeout);var l=null,n=!1;"string"===typeof a.params?l=a.params:null!=a.params&&(l=JSON.stringify(a.params), -n=!0);var u=a.fullUrl||this.GDriveBaseUrl+a.url;n&&(u+=(0<u.indexOf("?")?"&":"?")+"alt=json");var f=new mxXmlRequest(u,l,a.method||"GET");f.setRequestHeaders=mxUtils.bind(this,function(b,c){if(null!=a.headers)for(var d in a.headers)b.setRequestHeader(d,a.headers[d]);else null!=a.contentType?b.setRequestHeader("Content-Type",a.contentType):n&&b.setRequestHeader("Content-Type","application/json");b.setRequestHeader("Authorization","Bearer "+this.token)});f.send(mxUtils.bind(this,function(f){try{if(window.clearTimeout(e), +n=!0);var t=a.fullUrl||this.GDriveBaseUrl+a.url;n&&(t+=(0<t.indexOf("?")?"&":"?")+"alt=json");var f=new mxXmlRequest(t,l,a.method||"GET");f.setRequestHeaders=mxUtils.bind(this,function(b,c){if(null!=a.headers)for(var d in a.headers)b.setRequestHeader(d,a.headers[d]);else null!=a.contentType?b.setRequestHeader("Content-Type",a.contentType):n&&b.setRequestHeader("Content-Type","application/json");b.setRequestHeader("Authorization","Bearer "+this.token)});f.send(mxUtils.bind(this,function(f){try{if(window.clearTimeout(e), b){var l;try{l=JSON.parse(f.getText())}catch(q){l=null}if(200<=f.getStatus()&&299>=f.getStatus())null!=c&&c(l);else{var m=null!=l&&null!=l.error?null!=l.error.data?l.error.data:l.error.errors:null,n=null!=m&&0<m.length?m[0].reason:null;null==d||null==l||null==l.error||-1!=l.error.code&&(403!=l.error.code||"domainPolicy"!=n&&"The requested mime type change is forbidden."!=l.error.message)?null!=l&&null!=l.error&&(401==l.error.code||403==l.error.code&&"rateLimitExceeded"!=n)?403==l.error.code&&this.retryAuth|| 401==l.error.code&&this.retryAuth&&"authError"==n?(null!=d&&d(l),this.retryAuth=!1):(this.retryAuth=!0,this.execute(k)):null!=l&&null!=l.error&&412!=l.error.code&&404!=l.error.code&&400!=l.error.code&&this.currentRequest==a&&g<this.maxRetries?(g++,this.requestThread=window.setTimeout(k,Math.round(Math.pow(2,g)*(1+.1*(Math.random()-.5))*this.coolOff))):null!=d&&d(l):d(l)}}}catch(q){if(null!=d)d(q);else throw q;}}))}catch(m){if(null!=d)d(m);else throw m;}});null!=this.token&&this.authCalled?k():this.execute(k)}catch(l){if(null!= d)d(l);else throw l;}};DriveClient.prototype.createAuthWin=function(a){return window.open(a?a:"about:blank","gdauth",["width=525,height=525","top="+(window.screenY+Math.max(window.outerHeight-525,0)/2),"left="+(window.screenX+Math.max(window.outerWidth-525,0)/2),"status=no,resizable=yes,toolbar=no,menubar=no,scrollbars=yes"].join())}; @@ -9258,24 +9259,24 @@ DriveClient.prototype.loadDescriptor=function(a,c,d,b){this.executeRequest({url: DriveClient.prototype.getFile=function(a,c,d,b,e){b=null!=b?b:!1;e=null!=e?e:!1;null!=urlParams.rev?this.executeRequest({url:"/files/"+a+"/revisions/"+urlParams.rev+"?supportsTeamDrives=true"},mxUtils.bind(this,function(b){b.title=b.originalFilename;b.headRevisionId=b.id;b.id=a;this.getXmlFile(b,c,d)}),d):this.loadDescriptor(a,mxUtils.bind(this,function(a){try{if(null!=this.user){var g=/\.png$/i.test(a.title);/\.v(dx|sdx?)$/i.test(a.title)||/\.gliffy$/i.test(a.title)||!this.ui.useCanvasForExport&& g?this.ui.convertFile(a.downloadUrl,a.title,a.mimeType,this.extension,c,d,null,{Authorization:"Bearer "+this.token}):b||e||a.mimeType==this.libraryMimeType||a.mimeType==this.xmlMimeType?this.getXmlFile(a,c,d,!0,e):this.getXmlFile(a,c,d)}else d({message:mxResources.get("loggedOut")})}catch(l){if(null!=d)d(l);else throw l;}}),d)};DriveClient.prototype.isGoogleRealtimeMimeType=function(a){return null!=a&&"application/vnd.jgraph.mxfile."==a.substring(0,30)}; DriveClient.prototype.getXmlFile=function(a,c,d,b,e){try{var g={Authorization:"Bearer "+this.token},k=a.downloadUrl;this.ui.loadUrl(k,mxUtils.bind(this,function(b){try{if(null==b)d({message:mxResources.get("invalidOrMissingFile")});else if(a.mimeType==this.libraryMimeType||e)a.mimeType!=this.libraryMimeType||e?c(new DriveLibrary(this.ui,b,a)):d({message:mxResources.get("notADiagramFile")});else{var g=!1;if(/\.png$/i.test(a.title)){var l=b.lastIndexOf(",");if(0<l){var f=this.ui.extractGraphModelFromPng(b.substring(l+ -1));if(null!=f&&0<f.length)b=f;else try{var f=b.substring(l+1),m=!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(f):atob(f),p=this.ui.editor.extractGraphModel(mxUtils.parseXml(m).documentElement,!0);null==p||0<p.getElementsByTagName("parsererror").length?g=!0:b=m}catch(t){g=!0}}}else/\.pdf$/i.test(a.title)?(f=Editor.extractGraphModelFromPdf(b),null!=f&&0<f.length&&(g=!0,b=f)):"data:image/png;base64,PG14ZmlsZS"==b.substring(0,32)&&(m=b.substring(22),b=window.atob&&!mxClient.IS_SF?atob(m): -Base64.decode(m));Graph.fileSupport&&(new XMLHttpRequest).upload&&this.ui.isRemoteFileFormat(b,k)?this.ui.parseFile(new Blob([b],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){try{4==b.readyState&&(200<=b.status&&299>=b.status?c(new LocalFile(this.ui,b.responseText,a.title+this.extension,!0)):null!=d&&d({message:mxResources.get("errorLoadingFile")}))}catch(v){if(null!=d)d(v);else throw v;}}),a.title):c(g?new LocalFile(this.ui,b,a.title,!0):new DriveFile(this.ui,b,a))}}catch(t){if(null!= -d)d(t);else throw t;}}),d,null!=a.mimeType&&"image/"==a.mimeType.substring(0,6)&&"image/svg"!=a.mimeType.substring(0,9)||/\.png$/i.test(a.title)||/\.jpe?g$/i.test(a.title)||/\.pdf$/i.test(a.title),null,null,null,g)}catch(l){if(null!=d)d(l);else throw l;}}; -DriveClient.prototype.saveFile=function(a,c,d,b,e,g,k,l){try{var n=0;a.saveLevel=1;var u=mxUtils.bind(this,function(c){if(null!=b)b(c);else throw c;try{if(!a.isConflict(c)){var d="sl_"+a.saveLevel+"-error_"+(a.getErrorMessage(c)||"unknown");null!=c&&null!=c.error&&null!=c.error.code&&(d+="-code_"+c.error.code);EditorUi.logEvent({category:"ERROR-SAVE-FILE-"+a.getHash()+"-rev_"+a.desc.headRevisionId+"-mod_"+a.desc.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType+(this.ui.editor.autosave?"": -"-nosave")+(a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?"":"-nolisten")+(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),action:d,label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}}catch(C){}}),f=mxUtils.bind(this,function(b){u(b);try{EditorUi.logError(b.message,null,null,b),EditorUi.sendReport("Critical error in DriveClient.saveFile "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+a.desc.id+ -"."+a.desc.headRevisionId+"\nMime="+a.desc.mimeType+"\nUser="+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")+"\nSaveLevel="+a.saveLevel+"\nSaveAsPng="+(this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle()))+"\nRetryCount="+n+"\nError="+b+"\nMessage="+b.message+"\n\nStack:\n"+b.stack)}catch(A){}});if(a.isEditable()&&null!=a.desc){var m=(new Date).getTime(),p=a.desc.etag,t=a.desc.modifiedDate,v=a.desc.headRevisionId,q=this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle()); -g=null!=g?g:!1;var z=null,y=!1,D={mimeType:a.desc.mimeType,title:a.getTitle()};if(this.isGoogleRealtimeMimeType(D.mimeType))D.mimeType=this.xmlMimeType,z=a.desc,y=c=!0;else if("application/octet-stream"==D.mimeType||"1"==urlParams["override-mime"]&&D.mimeType!=this.xmlMimeType)D.mimeType=this.xmlMimeType;var H=mxUtils.bind(this,function(b,e,C){try{a.saveLevel=3;a.constructor==DriveFile&&(null==l&&(l=[]),null==a.getChannelId()&&l.push({key:"channel",value:Editor.guid(32)}),null==a.getChannelKey()&& -l.push({key:"key",value:Editor.guid(32)}),l.push({key:"secret",value:Editor.guid(32)}));C||(null!=b||g||(b=this.placeholderThumbnail,e=this.placeholderMimeType),null!=b&&null!=e&&(D.thumbnail={image:b,mimeType:e}));var x=a.getData(),A=mxUtils.bind(this,function(b){try{if(a.saveDelay=(new Date).getTime()-m,a.saveLevel=11,null==b)u({message:mxResources.get("errorSavingFile")+": Empty response"});else{var e=(new Date(b.modifiedDate)).getTime()-(new Date(t)).getTime();if(0>=e||p==b.etag||c&&v==b.headRevisionId){a.saveLevel= -12;var g=[];0>=e&&g.push("invalid modified time");p==b.etag&&g.push("stale etag");c&&v==b.headRevisionId&&g.push("stale revision");var k=g.join(", ");u({message:mxResources.get("errorSavingFile")+": "+k},b);try{EditorUi.logError("Critical: Error saving to Google Drive "+a.desc.id,null,"from-"+v+"."+t+"-"+this.ui.hashValue(p)+"-to-"+b.headRevisionId+"."+b.modifiedDate+"-"+this.ui.hashValue(b.etag)+(0<k.length?"-errors-"+k:""),"user-"+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+ -a.sync.clientId:"-nosync"))}catch(O){}}else if(a.saveLevel=null,d(b,x),null!=z){this.executeRequest({url:"/files/"+z.id+"/revisions/"+z.headRevisionId+"?supportsTeamDrives=true"},mxUtils.bind(this,mxUtils.bind(this,function(a){a.pinned=!0;this.executeRequest({url:"/files/"+z.id+"/revisions/"+z.headRevisionId,method:"PUT",params:a})})));try{EditorUi.logEvent({category:a.convertedFrom+"-CONVERT-FILE-"+a.getHash(),action:"from_"+z.id+"."+z.headRevisionId+"-to_"+a.desc.id+"."+a.desc.headRevisionId,label:null!= -this.user?"user_"+this.user.id:"nouser"+(null!=a.sync?"-client_"+a.sync.clientId:"nosync")})}catch(O){}}}}catch(O){f(O)}}),F=mxUtils.bind(this,function(d,e){a.saveLevel=4;try{null!=l&&(D.properties=l);var g=k||a.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:a.getCurrentEtag(),m=mxUtils.bind(this,function(b){a.saveLevel=5;try{var k=a.desc.mimeType!=this.xmlMimeType&&a.desc.mimeType!=this.mimeType&&a.desc.mimeType!=this.libraryMimeType,l=!0,m=null;try{m=window.setTimeout(mxUtils.bind(this, -function(){l=!1;u({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),3*this.ui.timeout)}catch(W){}this.executeRequest(this.createUploadRequest(a.getId(),D,d,c||b||k,e,b?null:g,y),mxUtils.bind(this,function(a){window.clearTimeout(m);l&&A(a)}),mxUtils.bind(this,function(b){window.clearTimeout(m);if(l){a.saveLevel=6;try{a.isConflict(b)?this.executeRequest({url:"/files/"+a.getId()+"?supportsTeamDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(c){a.saveLevel=7;try{if(null!= +1));if(null!=f&&0<f.length)b=f;else try{var f=b.substring(l+1),m=!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(f):atob(f),p=this.ui.editor.extractGraphModel(mxUtils.parseXml(m).documentElement,!0);null==p||0<p.getElementsByTagName("parsererror").length?g=!0:b=m}catch(u){g=!0}}}else/\.pdf$/i.test(a.title)?(f=Editor.extractGraphModelFromPdf(b),null!=f&&0<f.length&&(g=!0,b=f)):"data:image/png;base64,PG14ZmlsZS"==b.substring(0,32)&&(m=b.substring(22),b=window.atob&&!mxClient.IS_SF?atob(m): +Base64.decode(m));Graph.fileSupport&&(new XMLHttpRequest).upload&&this.ui.isRemoteFileFormat(b,k)?this.ui.parseFile(new Blob([b],{type:"application/octet-stream"}),mxUtils.bind(this,function(b){try{4==b.readyState&&(200<=b.status&&299>=b.status?c(new LocalFile(this.ui,b.responseText,a.title+this.extension,!0)):null!=d&&d({message:mxResources.get("errorLoadingFile")}))}catch(v){if(null!=d)d(v);else throw v;}}),a.title):c(g?new LocalFile(this.ui,b,a.title,!0):new DriveFile(this.ui,b,a))}}catch(u){if(null!= +d)d(u);else throw u;}}),d,null!=a.mimeType&&"image/"==a.mimeType.substring(0,6)&&"image/svg"!=a.mimeType.substring(0,9)||/\.png$/i.test(a.title)||/\.jpe?g$/i.test(a.title)||/\.pdf$/i.test(a.title),null,null,null,g)}catch(l){if(null!=d)d(l);else throw l;}}; +DriveClient.prototype.saveFile=function(a,c,d,b,e,g,k,l){try{var n=0;a.saveLevel=1;var t=mxUtils.bind(this,function(c){if(null!=b)b(c);else throw c;try{if(!a.isConflict(c)){var d="sl_"+a.saveLevel+"-error_"+(a.getErrorMessage(c)||"unknown");null!=c&&null!=c.error&&null!=c.error.code&&(d+="-code_"+c.error.code);EditorUi.logEvent({category:"ERROR-SAVE-FILE-"+a.getHash()+"-rev_"+a.desc.headRevisionId+"-mod_"+a.desc.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType+(this.ui.editor.autosave?"": +"-nosave")+(a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?"":"-nolisten")+(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),action:d,label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}}catch(D){}}),f=mxUtils.bind(this,function(b){t(b);try{EditorUi.logError(b.message,null,null,b),EditorUi.sendReport("Critical error in DriveClient.saveFile "+(new Date).toISOString()+":\n\nBrowser="+navigator.userAgent+"\nFile="+a.desc.id+ +"."+a.desc.headRevisionId+"\nMime="+a.desc.mimeType+"\nUser="+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")+"\nSaveLevel="+a.saveLevel+"\nSaveAsPng="+(this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle()))+"\nRetryCount="+n+"\nError="+b+"\nMessage="+b.message+"\n\nStack:\n"+b.stack)}catch(B){}});if(a.isEditable()&&null!=a.desc){var m=(new Date).getTime(),p=a.desc.etag,u=a.desc.modifiedDate,v=a.desc.headRevisionId,q=this.ui.useCanvasForExport&&/(\.png)$/i.test(a.getTitle()); +g=null!=g?g:!1;var z=null,x=!1,C={mimeType:a.desc.mimeType,title:a.getTitle()};if(this.isGoogleRealtimeMimeType(C.mimeType))C.mimeType=this.xmlMimeType,z=a.desc,x=c=!0;else if("application/octet-stream"==C.mimeType||"1"==urlParams["override-mime"]&&C.mimeType!=this.xmlMimeType)C.mimeType=this.xmlMimeType;var H=mxUtils.bind(this,function(b,e,D){try{a.saveLevel=3;a.constructor==DriveFile&&(null==l&&(l=[]),null==a.getChannelId()&&l.push({key:"channel",value:Editor.guid(32)}),null==a.getChannelKey()&& +l.push({key:"key",value:Editor.guid(32)}),l.push({key:"secret",value:Editor.guid(32)}));D||(null!=b||g||(b=this.placeholderThumbnail,e=this.placeholderMimeType),null!=b&&null!=e&&(C.thumbnail={image:b,mimeType:e}));var y=a.getData(),B=mxUtils.bind(this,function(b){try{if(a.saveDelay=(new Date).getTime()-m,a.saveLevel=11,null==b)t({message:mxResources.get("errorSavingFile")+": Empty response"});else{var e=(new Date(b.modifiedDate)).getTime()-(new Date(u)).getTime();if(0>=e||p==b.etag||c&&v==b.headRevisionId){a.saveLevel= +12;var g=[];0>=e&&g.push("invalid modified time");p==b.etag&&g.push("stale etag");c&&v==b.headRevisionId&&g.push("stale revision");var k=g.join(", ");t({message:mxResources.get("errorSavingFile")+": "+k},b);try{EditorUi.logError("Critical: Error saving to Google Drive "+a.desc.id,null,"from-"+v+"."+u+"-"+this.ui.hashValue(p)+"-to-"+b.headRevisionId+"."+b.modifiedDate+"-"+this.ui.hashValue(b.etag)+(0<k.length?"-errors-"+k:""),"user-"+(null!=this.user?this.user.id:"nouser")+(null!=a.sync?"-client_"+ +a.sync.clientId:"-nosync"))}catch(O){}}else if(a.saveLevel=null,d(b,y),null!=z){this.executeRequest({url:"/files/"+z.id+"/revisions/"+z.headRevisionId+"?supportsTeamDrives=true"},mxUtils.bind(this,mxUtils.bind(this,function(a){a.pinned=!0;this.executeRequest({url:"/files/"+z.id+"/revisions/"+z.headRevisionId,method:"PUT",params:a})})));try{EditorUi.logEvent({category:a.convertedFrom+"-CONVERT-FILE-"+a.getHash(),action:"from_"+z.id+"."+z.headRevisionId+"-to_"+a.desc.id+"."+a.desc.headRevisionId,label:null!= +this.user?"user_"+this.user.id:"nouser"+(null!=a.sync?"-client_"+a.sync.clientId:"nosync")})}catch(O){}}}}catch(O){f(O)}}),G=mxUtils.bind(this,function(d,e){a.saveLevel=4;try{null!=l&&(C.properties=l);var g=k||a.constructor!=DriveFile||"manual"!=DrawioFile.SYNC&&"auto"!=DrawioFile.SYNC?null:a.getCurrentEtag(),m=mxUtils.bind(this,function(b){a.saveLevel=5;try{var k=a.desc.mimeType!=this.xmlMimeType&&a.desc.mimeType!=this.mimeType&&a.desc.mimeType!=this.libraryMimeType,l=!0,m=null;try{m=window.setTimeout(mxUtils.bind(this, +function(){l=!1;t({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),3*this.ui.timeout)}catch(W){}this.executeRequest(this.createUploadRequest(a.getId(),C,d,c||b||k,e,b?null:g,x),mxUtils.bind(this,function(a){window.clearTimeout(m);l&&B(a)}),mxUtils.bind(this,function(b){window.clearTimeout(m);if(l){a.saveLevel=6;try{a.isConflict(b)?this.executeRequest({url:"/files/"+a.getId()+"?supportsTeamDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(c){a.saveLevel=7;try{if(null!= c&&c.etag==g)if(n<this.staleEtagMaxRetries){n++;var d=2*n*this.coolOff*(1+.1*(Math.random()-.5));window.setTimeout(p,d);"1"==urlParams.test&&EditorUi.debug("DriveClient: Stale Etag Detected","retry",n,"delay",d)}else{p(!0);try{EditorUi.logEvent({category:"STALE-ETAG-SAVE-FILE-"+a.getHash(),action:"rev_"+a.desc.headRevisionId+"-mod_"+a.desc.modifiedDate+"-size_"+a.getSize()+"-mime_"+a.desc.mimeType+(this.ui.editor.autosave?"":"-nosave")+(a.isAutosave()?"":"-noauto")+(a.changeListenerEnabled?"":"-nolisten")+ -(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}catch(ba){}}else"1"==urlParams.test&&c.headRevisionId==v&&EditorUi.debug("DriveClient: Remote Etag Changed","local",g,"remote",c.etag,"rev",a.desc.headRevisionId,"response",[c],"file",[a]),u(b,c)}catch(ba){f(ba)}}),mxUtils.bind(this,function(){u(b)})):u(b)}catch(ga){f(ga)}}}))}catch(W){f(W)}}),p=mxUtils.bind(this,function(b){a.saveLevel= -9;if(b)m(b);else{var c=!0,d=null;try{d=window.setTimeout(mxUtils.bind(this,function(){c=!1;u({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),3*this.ui.timeout)}catch(V){}this.executeRequest({url:"/files/"+a.getId()+"?supportsTeamDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(e){window.clearTimeout(d);if(c){a.saveLevel=10;try{null!=e&&e.headRevisionId==v?("1"==urlParams.test&&g!=e.etag&&EditorUi.debug("DriveClient: Preflight Etag Update","from",g,"to",e.etag,"rev", -a.desc.headRevisionId,"response",[e],"file",[a]),g=e.etag,m(b)):u({error:{code:412}},e)}catch(W){f(W)}}}),mxUtils.bind(this,function(b){window.clearTimeout(d);c&&(a.saveLevel=11,u(b))}))}});if(q&&null==b){a.saveLevel=8;var x=new Image;x.onload=mxUtils.bind(this,function(){try{var a=this.thumbnailWidth/x.width,b=document.createElement("canvas");b.width=this.thumbnailWidth;b.height=Math.floor(x.height*a);b.getContext("2d").drawImage(x,0,0,b.width,b.height);var c=b.toDataURL(),c=c.substring(c.indexOf(",")+ -1).replace(/\+/g,"-").replace(/\//g,"_");D.thumbnail={image:c,mimeType:"image/png"};p(!1)}catch(V){try{p(!1)}catch(W){f(W)}}});x.src="data:image/png;base64,"+d}else p(!1)}catch(X){f(X)}});q?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){F(a,!0)}),u,this.ui.getCurrentFile()!=a?x:null):F(x,!1)}catch(G){f(G)}});try{a.saveLevel=2,(g||q||a.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=D.mimeType&&"application/vnd.jgraph.mxfile"!=D.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth, -mxUtils.bind(this,function(a){try{var b=null;try{null!=a&&(b=a.toDataURL("image/png")),null!=b&&(b=b.length>this.maxThumbnailSize?null:b.substring(b.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_"))}catch(C){b=null}H(b,"image/png")}catch(C){f(C)}})))&&H(null,null,a.constructor!=DriveLibrary)}catch(x){f(x)}}else this.ui.editor.graph.reset(),u({message:mxResources.get("readOnly")})}catch(x){f(x)}}; +(a.inConflictState?"-conflict":"")+(a.invalidChecksum?"-invalid":""),label:(null!=this.user?"user_"+this.user.id:"nouser")+(null!=a.sync?"-client_"+a.sync.clientId:"-nosync")})}catch(ba){}}else"1"==urlParams.test&&c.headRevisionId==v&&EditorUi.debug("DriveClient: Remote Etag Changed","local",g,"remote",c.etag,"rev",a.desc.headRevisionId,"response",[c],"file",[a]),t(b,c)}catch(ba){f(ba)}}),mxUtils.bind(this,function(){t(b)})):t(b)}catch(ga){f(ga)}}}))}catch(W){f(W)}}),p=mxUtils.bind(this,function(b){a.saveLevel= +9;if(b)m(b);else{var c=!0,d=null;try{d=window.setTimeout(mxUtils.bind(this,function(){c=!1;t({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),3*this.ui.timeout)}catch(V){}this.executeRequest({url:"/files/"+a.getId()+"?supportsTeamDrives=true&fields="+this.catchupFields},mxUtils.bind(this,function(e){window.clearTimeout(d);if(c){a.saveLevel=10;try{null!=e&&e.headRevisionId==v?("1"==urlParams.test&&g!=e.etag&&EditorUi.debug("DriveClient: Preflight Etag Update","from",g,"to",e.etag,"rev", +a.desc.headRevisionId,"response",[e],"file",[a]),g=e.etag,m(b)):t({error:{code:412}},e)}catch(W){f(W)}}}),mxUtils.bind(this,function(b){window.clearTimeout(d);c&&(a.saveLevel=11,t(b))}))}});if(q&&null==b){a.saveLevel=8;var y=new Image;y.onload=mxUtils.bind(this,function(){try{var a=this.thumbnailWidth/y.width,b=document.createElement("canvas");b.width=this.thumbnailWidth;b.height=Math.floor(y.height*a);b.getContext("2d").drawImage(y,0,0,b.width,b.height);var c=b.toDataURL(),c=c.substring(c.indexOf(",")+ +1).replace(/\+/g,"-").replace(/\//g,"_");C.thumbnail={image:c,mimeType:"image/png"};p(!1)}catch(V){try{p(!1)}catch(W){f(W)}}});y.src="data:image/png;base64,"+d}else p(!1)}catch(X){f(X)}});q?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){G(a,!0)}),t,this.ui.getCurrentFile()!=a?y:null):G(y,!1)}catch(I){f(I)}});try{a.saveLevel=2,(g||q||a.constructor==DriveLibrary||!this.enableThumbnails||"0"==urlParams.thumb||null!=C.mimeType&&"application/vnd.jgraph.mxfile"!=C.mimeType.substring(0,29)||!this.ui.getThumbnail(this.thumbnailWidth, +mxUtils.bind(this,function(a){try{var b=null;try{null!=a&&(b=a.toDataURL("image/png")),null!=b&&(b=b.length>this.maxThumbnailSize?null:b.substring(b.indexOf(",")+1).replace(/\+/g,"-").replace(/\//g,"_"))}catch(D){b=null}H(b,"image/png")}catch(D){f(D)}})))&&H(null,null,a.constructor!=DriveLibrary)}catch(y){f(y)}}else this.ui.editor.graph.reset(),t({message:mxResources.get("readOnly")})}catch(y){f(y)}}; DriveClient.prototype.insertFile=function(a,c,d,b,e,g,k){g=null!=g?g:this.xmlMimeType;a={mimeType:g,title:a};null!=d&&(a.parents=[{kind:"drive#fileLink",id:d}]);this.executeRequest(this.createUploadRequest(null,a,c,!1,k),mxUtils.bind(this,function(a){g==this.libraryMimeType?b(new DriveLibrary(this.ui,c,a)):0==a?null!=e&&e({message:mxResources.get("errorSavingFile")}):b(new DriveFile(this.ui,c,a))}),e)}; DriveClient.prototype.createUploadRequest=function(a,c,d,b,e,g,k){e=null!=e?e:!1;var l={"Content-Type":'multipart/mixed; boundary="-------314159265358979323846"'};null!=g&&(l["If-Match"]=g);a={fullUrl:"https://content.googleapis.com/upload/drive/v2/files"+(null!=a?"/"+a:"")+"?uploadType=multipart&supportsTeamDrives=true&fields="+this.allFields,method:null!=a?"PUT":"POST",headers:l,params:"\r\n---------314159265358979323846\r\nContent-Type: application/json\r\n\r\n"+JSON.stringify(c)+"\r\n---------314159265358979323846\r\nContent-Type: application/octect-stream\r\nContent-Transfer-Encoding: base64\r\n\r\n"+ (null!=d?e?d:Base64.encode(d):"")+"\r\n---------314159265358979323846--"};b||(a.fullUrl+="&newRevision=false");k&&(a.fullUrl+="&pinned=true");return a}; @@ -9302,7 +9303,7 @@ a.rev+"&chrome=0&nav=1&layers=1&edit=_blank"+(null!=b?"&page="+b:""))+window.loc DropboxFile.prototype.doSave=function(a,c,d,b,e,g){var k=this.stat.name;this.stat.name=a;DrawioFile.prototype.save.apply(this,[null,mxUtils.bind(this,function(){this.stat.name=k;this.saveFile(a,c,d,b,e,g)}),b,e,g])}; DropboxFile.prototype.saveFile=function(a,c,d,b){this.isEditable()?this.savingFile?null!=b&&b({code:App.ERROR_BUSY}):(c=mxUtils.bind(this,function(c){if(c){var e=null,k=null;try{e=this.isModified;k=this.isModified();this.savingFile=!0;this.savingFileTime=new Date;var l=mxUtils.bind(this,function(){this.setModified(!1);this.isModified=function(){return k}});l();var n=mxUtils.bind(this,function(c){var f=this.stat.path_display.lastIndexOf("/"),f=1<f?this.stat.path_display.substring(1,f+1):null;this.ui.dropbox.saveFile(a, c,mxUtils.bind(this,function(a){this.savingFile=!1;this.isModified=e;this.stat=a;this.contentChanged();null!=d&&d()}),mxUtils.bind(this,function(a){this.savingFile=!1;this.isModified=e;this.setModified(k||this.isModified());if(null!=b){if(null!=a&&null!=a.retry){var c=a.retry;a.retry=function(){l();c()}}b(a)}}),f)});this.ui.useCanvasForExport&&/(\.png)$/i.test(this.getTitle())?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){n(this.ui.base64ToBlob(a,"image/png"))}),b,this.ui.getCurrentFile()!= -this?this.getData():null):n(this.getData())}catch(u){if(this.savingFile=!1,null!=e&&(this.isModified=e),null!=k&&this.setModified(k||this.isModified()),null!=b)b(u);else throw u;}}else null!=b&&b()}),this.getTitle()==a?c(!0):this.ui.dropbox.checkExists(a,c)):null!=d&&d()}; +this?this.getData():null):n(this.getData())}catch(t){if(this.savingFile=!1,null!=e&&(this.isModified=e),null!=k&&this.setModified(k||this.isModified()),null!=b)b(t);else throw t;}}else null!=b&&b()}),this.getTitle()==a?c(!0):this.ui.dropbox.checkExists(a,c)):null!=d&&d()}; DropboxFile.prototype.rename=function(a,c,d){this.ui.dropbox.renameFile(this,a,mxUtils.bind(this,function(b){this.hasSameExtension(a,this.getTitle())?(this.stat=b,this.descriptorChanged(),null!=c&&c()):(this.stat=b,this.descriptorChanged(),this.save(!0,c,d))}),d)};DropboxLibrary=function(a,c,d){DropboxFile.call(this,a,c,d)};mxUtils.extend(DropboxLibrary,DropboxFile);DropboxLibrary.prototype.isAutosave=function(){return!0};DropboxLibrary.prototype.doSave=function(a,c,d){this.saveFile(a,!1,c,d)};DropboxLibrary.prototype.open=function(){};DropboxClient=function(a){DrawioClient.call(this,a,"dbauth");this.client=new Dropbox({clientId:App.DROPBOX_APPKEY});this.client.setAccessToken(this.token)};mxUtils.extend(DropboxClient,DrawioClient);DropboxClient.prototype.appPath="/drawio/";DropboxClient.prototype.extension=".drawio";DropboxClient.prototype.writingFile=!1;DropboxClient.prototype.maxRetries=4; DropboxClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null;this.client.authTokenRevoke().then(mxUtils.bind(this,function(){this.client.setAccessToken(null)}))}; DropboxClient.prototype.updateUser=function(a,c,d){var b=!0,e=window.setTimeout(mxUtils.bind(this,function(){b=!1;c({code:App.ERROR_TIMEOUT})}),this.ui.timeout),g=this.client.usersGetCurrentAccount();g.then(mxUtils.bind(this,function(c){window.clearTimeout(e);b&&(this.setUser(new DrawioUser(c.account_id,c.email,c.name.display_name)),a())}));g["catch"](mxUtils.bind(this,function(g){window.clearTimeout(e);b&&(null==g||401!==g.status||d?c({message:mxResources.get("accessDenied")}):(this.setUser(null), @@ -9313,8 +9314,8 @@ DropboxClient.prototype.executePromise=function(a,c,d){var b=mxUtils.bind(this,f g?d({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){e(!0)},d)})}):this.authenticate(function(){b(!0)},d)))}))}),e=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){e(!0)},d,a):b(a)});null===this.client.getAccessToken()?this.authenticate(function(){e(!0)},d):e(!1)};DropboxClient.prototype.getLibrary=function(a,c,d){this.getFile(a,c,d,!0)}; DropboxClient.prototype.getFile=function(a,c,d,b){b=null!=b?b:!1;var e=/\.png$/i.test(a);if(/^https:\/\//i.test(a)||/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||/\.pdf$/i.test(a)||!this.ui.useCanvasForExport&&e){var g=mxUtils.bind(this,function(){var b=a.split("/");this.ui.convertFile(a,0<b.length?b[b.length-1]:a,null,this.extension,c,d)});null!=this.token?g():this.authenticate(g,d)}else g={path:"/"+a},null!=urlParams.rev&&(g.rev=urlParams.rev),this.readFile(g,mxUtils.bind(this,function(d,g){var k= e?d.lastIndexOf(","):-1,l=null;0<k&&(k=this.ui.extractGraphModelFromPng(d.substring(k+1)),null!=k&&0<k.length?d=k:l=new LocalFile(this,d,a,!0));c(null!=l?l:b?new DropboxLibrary(this.ui,d,g):new DropboxFile(this.ui,d,g))}),d,e)}; -DropboxClient.prototype.readFile=function(a,c,d,b){var e=mxUtils.bind(this,function(k){var l=!0,n=window.setTimeout(mxUtils.bind(this,function(){l=!1;d({code:App.ERROR_TIMEOUT})}),this.ui.timeout),u=this.client.filesGetMetadata({path:"/"+a.path.substring(1),include_deleted:!1});u.then(mxUtils.bind(this,function(a){}));u["catch"](function(a){window.clearTimeout(n);l&&null!=a&&409==a.status&&(l=!1,d({message:mxResources.get("fileNotFound")}))});u=this.client.filesDownload(a);u.then(mxUtils.bind(this, -function(a){window.clearTimeout(n);if(l){l=!1;try{var e=new FileReader;e.onload=mxUtils.bind(this,function(b){c(e.result,a)});b?e.readAsDataURL(a.fileBlob):e.readAsText(a.fileBlob)}catch(p){d(p)}}}));u["catch"](mxUtils.bind(this,function(a){window.clearTimeout(n);l&&(l=!1,null==a||500!=a.status&&400!=a.status&&401!=a.status?d({message:mxResources.get("error")+" "+a.status}):(this.client.setAccessToken(null),this.setUser(null),k?d({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){g(!0)}, +DropboxClient.prototype.readFile=function(a,c,d,b){var e=mxUtils.bind(this,function(k){var l=!0,n=window.setTimeout(mxUtils.bind(this,function(){l=!1;d({code:App.ERROR_TIMEOUT})}),this.ui.timeout),t=this.client.filesGetMetadata({path:"/"+a.path.substring(1),include_deleted:!1});t.then(mxUtils.bind(this,function(a){}));t["catch"](function(a){window.clearTimeout(n);l&&null!=a&&409==a.status&&(l=!1,d({message:mxResources.get("fileNotFound")}))});t=this.client.filesDownload(a);t.then(mxUtils.bind(this, +function(a){window.clearTimeout(n);if(l){l=!1;try{var e=new FileReader;e.onload=mxUtils.bind(this,function(b){c(e.result,a)});b?e.readAsDataURL(a.fileBlob):e.readAsText(a.fileBlob)}catch(p){d(p)}}}));t["catch"](mxUtils.bind(this,function(a){window.clearTimeout(n);l&&(l=!1,null==a||500!=a.status&&400!=a.status&&401!=a.status?d({message:mxResources.get("error")+" "+a.status}):(this.client.setAccessToken(null),this.setUser(null),k?d({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){g(!0)}, d)})}):this.authenticate(function(){e(!0)},d)))}))}),g=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){g(!0)},d,a):e(a)});null===this.client.getAccessToken()?this.authenticate(function(){g(!0)},d):g(!1)}; DropboxClient.prototype.checkExists=function(a,c,d){var b=this.client.filesGetMetadata({path:"/"+a.toLowerCase(),include_deleted:!1});this.executePromise(b,mxUtils.bind(this,function(b){d?c(!1,!0,b):this.ui.confirm(mxResources.get("replaceIt",[a]),function(){c(!0,!0,b)},function(){c(!1,!0,b)})}),function(a){c(!0,!1)})}; DropboxClient.prototype.renameFile=function(a,c,d,b){if(/[\\\/:\?\*"\|]/.test(c))b({message:mxResources.get("dropboxCharsNotAllowed")});else{if(null!=a&&null!=c){var e=a.stat.path_display.substring(1),g=e.lastIndexOf("/");0<g&&(c=e.substring(0,g+1)+c)}null!=a&&null!=c&&a.stat.path_lower.substring(1)!==c.toLowerCase()?this.checkExists(c,mxUtils.bind(this,function(e,g,n){e?(e=mxUtils.bind(this,function(e){e=this.client.filesMove({from_path:a.stat.path_display,to_path:"/"+c,autorename:!1});this.executePromise(e, @@ -9355,18 +9356,18 @@ a();return}}catch(g){}c({message:mxResources.get("unknownError")+" (Code: "+d.ge OneDriveClient.prototype.executeRequest=function(a,c,d){var b=mxUtils.bind(this,function(e){var g=!0,k=window.setTimeout(mxUtils.bind(this,function(){g=!1;d({code:App.ERROR_TIMEOUT,retry:b})}),this.ui.timeout);this.get(a,mxUtils.bind(this,function(a){window.clearTimeout(k);g&&(200<=a.getStatus()&&299>=a.getStatus()||404==a.getStatus()?(null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),c(a)):e||401!==a.getStatus()&&400!==a.getStatus()?d(this.parseRequestText(a)):this.authenticate(function(){b(!0)}, d,e))}),d)});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){b(!0)},d):b(!1)};OneDriveClient.prototype.checkToken=function(a){null==this.token||null==this.tokenRefreshThread||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(a,this.emptyFn):a()};OneDriveClient.prototype.getItemRef=function(a){var c=a.split("/");return 1<c.length?{driveId:c[0],id:c[1]}:{id:a}}; OneDriveClient.prototype.getItemURL=function(a,c){var d=a.split("/");return 1<d.length?(c?"":this.baseUrl)+"/drives/"+d[0]+"/items/"+d[1]:(c?"":this.baseUrl)+"/me/drive/items/"+a};OneDriveClient.prototype.getLibrary=function(a,c,d){this.getFile(a,c,d,!1,!0)}; -OneDriveClient.prototype.getFile=function(a,c,d,b,e){e=null!=e?e:!1;this.executeRequest(this.getItemURL(a),mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){var b=JSON.parse(a.getText()),g=/\.png$/i.test(b.name);if(/\.v(dx|sdx?)$/i.test(b.name)||/\.gliffy$/i.test(b.name)||/\.pdf$/i.test(b.name)||!this.ui.useCanvasForExport&&g)this.ui.convertFile(b["@microsoft.graph.downloadUrl"],b.name,null!=b.file?b.file.mimeType:null,this.extension,c,d);else{var n=!0,u=window.setTimeout(mxUtils.bind(this, -function(){n=!1;d({code:App.ERROR_TIMEOUT})}),this.ui.timeout);this.ui.loadUrl(b["@microsoft.graph.downloadUrl"],mxUtils.bind(this,function(a){try{if(window.clearTimeout(u),n){var f=g?a.lastIndexOf(","):-1,k=null;if(0<f){var l=this.ui.extractGraphModelFromPng(a.substring(f+1));null!=l&&0<l.length?a=l:k=new LocalFile(this.ui,a,b.name,!0)}else if("data:image/png;base64,PG14ZmlsZS"==a.substring(0,32)){var v=a.substring(22);a=window.atob&&!mxClient.IS_SF?atob(v):Base64.decode(v)}Graph.fileSupport&&(new XMLHttpRequest).upload&& +OneDriveClient.prototype.getFile=function(a,c,d,b,e){e=null!=e?e:!1;this.executeRequest(this.getItemURL(a),mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){var b=JSON.parse(a.getText()),g=/\.png$/i.test(b.name);if(/\.v(dx|sdx?)$/i.test(b.name)||/\.gliffy$/i.test(b.name)||/\.pdf$/i.test(b.name)||!this.ui.useCanvasForExport&&g)this.ui.convertFile(b["@microsoft.graph.downloadUrl"],b.name,null!=b.file?b.file.mimeType:null,this.extension,c,d);else{var n=!0,t=window.setTimeout(mxUtils.bind(this, +function(){n=!1;d({code:App.ERROR_TIMEOUT})}),this.ui.timeout);this.ui.loadUrl(b["@microsoft.graph.downloadUrl"],mxUtils.bind(this,function(a){try{if(window.clearTimeout(t),n){var f=g?a.lastIndexOf(","):-1,k=null;if(0<f){var l=this.ui.extractGraphModelFromPng(a.substring(f+1));null!=l&&0<l.length?a=l:k=new LocalFile(this.ui,a,b.name,!0)}else if("data:image/png;base64,PG14ZmlsZS"==a.substring(0,32)){var v=a.substring(22);a=window.atob&&!mxClient.IS_SF?atob(v):Base64.decode(v)}Graph.fileSupport&&(new XMLHttpRequest).upload&& this.ui.isRemoteFileFormat(a,b["@microsoft.graph.downloadUrl"])?this.ui.parseFile(new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){try{4==a.readyState&&(200<=a.status&&299>=a.status?c(new LocalFile(this.ui,a.responseText,b.name+this.extension,!0)):null!=d&&d({message:mxResources.get("errorLoadingFile")}))}catch(z){if(null!=d)d(z);else throw z;}}),b.name):null!=k?c(k):e?c(new OneDriveLibrary(this.ui,a,b)):c(new OneDriveFile(this.ui,a,b))}}catch(q){if(null!=d)d(q);else throw q; -}}),mxUtils.bind(this,function(a){window.clearTimeout(u);n&&d(this.parseRequestText(a))}),g||null!=b.file&&null!=b.file.mimeType&&("image/"==b.file.mimeType.substring(0,6)||"application/pdf"==b.file.mimeType))}}else d(this.parseRequestText(a))}),d)}; +}}),mxUtils.bind(this,function(a){window.clearTimeout(t);n&&d(this.parseRequestText(a))}),g||null!=b.file&&null!=b.file.mimeType&&("image/"==b.file.mimeType.substring(0,6)||"application/pdf"==b.file.mimeType))}}else d(this.parseRequestText(a))}),d)}; OneDriveClient.prototype.renameFile=function(a,c,d,b){null!=a&&null!=c&&(this.isValidFilename(c)?this.checkExists(a.getParentId(),c,!1,mxUtils.bind(this,function(e){e?this.writeFile(this.getItemURL(a.getId()),JSON.stringify({name:c}),"PATCH","application/json",d,b):b()})):b({message:this.invalidFilenameRegExs[0].test(c)?mxResources.get("oneDriveCharsNotAllowed"):mxResources.get("oneDriveInvalidDeviceName")}))}; OneDriveClient.prototype.moveFile=function(a,c,d,b){c=this.getItemRef(c);var e=this.getItemRef(a);c.driveId!=e.driveId?b({message:mxResources.get("cannotMoveOneDrive",null,"Moving a file between accounts is not supported yet.")}):this.writeFile(this.getItemURL(a),JSON.stringify({parentReference:c}),"PATCH","application/json",d,b)};OneDriveClient.prototype.insertLibrary=function(a,c,d,b,e){this.insertFile(a,c,d,b,!0,e)}; OneDriveClient.prototype.insertFile=function(a,c,d,b,e,g){this.isValidFilename(a)?(e=null!=e?e:!1,this.checkExists(g,a,!0,mxUtils.bind(this,function(k){k?(k="/me/drive/root",null!=g&&(k=this.getItemURL(g,!0)),k=this.baseUrl+k+"/children/"+encodeURIComponent(a)+"/content",this.writeFile(k,c,"PUT",null,mxUtils.bind(this,function(a){e?d(new OneDriveLibrary(this.ui,c,a)):d(new OneDriveFile(this.ui,c,a))}),b)):b()}))):b({message:this.invalidFilenameRegExs[0].test(a)?mxResources.get("oneDriveCharsNotAllowed"): mxResources.get("oneDriveInvalidDeviceName")})}; OneDriveClient.prototype.checkExists=function(a,c,d,b){var e="/me/drive/root";null!=a&&(e=this.getItemURL(a,!0));this.executeRequest(this.baseUrl+e+"/children/"+encodeURIComponent(c),mxUtils.bind(this,function(a){404==a.getStatus()?b(!0):d?(this.ui.spinner.stop(),this.ui.confirm(mxResources.get("replaceIt",[c]),function(){b(!0)},function(){b(!1)})):(this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){b(!1)}))}),function(a){b(!1)}, !0)};OneDriveClient.prototype.saveFile=function(a,c,d,b){try{var e=a.getData(),g=mxUtils.bind(this,function(g){var k=this.getItemURL(a.getId());this.writeFile(k+"/content/",g,"PUT",null,mxUtils.bind(this,function(a){c(a,e)}),d,b)});this.ui.useCanvasForExport&&/(\.png)$/i.test(a.meta.name)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){g(this.ui.base64ToBlob(a,"image/png"))}),d,this.ui.getCurrentFile()!=a?e:null):g(e)}catch(k){d(k)}}; -OneDriveClient.prototype.writeFile=function(a,c,d,b,e,g,k){try{if(null!=a&&null!=c)if(4E6<=c.length)g({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(c.length)+" / 4 MB)"});else{var l=mxUtils.bind(this,function(n){try{var u=!0,f=null;try{f=window.setTimeout(mxUtils.bind(this,function(){u=!1;g({code:App.ERROR_TIMEOUT,retry:l})}),this.ui.timeout)}catch(p){}var m=new mxXmlRequest(a,c,d);m.setRequestHeaders=mxUtils.bind(this,function(a,c){a.setRequestHeader("Content-Type",b||" "); -a.setRequestHeader("Authorization","Bearer "+this.token);null!=k&&a.setRequestHeader("If-Match",k)});m.send(mxUtils.bind(this,function(a){window.clearTimeout(f);u&&(200<=a.getStatus()&&299>=a.getStatus()?(null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),e(JSON.parse(a.getText()))):n||401!==a.getStatus()?g(this.parseRequestText(a),a):this.authenticate(function(){l(!0)},g,n))}),mxUtils.bind(this,function(a){window.clearTimeout(f);u&&g(this.parseRequestText(a))}))}catch(p){g(p)}});null== +OneDriveClient.prototype.writeFile=function(a,c,d,b,e,g,k){try{if(null!=a&&null!=c)if(4E6<=c.length)g({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(c.length)+" / 4 MB)"});else{var l=mxUtils.bind(this,function(n){try{var t=!0,f=null;try{f=window.setTimeout(mxUtils.bind(this,function(){t=!1;g({code:App.ERROR_TIMEOUT,retry:l})}),this.ui.timeout)}catch(p){}var m=new mxXmlRequest(a,c,d);m.setRequestHeaders=mxUtils.bind(this,function(a,c){a.setRequestHeader("Content-Type",b||" "); +a.setRequestHeader("Authorization","Bearer "+this.token);null!=k&&a.setRequestHeader("If-Match",k)});m.send(mxUtils.bind(this,function(a){window.clearTimeout(f);t&&(200<=a.getStatus()&&299>=a.getStatus()?(null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0),e(JSON.parse(a.getText()))):n||401!==a.getStatus()?g(this.parseRequestText(a),a):this.authenticate(function(){l(!0)},g,n))}),mxUtils.bind(this,function(a){window.clearTimeout(f);t&&g(this.parseRequestText(a))}))}catch(p){g(p)}});null== this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(function(){l(!0)},g):l(!1)}else g({message:mxResources.get("unknownError")})}catch(n){g(n)}};OneDriveClient.prototype.parseRequestText=function(a){var c={message:mxResources.get("unknownError")};try{c=JSON.parse(a.getText())}catch(d){}return c};OneDriveClient.prototype.pickLibrary=function(a){this.pickFile(function(c){a(c)})}; OneDriveClient.prototype.pickFolder=function(a,c){var d=mxUtils.bind(this,function(b){var c=mxUtils.bind(this,function(){OneDrive.save({clientId:this.clientId,action:"query",openInNewWindow:!0,advanced:{endpointHint:mxClient.IS_IE11?null:this.endpointHint,redirectUri:this.pickerRedirectUri,queryParameters:"select=id,name,parentReference",accessToken:this.token,isConsumerAccount:!1},success:mxUtils.bind(this,function(b){a(b);mxClient.IS_IE11&&(this.token=b.accessToken)}),cancel:mxUtils.bind(this,function(){}), error:mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a)})})});b?c():this.ui.confirm(mxResources.get("useRootFolder"),mxUtils.bind(this,function(){a({value:[{id:"root",name:"root",parentReference:{driveId:"me"}}]})}),c,mxResources.get("yes"),mxResources.get("noPickFolder")+"...",!0);null==this.user&&this.updateUser(this.emptyFn,this.emptyFn,!0)});null==this.token||6E4>this.tokenExpiresOn-Date.now()?this.authenticate(mxUtils.bind(this,function(){d(!1)}),this.emptyFn):d(c)}; @@ -9379,41 +9380,41 @@ GitHubFile.prototype.save=function(a,c,d,b,e,g){this.doSave(this.getTitle(),c,d, GitHubFile.prototype.saveFile=function(a,c,d,b,e,g,k){if(this.isEditable())if(this.savingFile)null!=b&&b({code:App.ERROR_BUSY});else{var l=mxUtils.bind(this,function(c){if(this.getTitle()==a){var e=null,f=null;try{e=this.isModified;f=this.isModified();this.savingFile=!0;this.savingFileTime=new Date;var k=mxUtils.bind(this,function(){this.setModified(!1);this.isModified=function(){return f}}),l=this.getCurrentEtag(),n=this.data;k();this.peer.saveFile(this,mxUtils.bind(this,function(a){this.savingFile= !1;this.isModified=e;this.setDescriptorEtag(this.meta,a);this.fileSaved(n,l,mxUtils.bind(this,function(){this.contentChanged();null!=d&&d()}),b)}),mxUtils.bind(this,function(a){this.savingFile=!1;this.isModified=e;this.setModified(f||this.isModified());if(this.isConflict(a))this.inConflictState=!0,null!=b&&b({commitMessage:c});else if(null!=b){if(null!=a&&null!=a.retry){var d=a.retry;a.retry=function(){k();d()}}b(a)}}),g,c)}catch(v){if(this.savingFile=!1,null!=e&&(this.isModified=e),null!=f&&this.setModified(f|| this.isModified()),null!=b)b(v);else throw v;}}else this.savingFile=!0,this.savingFileTime=new Date,this.ui.pickFolder(this.getMode(),mxUtils.bind(this,function(e){this.peer.insertFile(a,this.getData(),mxUtils.bind(this,function(a){this.savingFile=!1;null!=d&&d();this.ui.fileLoaded(a)}),mxUtils.bind(this,function(){this.savingFile=!1;null!=b&&b()}),!1,e,c)}))});null!=k?l(k):this.peer.showCommitDialog(this.meta.name,null==this.getDescriptorEtag(this.meta)||this.meta.isNew,mxUtils.bind(this,function(a){l(a)}), -b)}else null!=d&&d()};GitHubLibrary=function(a,c,d){GitHubFile.call(this,a,c,d)};mxUtils.extend(GitHubLibrary,GitHubFile);GitHubLibrary.prototype.doSave=function(a,c,d){this.saveFile(a,!1,c,d)};GitHubLibrary.prototype.open=function(){};GitHubClient=function(a,c){DrawioClient.call(this,a,c||"ghauth")};mxUtils.extend(GitHubClient,DrawioClient);GitHubClient.prototype.clientId="test.draw.io"==window.location.hostname?"23bc97120b9035515661":"89c9e4624ca416554489";GitHubClient.prototype.scope="repo";GitHubClient.prototype.extension=".drawio";GitHubClient.prototype.baseUrl="https://api.github.com";GitHubClient.prototype.maxFileSize=1E6; -GitHubClient.prototype.updateUser=function(a,c,d){var b=!0,e=window.setTimeout(mxUtils.bind(this,function(){b=!1;c({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout),g=new mxXmlRequest(this.baseUrl+"/user",null,"GET"),k=this.token;g.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization","token "+k)};g.send(mxUtils.bind(this,function(){window.clearTimeout(e);b&&(401===g.getStatus()?d?c({message:mxResources.get("accessDenied")}):(this.logout(),this.authenticate(mxUtils.bind(this, +b)}else null!=d&&d()};GitHubLibrary=function(a,c,d){GitHubFile.call(this,a,c,d)};mxUtils.extend(GitHubLibrary,GitHubFile);GitHubLibrary.prototype.doSave=function(a,c,d){this.saveFile(a,!1,c,d)};GitHubLibrary.prototype.open=function(){};GitHubClient=function(a,c){DrawioClient.call(this,a,c||"ghauth")};mxUtils.extend(GitHubClient,DrawioClient);GitHubClient.prototype.clientId="test.draw.io"==window.location.hostname?"23bc97120b9035515661":"89c9e4624ca416554489";GitHubClient.prototype.scope="repo";GitHubClient.prototype.extension=".drawio";GitHubClient.prototype.baseUrl="https://api.github.com";GitHubClient.prototype.maxFileSize=1E6;GitHubClient.prototype.authToken="token"; +GitHubClient.prototype.updateUser=function(a,c,d){var b=!0,e=window.setTimeout(mxUtils.bind(this,function(){b=!1;c({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout),g=new mxXmlRequest(this.baseUrl+"/user",null,"GET"),k=this.authToken+" "+this.token;g.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization",k)};g.send(mxUtils.bind(this,function(){window.clearTimeout(e);b&&(401===g.getStatus()?d?c({message:mxResources.get("accessDenied")}):(this.logout(),this.authenticate(mxUtils.bind(this, function(){this.updateUser(a,c,!0)}),c)):200>g.getStatus()||300<=g.getStatus()?c({message:mxResources.get("accessDenied")}):(this.setUser(this.createUser(JSON.parse(g.getText()))),a()))}),c)};GitHubClient.prototype.createUser=function(a){return new DrawioUser(a.id,a.email,a.name)}; GitHubClient.prototype.authenticate=function(a,c){if(null==window.onGitHubCallback){var d=mxUtils.bind(this,function(){var b=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(e,g){null!=window.open("https://github.com/login/oauth/authorize?client_id="+this.clientId+"&scope="+this.scope,"ghauth")?window.onGitHubCallback=mxUtils.bind(this,function(k,l){if(b)if(window.onGitHubCallback=null,b=!1,null==k)c({message:mxResources.get("accessDenied"),retry:d});else{var n=mxUtils.bind(this,function(){var b= -!0,d=window.setTimeout(mxUtils.bind(this,function(){b=!1;c({code:App.ERROR_TIMEOUT,retry:n})}),this.ui.timeout);mxUtils.get("/github?client_id="+this.clientId+"&code="+k,mxUtils.bind(this,function(f){window.clearTimeout(d);if(b)try{if(200>f.getStatus()||300<=f.getStatus())c({message:mxResources.get("cannotLogin")});else{null!=g&&g();var k=f.getText();this.token=k.substring(k.indexOf("=")+1,k.indexOf("&"));this.setUser(null);e&&this.setPersistentToken(this.token);a()}}catch(t){c(t)}finally{null!=l&& +!0,d=window.setTimeout(mxUtils.bind(this,function(){b=!1;c({code:App.ERROR_TIMEOUT,retry:n})}),this.ui.timeout);mxUtils.get("/github?client_id="+this.clientId+"&code="+k,mxUtils.bind(this,function(f){window.clearTimeout(d);if(b)try{if(200>f.getStatus()||300<=f.getStatus())c({message:mxResources.get("cannotLogin")});else{null!=g&&g();var k=f.getText();this.token=k.substring(k.indexOf("=")+1,k.indexOf("&"));this.setUser(null);e&&this.setPersistentToken(this.token);a()}}catch(u){c(u)}finally{null!=l&& l.close()}}))});n()}else null!=l&&l.close()}):c({message:mxResources.get("serviceUnavailableOrBlocked"),retry:d})}),mxUtils.bind(this,function(){b&&(window.onGitHubCallback=null,b=!1,c({message:mxResources.get("accessDenied"),retry:d}))}))});d()}else c({code:App.ERROR_BUSY})};GitHubClient.prototype.getErrorMessage=function(a,c){try{var d=JSON.parse(a.getText());null!=d&&null!=d.message&&(c=d.message)}catch(b){}return c}; -GitHubClient.prototype.executeRequest=function(a,c,d,b){var e=mxUtils.bind(this,function(k){var l=!0,n=window.setTimeout(mxUtils.bind(this,function(){l=!1;d({code:App.ERROR_TIMEOUT,retry:g})}),this.ui.timeout),u=this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization","token "+u)};a.send(mxUtils.bind(this,function(){window.clearTimeout(n);if(l)if(200<=a.getStatus()&&299>=a.getStatus()||b&&404==a.getStatus())c(a);else if(401===a.getStatus())k?d({code:a.getStatus(),message:mxResources.get("accessDenied"), -retry:mxUtils.bind(this,function(){this.authenticate(function(){g(!0)},d)})}):this.authenticate(function(){e(!0)},d);else if(403===a.getStatus()){var f=!1;try{var m=JSON.parse(a.getText());null!=m&&null!=m.errors&&0<m.errors.length&&(f="too_large"==m.errors[0].code)}catch(p){}d({message:mxResources.get(f?"drawingTooLarge":"forbidden")})}else 404===a.getStatus()?d({code:a.getStatus(),message:this.getErrorMessage(a,mxResources.get("fileNotFound"))}):409===a.getStatus()?d({code:a.getStatus(),status:409}): -d({code:a.getStatus(),message:this.getErrorMessage(a,mxResources.get("error")+" "+a.getStatus())})}),d)}),g=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){g(!0)},d,a):e(a)});null==this.token?this.authenticate(function(){g(!0)},d):g(!1)};GitHubClient.prototype.getLibrary=function(a,c,d){this.getFile(a,c,d,!0)}; +GitHubClient.prototype.executeRequest=function(a,c,d,b){var e=mxUtils.bind(this,function(k){var l=!0,n=window.setTimeout(mxUtils.bind(this,function(){l=!1;d({code:App.ERROR_TIMEOUT,retry:g})}),this.ui.timeout),t=this.authToken+" "+this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization",t)};a.send(mxUtils.bind(this,function(){window.clearTimeout(n);if(l)if(200<=a.getStatus()&&299>=a.getStatus()||b&&404==a.getStatus())c(a);else if(401===a.getStatus())k?d({code:a.getStatus(), +message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){g(!0)},d)})}):this.authenticate(function(){e(!0)},d);else if(403===a.getStatus()){var f=!1;try{var m=JSON.parse(a.getText());null!=m&&null!=m.errors&&0<m.errors.length&&(f="too_large"==m.errors[0].code)}catch(p){}d({message:mxResources.get(f?"drawingTooLarge":"forbidden")})}else 404===a.getStatus()?d({code:a.getStatus(),message:this.getErrorMessage(a,mxResources.get("fileNotFound"))}):409===a.getStatus()? +d({code:a.getStatus(),status:409}):d({code:a.getStatus(),message:this.getErrorMessage(a,mxResources.get("error")+" "+a.getStatus())})}),d)}),g=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){g(!0)},d,a):e(a)});null==this.token?this.authenticate(function(){g(!0)},d):g(!1)};GitHubClient.prototype.getLibrary=function(a,c,d){this.getFile(a,c,d,!0)}; GitHubClient.prototype.getSha=function(a,c,d,b,e,g){var k="&t="+(new Date).getTime();a=new mxXmlRequest(this.baseUrl+"/repos/"+a+"/"+c+"/contents/"+d+"?ref="+b+k,null,"HEAD");this.executeRequest(a,mxUtils.bind(this,function(a){try{e(a.request.getResponseHeader("Etag").match(/"([^"]+)"/)[1])}catch(n){g(n)}}),g)}; -GitHubClient.prototype.getFile=function(a,c,d,b,e){b=null!=b?b:!1;var g=a.split("/"),k=g[0],l=g[1],n=g[2];a=g.slice(3,g.length).join("/");g=/\.png$/i.test(a);if(!e&&(/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||/\.pdf$/i.test(a)||!this.ui.useCanvasForExport&&g))if(null!=this.token){e=this.baseUrl+"/repos/"+k+"/"+l+"/contents/"+a+"?ref="+n;var u={Authorization:"token "+this.token},g=a.split("/");this.ui.convertFile(e,0<g.length?g[g.length-1]:a,null,this.extension,c,d,null,u)}else d({message:mxResources.get("accessDenied")}); +GitHubClient.prototype.getFile=function(a,c,d,b,e){b=null!=b?b:!1;var g=a.split("/"),k=g[0],l=g[1],n=g[2];a=g.slice(3,g.length).join("/");g=/\.png$/i.test(a);if(!e&&(/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||/\.pdf$/i.test(a)||!this.ui.useCanvasForExport&&g))if(null!=this.token){e=this.baseUrl+"/repos/"+k+"/"+l+"/contents/"+a+"?ref="+n;var t={Authorization:"token "+this.token},g=a.split("/");this.ui.convertFile(e,0<g.length?g[g.length-1]:a,null,this.extension,c,d,null,t)}else d({message:mxResources.get("accessDenied")}); else g="&t="+(new Date).getTime(),a=new mxXmlRequest(this.baseUrl+"/repos/"+k+"/"+l+"/contents/"+a+"?ref="+n+g,null,"GET"),this.executeRequest(a,mxUtils.bind(this,function(a){try{c(this.createGitHubFile(k,l,n,JSON.parse(a.getText()),b))}catch(m){d(m)}}),d)}; GitHubClient.prototype.createGitHubFile=function(a,c,d,b,e){a={org:a,repo:c,ref:d,name:b.name,path:b.path,sha:b.sha,html_url:b.html_url,download_url:b.download_url};c=b.content;"base64"===b.encoding&&(/\.jpe?g$/i.test(b.name)?c="data:image/jpeg;base64,"+c:/\.gif$/i.test(b.name)?c="data:image/gif;base64,"+c:/\.png$/i.test(b.name)?(b=this.ui.extractGraphModelFromPng(c),c=null!=b&&0<b.length?b:"data:image/png;base64,"+c):c=Base64.decode(c));return e?new GitHubLibrary(this.ui,c,a):new GitHubFile(this.ui, c,a)};GitHubClient.prototype.insertLibrary=function(a,c,d,b,e){this.insertFile(a,c,d,b,!0,e,!1)}; -GitHubClient.prototype.insertFile=function(a,c,d,b,e,g,k){e=null!=e?e:!1;g=g.split("/");var l=g[0],n=g[1],u=g[2],f=g.slice(3,g.length).join("/");0<f.length&&(f+="/");f+=a;this.checkExists(l+"/"+n+"/"+u+"/"+f,!0,mxUtils.bind(this,function(g,p){g?e?(k||(c=Base64.encode(c)),this.showCommitDialog(a,!0,mxUtils.bind(this,function(a){this.writeFile(l,n,u,f,a,c,p,mxUtils.bind(this,function(a){try{var c=JSON.parse(a.getText());d(this.createGitHubFile(l,n,u,c.content,e))}catch(z){b(z)}}),b)}),b)):d(new GitHubFile(this.ui, -c,{org:l,repo:n,ref:u,name:a,path:f,sha:p,isNew:!0})):b()}))};GitHubClient.prototype.showCommitDialog=function(a,c,d,b){var e=this.ui.spinner.pause();a=new FilenameDialog(this.ui,mxResources.get(c?"addedFile":"updateFile",[a]),mxResources.get("ok"),mxUtils.bind(this,function(a){e();d(a)}),mxResources.get("commitMessage"),null,null,null,null,mxUtils.bind(this,function(){b()}),null,280);this.ui.showDialog(a.container,400,80,!0,!1);a.init()}; +GitHubClient.prototype.insertFile=function(a,c,d,b,e,g,k){e=null!=e?e:!1;g=g.split("/");var l=g[0],n=g[1],t=g[2],f=g.slice(3,g.length).join("/");0<f.length&&(f+="/");f+=a;this.checkExists(l+"/"+n+"/"+t+"/"+f,!0,mxUtils.bind(this,function(g,p){g?e?(k||(c=Base64.encode(c)),this.showCommitDialog(a,!0,mxUtils.bind(this,function(a){this.writeFile(l,n,t,f,a,c,p,mxUtils.bind(this,function(a){try{var c=JSON.parse(a.getText());d(this.createGitHubFile(l,n,t,c.content,e))}catch(z){b(z)}}),b)}),b)):d(new GitHubFile(this.ui, +c,{org:l,repo:n,ref:t,name:a,path:f,sha:p,isNew:!0})):b()}))};GitHubClient.prototype.showCommitDialog=function(a,c,d,b){var e=this.ui.spinner.pause();a=new FilenameDialog(this.ui,mxResources.get(c?"addedFile":"updateFile",[a]),mxResources.get("ok"),mxUtils.bind(this,function(a){e();d(a)}),mxResources.get("commitMessage"),null,null,null,null,mxUtils.bind(this,function(){b()}),null,280);this.ui.showDialog(a.container,400,80,!0,!1);a.init()}; GitHubClient.prototype.writeFile=function(a,c,d,b,e,g,k,l,n){g.length>=this.maxFileSize?n({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(g.length)+" / 1 MB)"}):(d={path:b,branch:decodeURIComponent(d),message:e,content:g},null!=k&&(d.sha=k),a=new mxXmlRequest(this.baseUrl+"/repos/"+a+"/"+c+"/contents/"+b,JSON.stringify(d),"PUT"),this.executeRequest(a,mxUtils.bind(this,function(a){l(a)}),mxUtils.bind(this,function(a){404==a.code&&(a.helpLink="https://github.com/settings/connections/applications/"+ this.clientId,a.code=null);n(a)})))}; GitHubClient.prototype.checkExists=function(a,c,d){var b=a.split("/"),e=b[0],g=b[1],k=b[2];a=b.slice(3,b.length).join("/");this.getSha(e,g,a,k,mxUtils.bind(this,function(b){if(c){var e=this.ui.spinner.pause();this.ui.confirm(mxResources.get("replaceIt",[a]),function(){e();d(!0,b)},function(){e();d(!1)})}else this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){d(!1)})}),mxUtils.bind(this,function(a){d(!0)}),null,!0)}; -GitHubClient.prototype.saveFile=function(a,c,d,b,e){var g=a.meta.org,k=a.meta.repo,l=a.meta.ref,n=a.meta.path,u=mxUtils.bind(this,function(b,f){this.writeFile(g,k,l,n,e,f,b,mxUtils.bind(this,function(b){delete a.meta.isNew;c(JSON.parse(b.getText()).content.sha)}),mxUtils.bind(this,function(a){d(a)}))}),f=mxUtils.bind(this,function(){this.ui.useCanvasForExport&&/(\.png)$/i.test(n)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){u(a.meta.sha,b)}),d,this.ui.getCurrentFile()!=a?a.getData():null): -u(a.meta.sha,Base64.encode(a.getData()))});b?this.getSha(g,k,n,l,mxUtils.bind(this,function(b){a.meta.sha=b;f()}),d):f()};GitHubClient.prototype.pickLibrary=function(a){this.pickFile(a)};GitHubClient.prototype.pickFolder=function(a){this.showGitHubDialog(!1,a)};GitHubClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("H"+encodeURIComponent(a))});this.showGitHubDialog(!0,a)}; +GitHubClient.prototype.saveFile=function(a,c,d,b,e){var g=a.meta.org,k=a.meta.repo,l=a.meta.ref,n=a.meta.path,t=mxUtils.bind(this,function(b,f){this.writeFile(g,k,l,n,e,f,b,mxUtils.bind(this,function(b){delete a.meta.isNew;c(JSON.parse(b.getText()).content.sha)}),mxUtils.bind(this,function(a){d(a)}))}),f=mxUtils.bind(this,function(){this.ui.useCanvasForExport&&/(\.png)$/i.test(n)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(b){t(a.meta.sha,b)}),d,this.ui.getCurrentFile()!=a?a.getData():null): +t(a.meta.sha,Base64.encode(a.getData()))});b?this.getSha(g,k,n,l,mxUtils.bind(this,function(b){a.meta.sha=b;f()}),d):f()};GitHubClient.prototype.pickLibrary=function(a){this.pickFile(a)};GitHubClient.prototype.pickFolder=function(a){this.showGitHubDialog(!1,a)};GitHubClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("H"+encodeURIComponent(a))});this.showGitHubDialog(!0,a)}; GitHubClient.prototype.showGitHubDialog=function(a,c){var d=null,b=null,e=null,g=null,k=document.createElement("div");k.style.whiteSpace="nowrap";k.style.overflow="hidden";k.style.height="304px";var l=document.createElement("h3");mxUtils.write(l,mxResources.get(a?"selectFile":"selectFolder"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";k.appendChild(l);var n=document.createElement("div");n.style.whiteSpace="nowrap";n.style.border="1px solid lightgray";n.style.boxSizing= -"border-box";n.style.padding="4px";n.style.overflow="auto";n.style.lineHeight="1.2em";n.style.height="274px";k.appendChild(n);var u=document.createElement("div");u.style.textOverflow="ellipsis";u.style.boxSizing="border-box";u.style.overflow="hidden";u.style.padding="4px";u.style.width="100%";var f=new CustomDialog(this.ui,k,mxUtils.bind(this,function(){c(d+"/"+b+"/"+encodeURIComponent(e)+"/"+g)}));this.ui.showDialog(f.container,420,360,!0,!0);a&&f.okButton.parentNode.removeChild(f.okButton);var m= -mxUtils.bind(this,function(a,b,c){var d=document.createElement("a");d.setAttribute("href","javascript:void(0);");d.setAttribute("title",a);mxUtils.write(d,a);mxEvent.addListener(d,"click",b);null!=c&&(a=u.cloneNode(),a.style.padding=c,a.appendChild(d),d=a);return d}),p=mxUtils.bind(this,function(a){var c=document.createElement("div");c.style.marginBottom="8px";c.appendChild(m(d+"/"+b,mxUtils.bind(this,function(){g=null;D()})));a||(mxUtils.write(c," / "),c.appendChild(m(decodeURIComponent(e),mxUtils.bind(this, -function(){g=null;y()}))));if(null!=g&&0<g.length){var f=g.split("/");for(a=0;a<f.length;a++)(function(a){mxUtils.write(c," / ");c.appendChild(m(f[a],mxUtils.bind(this,function(){g=f.slice(0,a+1).join("/");z()})))})(a)}n.appendChild(c)}),t=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(g=e=b=d=null,D()):this.ui.hideDialog()}))}),v=null,q=null,z=mxUtils.bind(this,function(k){null==k&&(n.innerHTML="",k=1);var l=new mxXmlRequest(this.baseUrl+ -"/repos/"+d+"/"+b+"/contents/"+g+"?ref="+encodeURIComponent(e)+"&per_page=100&page="+k,null,"GET");this.ui.spinner.spin(n,mxResources.get("loading"));f.okButton.removeAttribute("disabled");null!=q&&(mxEvent.removeListener(n,"scroll",q),q=null);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var A=mxUtils.bind(this,function(){z(k+1)});mxEvent.addListener(v, -"click",A);this.executeRequest(l,mxUtils.bind(this,function(f){this.ui.spinner.stop();1==k&&(p(),n.appendChild(m("../ [Up]",mxUtils.bind(this,function(){if(""==g)g=null,D();else{var a=g.split("/");g=a.slice(0,a.length-1).join("/");z()}}),"4px")));var l=JSON.parse(f.getText());if(null==l||0==l.length)mxUtils.write(n,mxResources.get("noFiles"));else{var x=!0,q=0;f=mxUtils.bind(this,function(f){for(var k=0;k<l.length;k++)mxUtils.bind(this,function(k,l){if(f==("dir"==k.type)){var p=u.cloneNode();p.style.backgroundColor= -x?"#eeeeee":"";x=!x;var A=document.createElement("img");A.src=IMAGE_PATH+"/"+("dir"==k.type?"folder.png":"file.png");A.setAttribute("align","absmiddle");A.style.marginRight="4px";A.style.marginTop="-4px";A.width=20;p.appendChild(A);p.appendChild(m(k.name+("dir"==k.type?"/":""),mxUtils.bind(this,function(){"dir"==k.type?(g=k.path,z()):a&&"file"==k.type&&(this.ui.hideDialog(),c(d+"/"+b+"/"+encodeURIComponent(e)+"/"+k.path))})));n.appendChild(p);q++}})(l[k],k)});f(!0);a&&f(!1)}}),t,!0)}),y=mxUtils.bind(this, +"border-box";n.style.padding="4px";n.style.overflow="auto";n.style.lineHeight="1.2em";n.style.height="274px";k.appendChild(n);var t=document.createElement("div");t.style.textOverflow="ellipsis";t.style.boxSizing="border-box";t.style.overflow="hidden";t.style.padding="4px";t.style.width="100%";var f=new CustomDialog(this.ui,k,mxUtils.bind(this,function(){c(d+"/"+b+"/"+encodeURIComponent(e)+"/"+g)}));this.ui.showDialog(f.container,420,360,!0,!0);a&&f.okButton.parentNode.removeChild(f.okButton);var m= +mxUtils.bind(this,function(a,b,c){var d=document.createElement("a");d.setAttribute("href","javascript:void(0);");d.setAttribute("title",a);mxUtils.write(d,a);mxEvent.addListener(d,"click",b);null!=c&&(a=t.cloneNode(),a.style.padding=c,a.appendChild(d),d=a);return d}),p=mxUtils.bind(this,function(a){var c=document.createElement("div");c.style.marginBottom="8px";c.appendChild(m(d+"/"+b,mxUtils.bind(this,function(){g=null;C()})));a||(mxUtils.write(c," / "),c.appendChild(m(decodeURIComponent(e),mxUtils.bind(this, +function(){g=null;x()}))));if(null!=g&&0<g.length){var f=g.split("/");for(a=0;a<f.length;a++)(function(a){mxUtils.write(c," / ");c.appendChild(m(f[a],mxUtils.bind(this,function(){g=f.slice(0,a+1).join("/");z()})))})(a)}n.appendChild(c)}),u=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(g=e=b=d=null,C()):this.ui.hideDialog()}))}),v=null,q=null,z=mxUtils.bind(this,function(k){null==k&&(n.innerHTML="",k=1);var l=new mxXmlRequest(this.baseUrl+ +"/repos/"+d+"/"+b+"/contents/"+g+"?ref="+encodeURIComponent(e)+"&per_page=100&page="+k,null,"GET");this.ui.spinner.spin(n,mxResources.get("loading"));f.okButton.removeAttribute("disabled");null!=q&&(mxEvent.removeListener(n,"scroll",q),q=null);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var B=mxUtils.bind(this,function(){z(k+1)});mxEvent.addListener(v, +"click",B);this.executeRequest(l,mxUtils.bind(this,function(f){this.ui.spinner.stop();1==k&&(p(),n.appendChild(m("../ [Up]",mxUtils.bind(this,function(){if(""==g)g=null,C();else{var a=g.split("/");g=a.slice(0,a.length-1).join("/");z()}}),"4px")));var l=JSON.parse(f.getText());if(null==l||0==l.length)mxUtils.write(n,mxResources.get("noFiles"));else{var y=!0,q=0;f=mxUtils.bind(this,function(f){for(var k=0;k<l.length;k++)mxUtils.bind(this,function(k,l){if(f==("dir"==k.type)){var p=t.cloneNode();p.style.backgroundColor= +y?"#eeeeee":"";y=!y;var B=document.createElement("img");B.src=IMAGE_PATH+"/"+("dir"==k.type?"folder.png":"file.png");B.setAttribute("align","absmiddle");B.style.marginRight="4px";B.style.marginTop="-4px";B.width=20;p.appendChild(B);p.appendChild(m(k.name+("dir"==k.type?"/":""),mxUtils.bind(this,function(){"dir"==k.type?(g=k.path,z()):a&&"file"==k.type&&(this.ui.hideDialog(),c(d+"/"+b+"/"+encodeURIComponent(e)+"/"+k.path))})));n.appendChild(p);q++}})(l[k],k)});f(!0);a&&f(!1)}}),u,!0)}),x=mxUtils.bind(this, function(a){null==a&&(n.innerHTML="",a=1);var c=new mxXmlRequest(this.baseUrl+"/repos/"+d+"/"+b+"/branches?per_page=100&page="+a,null,"GET");f.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(n,mxResources.get("loading"));null!=q&&(mxEvent.removeListener(n,"scroll",q),q=null);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var k= -mxUtils.bind(this,function(){y(a+1)});mxEvent.addListener(v,"click",k);this.executeRequest(c,mxUtils.bind(this,function(b){this.ui.spinner.stop();1==a&&(p(!0),n.appendChild(m("../ [Up]",mxUtils.bind(this,function(){g=null;D()}),"4px")));b=JSON.parse(b.getText());if(null==b||0==b.length)mxUtils.write(n,mxResources.get("noFiles"));else{for(var c=0;c<b.length;c++)mxUtils.bind(this,function(a,b){var c=u.cloneNode();c.style.backgroundColor=0==b%2?"#eeeeee":"";c.appendChild(m(a.name,mxUtils.bind(this,function(){e= -a.name;g="";z()})));n.appendChild(c)})(b[c],c);100==b.length&&(n.appendChild(v),q=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&k()},mxEvent.addListener(n,"scroll",q))}}),t)}),D=mxUtils.bind(this,function(a){null==a&&(n.innerHTML="",a=1);var c=new mxXmlRequest(this.baseUrl+"/user/repos?per_page=100&page="+a,null,"GET");f.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(n,mxResources.get("loading"));null!=q&&mxEvent.removeListener(n,"scroll",q);null!=v&&null!=v.parentNode&& -v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){D(a+1)});mxEvent.addListener(v,"click",k);this.executeRequest(c,mxUtils.bind(this,function(c){this.ui.spinner.stop();c=JSON.parse(c.getText());if(null==c||0==c.length)mxUtils.write(n,mxResources.get("noFiles"));else{1==a&&(n.appendChild(m(mxResources.get("enterValue")+"...",mxUtils.bind(this, -function(){var a=new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this,function(a){if(null!=a){var c=a.split("/");if(1<c.length){a=c[0];var f=c[1];3>c.length?(d=a,b=f,g=e=null,y()):this.ui.spinner.spin(n,mxResources.get("loading"))&&(c=encodeURIComponent(c.slice(2,c.length).join("/")),this.getFile(a+"/"+f+"/"+c,mxUtils.bind(this,function(a){this.ui.spinner.stop();d=a.meta.org;b=a.meta.repo;e=decodeURIComponent(a.meta.ref);g="";z()}),mxUtils.bind(this,function(a){this.ui.spinner.stop(); -this.ui.handleError({message:mxResources.get("fileNotFound")})})))}else this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})}}),mxResources.get("enterValue"));this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(n),mxUtils.br(n));for(var f=0;f<c.length;f++)mxUtils.bind(this,function(a,c){var f=u.cloneNode();f.style.backgroundColor=0==c%2?"#eeeeee":"";f.appendChild(m(a.full_name,mxUtils.bind(this,function(){d=a.owner.login;b=a.name;e=a.default_branch; -g="";z()})));n.appendChild(f)})(c[f],f)}100==c.length&&(n.appendChild(v),q=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&k()},mxEvent.addListener(n,"scroll",q))}),t)});D()};GitHubClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null};TrelloFile=function(a,c,d){DrawioFile.call(this,a,c);this.meta=d;this.saveNeededCounter=0};mxUtils.extend(TrelloFile,DrawioFile);TrelloFile.prototype.getHash=function(){return"T"+encodeURIComponent(this.meta.compoundId)};TrelloFile.prototype.getMode=function(){return App.MODE_TRELLO};TrelloFile.prototype.isAutosave=function(){return!0};TrelloFile.prototype.getTitle=function(){return this.meta.name};TrelloFile.prototype.isRenamable=function(){return!1};TrelloFile.prototype.getSize=function(){return this.meta.bytes}; +mxUtils.bind(this,function(){x(a+1)});mxEvent.addListener(v,"click",k);this.executeRequest(c,mxUtils.bind(this,function(b){this.ui.spinner.stop();1==a&&(p(!0),n.appendChild(m("../ [Up]",mxUtils.bind(this,function(){g=null;C()}),"4px")));b=JSON.parse(b.getText());if(null==b||0==b.length)mxUtils.write(n,mxResources.get("noFiles"));else{for(var c=0;c<b.length;c++)mxUtils.bind(this,function(a,b){var c=t.cloneNode();c.style.backgroundColor=0==b%2?"#eeeeee":"";c.appendChild(m(a.name,mxUtils.bind(this,function(){e= +a.name;g="";z()})));n.appendChild(c)})(b[c],c);100==b.length&&(n.appendChild(v),q=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&k()},mxEvent.addListener(n,"scroll",q))}}),u)}),C=mxUtils.bind(this,function(a){null==a&&(n.innerHTML="",a=1);var c=new mxXmlRequest(this.baseUrl+"/user/repos?per_page=100&page="+a,null,"GET");f.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(n,mxResources.get("loading"));null!=q&&mxEvent.removeListener(n,"scroll",q);null!=v&&null!=v.parentNode&& +v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){C(a+1)});mxEvent.addListener(v,"click",k);this.executeRequest(c,mxUtils.bind(this,function(c){this.ui.spinner.stop();c=JSON.parse(c.getText());if(null==c||0==c.length)mxUtils.write(n,mxResources.get("noFiles"));else{1==a&&(n.appendChild(m(mxResources.get("enterValue")+"...",mxUtils.bind(this, +function(){var a=new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this,function(a){if(null!=a){var c=a.split("/");if(1<c.length){a=c[0];var f=c[1];3>c.length?(d=a,b=f,g=e=null,x()):this.ui.spinner.spin(n,mxResources.get("loading"))&&(c=encodeURIComponent(c.slice(2,c.length).join("/")),this.getFile(a+"/"+f+"/"+c,mxUtils.bind(this,function(a){this.ui.spinner.stop();d=a.meta.org;b=a.meta.repo;e=decodeURIComponent(a.meta.ref);g="";z()}),mxUtils.bind(this,function(a){this.ui.spinner.stop(); +this.ui.handleError({message:mxResources.get("fileNotFound")})})))}else this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})}}),mxResources.get("enterValue"));this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(n),mxUtils.br(n));for(var f=0;f<c.length;f++)mxUtils.bind(this,function(a,c){var f=t.cloneNode();f.style.backgroundColor=0==c%2?"#eeeeee":"";f.appendChild(m(a.full_name,mxUtils.bind(this,function(){d=a.owner.login;b=a.name;e=a.default_branch; +g="";z()})));n.appendChild(f)})(c[f],f)}100==c.length&&(n.appendChild(v),q=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&k()},mxEvent.addListener(n,"scroll",q))}),u)});C()};GitHubClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null};TrelloFile=function(a,c,d){DrawioFile.call(this,a,c);this.meta=d;this.saveNeededCounter=0};mxUtils.extend(TrelloFile,DrawioFile);TrelloFile.prototype.getHash=function(){return"T"+encodeURIComponent(this.meta.compoundId)};TrelloFile.prototype.getMode=function(){return App.MODE_TRELLO};TrelloFile.prototype.isAutosave=function(){return!0};TrelloFile.prototype.getTitle=function(){return this.meta.name};TrelloFile.prototype.isRenamable=function(){return!1};TrelloFile.prototype.getSize=function(){return this.meta.bytes}; TrelloFile.prototype.save=function(a,c,d){this.doSave(this.getTitle(),c,d)};TrelloFile.prototype.saveAs=function(a,c,d){this.doSave(a,c,d)};TrelloFile.prototype.doSave=function(a,c,d){var b=this.meta.name;this.meta.name=a;DrawioFile.prototype.save.apply(this,arguments);this.meta.name=b;this.saveFile(a,!1,c,d)}; TrelloFile.prototype.saveFile=function(a,c,d,b){if(this.isEditable())if(this.savingFile)null!=b&&(this.saveNeededCounter++,b({code:App.ERROR_BUSY}));else if(this.savingFile=!0,this.savingFileTime=new Date,this.getTitle()==a){var e=this.isModified,g=this.isModified(),k=mxUtils.bind(this,function(){this.setModified(!1);this.isModified=function(){return g}});k();this.ui.trello.saveFile(this,mxUtils.bind(this,function(g){this.savingFile=!1;this.isModified=e;this.meta=g;this.contentChanged();null!=d&& d();0<this.saveNeededCounter&&(this.saveNeededCounter--,this.saveFile(a,c,d,b))}),mxUtils.bind(this,function(a){this.savingFile=!1;this.isModified=e;this.setModified(g||this.isModified());if(null!=b){if(null!=a&&null!=a.retry){var c=a.retry;a.retry=function(){k();c()}}b(a)}}))}else this.ui.pickFolder(App.MODE_TRELLO,mxUtils.bind(this,function(e){this.ui.trello.insertFile(a,this.getData(),mxUtils.bind(this,function(e){this.savingFile=!1;null!=d&&d();this.ui.fileLoaded(e);0<this.saveNeededCounter&& @@ -9426,52 +9427,52 @@ TrelloClient.prototype.insertFile=function(a,c,d,b,e,g){e=null!=e?e:!1;var k=mxU TrelloClient.prototype.saveFile=function(a,c,d){var b=a.meta.compoundId.split(this.SEPARATOR),e=mxUtils.bind(this,function(e){this.writeFile(a.meta.name,e,b[0],function(a){Trello.del("cards/"+b[0]+"/attachments/"+b[1],mxUtils.bind(this,function(){c(a)}),mxUtils.bind(this,function(a){null!=a&&401==a.status?this.authenticate(g,d,!0):d()}))},d)}),g=mxUtils.bind(this,function(){this.ui.useCanvasForExport&&/(\.png)$/i.test(a.meta.name)?this.ui.getEmbeddedPng(mxUtils.bind(this,function(a){e(this.ui.base64ToBlob(a, "image/png"))}),d,this.ui.getCurrentFile()!=a?a.getData():null):e(a.getData())});this.authenticate(g,d)}; TrelloClient.prototype.writeFile=function(a,c,d,b,e){if(null!=a&&null!=c)if(c.length>=this.maxFileSize)e({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(c.length)+" / 10 MB)"});else{var g=mxUtils.bind(this,function(){var k=!0,l=window.setTimeout(mxUtils.bind(this,function(){k=!1;e({code:App.ERROR_TIMEOUT,retry:g})}),this.ui.timeout),n=new FormData;n.append("key",Trello.key());n.append("token",Trello.token());n.append("file","string"===typeof c?new Blob([c]):c,a);n.append("name", -a);var u=new XMLHttpRequest;u.responseType="json";u.onreadystatechange=mxUtils.bind(this,function(){if(4===u.readyState&&(window.clearTimeout(l),k))if(200==u.status){var a=u.response;a.compoundId=d+this.SEPARATOR+a.id;b(a)}else 401==u.status?this.authenticate(g,e,!0):e()});u.open("POST",this.baseUrl+"cards/"+d+"/attachments");u.send(n)});this.authenticate(g,e)}else e({message:mxResources.get("unknownError")})};TrelloClient.prototype.pickLibrary=function(a){this.pickFile(a)}; +a);var t=new XMLHttpRequest;t.responseType="json";t.onreadystatechange=mxUtils.bind(this,function(){if(4===t.readyState&&(window.clearTimeout(l),k))if(200==t.status){var a=t.response;a.compoundId=d+this.SEPARATOR+a.id;b(a)}else 401==t.status?this.authenticate(g,e,!0):e()});t.open("POST",this.baseUrl+"cards/"+d+"/attachments");t.send(n)});this.authenticate(g,e)}else e({message:mxResources.get("unknownError")})};TrelloClient.prototype.pickLibrary=function(a){this.pickFile(a)}; TrelloClient.prototype.pickFolder=function(a){this.authenticate(mxUtils.bind(this,function(){this.showTrelloDialog(!1,a)}),mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a)}))};TrelloClient.prototype.pickFile=function(a,c){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("T"+encodeURIComponent(a))});this.authenticate(mxUtils.bind(this,function(){this.showTrelloDialog(!0,a)}),mxUtils.bind(this,function(a){this.ui.showError(mxResources.get("error"),a,mxResources.get("ok"))}))}; TrelloClient.prototype.showTrelloDialog=function(a,c){var d=null,b="@me",e=0,g=document.createElement("div");g.style.whiteSpace="nowrap";g.style.overflow="hidden";g.style.height="224px";var k=document.createElement("h3");mxUtils.write(k,a?mxResources.get("selectFile"):mxResources.get("selectCard"));k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";g.appendChild(k);var l=document.createElement("div");l.style.whiteSpace="nowrap";l.style.overflow="auto";l.style.height= "194px";g.appendChild(l);g=new CustomDialog(this.ui,g);this.ui.showDialog(g.container,340,270,!0,!0);g.okButton.parentNode.removeChild(g.okButton);var n=mxUtils.bind(this,function(a,b,c){e++;var d=document.createElement("div");d.style="width:100%;text-overflow:ellipsis;overflow:hidden;vertical-align:middle;background:"+(0==e%2?"#eee":"#fff");var f=document.createElement("a");f.setAttribute("href","javascript:void(0);");if(null!=c){var g=document.createElement("img");g.src=c.url;g.width=c.width;g.height= -c.height;g.style="border: 1px solid black;margin:5px;vertical-align:middle";f.appendChild(g)}mxUtils.write(f,a);mxEvent.addListener(f,"click",b);d.appendChild(f);return d}),u=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.hideDialog()}))}),f=mxUtils.bind(this,function(){e=0;l.innerHTML="";this.ui.spinner.spin(l,mxResources.get("loading"));var a=mxUtils.bind(this,function(){Trello.cards.get(d+"/attachments",{fields:"id,name,previews"}, -mxUtils.bind(this,function(a){this.ui.spinner.stop();l.appendChild(n("../ [Up]",mxUtils.bind(this,function(){t()})));mxUtils.br(l);null==a||0==a.length?mxUtils.write(l,mxResources.get("noFiles")):mxUtils.bind(this,function(){for(var b=0;b<a.length;b++)mxUtils.bind(this,function(a){l.appendChild(n(a.name,mxUtils.bind(this,function(){this.ui.hideDialog();c(d+this.SEPARATOR+a.id)}),null!=a.previews?a.previews[0]:null))})(a[b])})()}),mxUtils.bind(this,function(b){401==b.status?this.authenticate(a,u,!0): -null!=u&&u(b)}))});a()}),m=null,p=null,t=mxUtils.bind(this,function(g){null==g&&(e=0,l.innerHTML="",g=1);this.ui.spinner.spin(l,mxResources.get("loading"));null!=m&&null!=m.parentNode&&m.parentNode.removeChild(m);m=document.createElement("a");m.style.display="block";m.setAttribute("href","javascript:void(0);");mxUtils.write(m,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){mxEvent.removeListener(l,"scroll",p);t(g+1)});mxEvent.addListener(m,"click",k);var v=mxUtils.bind(this,function(){Trello.get("search", -{query:""==mxUtils.trim(b)?"is:open":b,cards_limit:100,cards_page:g-1},mxUtils.bind(this,function(e){this.ui.spinner.stop();e=null!=e?e.cards:null;if(null==e||0==e.length)mxUtils.write(l,mxResources.get("noFiles"));else{1==g&&(l.appendChild(n(mxResources.get("filterCards")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,b,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&(b=a,t())}),mxResources.get("filterCards"),null,null,"http://help.trello.com/article/808-searching-for-cards-all-boards"); -this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(l));for(var q=0;q<e.length;q++)mxUtils.bind(this,function(b){l.appendChild(n(b.name,mxUtils.bind(this,function(){a?(d=b.id,f()):(this.ui.hideDialog(),c(b.id))})))})(e[q]);100==e.length&&(l.appendChild(m),p=function(){l.scrollTop>=l.scrollHeight-l.offsetHeight&&k()},mxEvent.addListener(l,"scroll",p))}}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(v,u,!0):null!=u&&u({message:a.responseText})}))});v()});t()}; +c.height;g.style="border: 1px solid black;margin:5px;vertical-align:middle";f.appendChild(g)}mxUtils.write(f,a);mxEvent.addListener(f,"click",b);d.appendChild(f);return d}),t=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();this.ui.hideDialog()}))}),f=mxUtils.bind(this,function(){e=0;l.innerHTML="";this.ui.spinner.spin(l,mxResources.get("loading"));var a=mxUtils.bind(this,function(){Trello.cards.get(d+"/attachments",{fields:"id,name,previews"}, +mxUtils.bind(this,function(a){this.ui.spinner.stop();l.appendChild(n("../ [Up]",mxUtils.bind(this,function(){u()})));mxUtils.br(l);null==a||0==a.length?mxUtils.write(l,mxResources.get("noFiles")):mxUtils.bind(this,function(){for(var b=0;b<a.length;b++)mxUtils.bind(this,function(a){l.appendChild(n(a.name,mxUtils.bind(this,function(){this.ui.hideDialog();c(d+this.SEPARATOR+a.id)}),null!=a.previews?a.previews[0]:null))})(a[b])})()}),mxUtils.bind(this,function(b){401==b.status?this.authenticate(a,t,!0): +null!=t&&t(b)}))});a()}),m=null,p=null,u=mxUtils.bind(this,function(g){null==g&&(e=0,l.innerHTML="",g=1);this.ui.spinner.spin(l,mxResources.get("loading"));null!=m&&null!=m.parentNode&&m.parentNode.removeChild(m);m=document.createElement("a");m.style.display="block";m.setAttribute("href","javascript:void(0);");mxUtils.write(m,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){mxEvent.removeListener(l,"scroll",p);u(g+1)});mxEvent.addListener(m,"click",k);var v=mxUtils.bind(this,function(){Trello.get("search", +{query:""==mxUtils.trim(b)?"is:open":b,cards_limit:100,cards_page:g-1},mxUtils.bind(this,function(e){this.ui.spinner.stop();e=null!=e?e.cards:null;if(null==e||0==e.length)mxUtils.write(l,mxResources.get("noFiles"));else{1==g&&(l.appendChild(n(mxResources.get("filterCards")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,b,mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&(b=a,u())}),mxResources.get("filterCards"),null,null,"http://help.trello.com/article/808-searching-for-cards-all-boards"); +this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(l));for(var q=0;q<e.length;q++)mxUtils.bind(this,function(b){l.appendChild(n(b.name,mxUtils.bind(this,function(){a?(d=b.id,f()):(this.ui.hideDialog(),c(b.id))})))})(e[q]);100==e.length&&(l.appendChild(m),p=function(){l.scrollTop>=l.scrollHeight-l.offsetHeight&&k()},mxEvent.addListener(l,"scroll",p))}}),mxUtils.bind(this,function(a){401==a.status?this.authenticate(v,t,!0):null!=t&&t({message:a.responseText})}))});v()});u()}; TrelloClient.prototype.isAuthorized=function(){try{return null!=localStorage.trello_token}catch(a){}return!1};TrelloClient.prototype.logout=function(){localStorage.removeItem("trello_token");Trello.deauthorize()};GitLabFile=function(a,c,d){GitHubFile.call(this,a,c,d);this.peer=this.ui.gitLab};mxUtils.extend(GitLabFile,GitHubFile);GitLabFile.prototype.getId=function(){return this.meta.org+"/"+(null!=this.meta.repo?encodeURIComponent(this.meta.repo)+"/"+(null!=this.meta.ref?this.meta.ref+(null!=this.meta.path?"/"+this.meta.path:""):""):"")};GitLabFile.prototype.getHash=function(){return encodeURIComponent("A"+this.getId())};GitLabFile.prototype.isConflict=function(a){return null!=a&&400==a.status}; -GitLabFile.prototype.getMode=function(){return App.MODE_GITLAB};GitLabFile.prototype.getDescriptorEtag=function(a){return a.last_commit_id};GitLabFile.prototype.setDescriptorEtag=function(a,c){a.last_commit_id=c};GitLabLibrary=function(a,c,d){GitLabFile.call(this,a,c,d)};mxUtils.extend(GitLabLibrary,GitLabFile);GitLabLibrary.prototype.doSave=function(a,c,d){this.saveFile(a,!1,c,d)};GitLabLibrary.prototype.open=function(){};GitLabClient=function(a){GitHubClient.call(this,a,"gitlabauth")};mxUtils.extend(GitLabClient,GitHubClient);GitLabClient.prototype.clientId=DRAWIO_GITLAB_ID;GitLabClient.prototype.scope="api%20read_repository%20write_repository";GitLabClient.prototype.baseUrl=DRAWIO_GITLAB_URL+"/api/v4"; +GitLabFile.prototype.getMode=function(){return App.MODE_GITLAB};GitLabFile.prototype.getDescriptorEtag=function(a){return a.last_commit_id};GitLabFile.prototype.setDescriptorEtag=function(a,c){a.last_commit_id=c};GitLabLibrary=function(a,c,d){GitLabFile.call(this,a,c,d)};mxUtils.extend(GitLabLibrary,GitLabFile);GitLabLibrary.prototype.doSave=function(a,c,d){this.saveFile(a,!1,c,d)};GitLabLibrary.prototype.open=function(){};GitLabClient=function(a){GitHubClient.call(this,a,"gitlabauth")};mxUtils.extend(GitLabClient,GitHubClient);GitLabClient.prototype.clientId=DRAWIO_GITLAB_ID;GitLabClient.prototype.scope="api%20read_repository%20write_repository";GitLabClient.prototype.baseUrl=DRAWIO_GITLAB_URL+"/api/v4";GitLabClient.prototype.authToken="Bearer"; GitLabClient.prototype.authenticate=function(a,c){if(null==window.onGitLabCallback){var d=mxUtils.bind(this,function(){var b=!0;this.ui.showAuthDialog(this,!0,mxUtils.bind(this,function(e,g){var k=window.location.href,k=k.substring(0,k.lastIndexOf("/")),k=encodeURIComponent(k+"/gitlab.html");null!=window.open(DRAWIO_GITLAB_URL+"/oauth/authorize?client_id="+this.clientId+"&scope="+this.scope+"&redirect_uri="+k+"&response_type=token&state=123","gitlabauth")?window.onGitLabCallback=mxUtils.bind(this, function(k,n){b?(window.onGitLabCallback=null,b=!1,null==k?c({message:mxResources.get("accessDenied"),retry:d}):(null!=g&&g(),this.token=k,this.setUser(null),e&&this.setPersistentToken(this.token),a())):null!=n&&n.close()}):c({message:mxResources.get("serviceUnavailableOrBlocked"),retry:d})}),mxUtils.bind(this,function(){b&&(window.onGitLabCallback=null,b=!1,c({message:mxResources.get("accessDenied"),retry:d}))}))});d()}else c({code:App.ERROR_BUSY})}; -GitLabClient.prototype.executeRequest=function(a,c,d,b){var e=mxUtils.bind(this,function(k){var l=!0,n=window.setTimeout(mxUtils.bind(this,function(){l=!1;d({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout),u=this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization","Bearer "+u);a.setRequestHeader("PRIVATE_TOKEN",u);a.setRequestHeader("Content-Type","application/json")};a.send(mxUtils.bind(this,function(){window.clearTimeout(n);if(l)if(200<=a.getStatus()&& -299>=a.getStatus()||b&&404==a.getStatus())c(a);else if(401===a.getStatus())k?d({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){g(!0)},d)})}):this.authenticate(function(){e(!0)},d);else if(403===a.getStatus()){var f=!1;try{var m=JSON.parse(a.getText());null!=m&&null!=m.errors&&0<m.errors.length&&(f="too_large"==m.errors[0].code)}catch(p){}d({message:mxResources.get(f?"drawingTooLarge":"forbidden")})}else 404===a.getStatus()?d({message:this.getErrorMessage(a, +GitLabClient.prototype.executeRequest=function(a,c,d,b){var e=mxUtils.bind(this,function(k){var l=!0,n=window.setTimeout(mxUtils.bind(this,function(){l=!1;d({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}),this.ui.timeout),t=this.authToken+" "+this.token;a.setRequestHeaders=function(a,b){a.setRequestHeader("Authorization",t);a.setRequestHeader("PRIVATE_TOKEN",t);a.setRequestHeader("Content-Type","application/json")};a.send(mxUtils.bind(this,function(){window.clearTimeout(n);if(l)if(200<= +a.getStatus()&&299>=a.getStatus()||b&&404==a.getStatus())c(a);else if(401===a.getStatus())k?d({message:mxResources.get("accessDenied"),retry:mxUtils.bind(this,function(){this.authenticate(function(){g(!0)},d)})}):this.authenticate(function(){e(!0)},d);else if(403===a.getStatus()){var f=!1;try{var m=JSON.parse(a.getText());null!=m&&null!=m.errors&&0<m.errors.length&&(f="too_large"==m.errors[0].code)}catch(p){}d({message:mxResources.get(f?"drawingTooLarge":"forbidden")})}else 404===a.getStatus()?d({message:this.getErrorMessage(a, mxResources.get("fileNotFound"))}):400===a.getStatus()?d({status:400}):d({status:a.getStatus(),message:this.getErrorMessage(a,mxResources.get("error")+" "+a.getStatus())})}),d)}),g=mxUtils.bind(this,function(a){null==this.user?this.updateUser(function(){g(!0)},d,a):e(a)});null==this.token?this.authenticate(function(){g(!0)},d):g(!1)}; -GitLabClient.prototype.getRefIndex=function(a,c,d,b,e){if(null!=e)d(a,e);else{var g=a.length-2,k=mxUtils.bind(this,function(){if(2>g)b({message:mxResources.get("fileNotFound")});else{var e=Math.max(g-1,0),n=a.slice(0,e).join("/"),e=a[e],u=a[g],f=a.slice(g+1,a.length).join("/"),n=this.baseUrl+"/projects/"+encodeURIComponent(n+"/"+e)+"/repository/"+(c?"tree?path="+f+"&ref="+u:"files/"+encodeURIComponent(f)+"?ref="+u),m=new mxXmlRequest(n,null,"HEAD");this.executeRequest(m,mxUtils.bind(this,function(){200== +GitLabClient.prototype.getRefIndex=function(a,c,d,b,e){if(null!=e)d(a,e);else{var g=a.length-2,k=mxUtils.bind(this,function(){if(2>g)b({message:mxResources.get("fileNotFound")});else{var e=Math.max(g-1,0),n=a.slice(0,e).join("/"),e=a[e],t=a[g],f=a.slice(g+1,a.length).join("/"),n=this.baseUrl+"/projects/"+encodeURIComponent(n+"/"+e)+"/repository/"+(c?"tree?path="+f+"&ref="+t:"files/"+encodeURIComponent(f)+"?ref="+t),m=new mxXmlRequest(n,null,"HEAD");this.executeRequest(m,mxUtils.bind(this,function(){200== m.getStatus()?d(a,g):b({message:mxResources.get("fileNotFound")})}),mxUtils.bind(this,function(){404==m.getStatus()?(g--,k()):b({message:mxResources.get("fileNotFound")})}))}});k()}}; -GitLabClient.prototype.getFile=function(a,c,d,b,e,g){b=null!=b?b:!1;this.getRefIndex(a.split("/"),!1,mxUtils.bind(this,function(g,l){var k=Math.max(l-1,0),u=g.slice(0,k).join("/"),f=g[k],m=g[l];a=g.slice(l+1,g.length).join("/");k=/\.png$/i.test(a);if(!e&&(/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||/\.pdf$/i.test(a)||!this.ui.useCanvasForExport&&k))if(null!=this.token){var k="&t="+(new Date).getTime(),p=this.baseUrl+"/projects/"+encodeURIComponent(u+"/"+f)+"/repository/files/"+encodeURIComponent(a)+ -"?ref="+m;g=a.split("/");this.ui.convertFile(p+k,0<g.length?g[g.length-1]:a,null,this.extension,c,d,mxUtils.bind(this,function(a,b,c){a=new mxXmlRequest(a,null,"GET");this.executeRequest(a,mxUtils.bind(this,function(a){try{b(this.getFileContent(JSON.parse(a.getText())))}catch(y){c(y)}}),c)}))}else d({message:mxResources.get("accessDenied")});else k="&t="+(new Date).getTime(),p=this.baseUrl+"/projects/"+encodeURIComponent(u+"/"+f)+"/repository/files/"+encodeURIComponent(a)+"?ref="+m,k=new mxXmlRequest(p+ -k,null,"GET"),this.executeRequest(k,mxUtils.bind(this,function(a){try{c(this.createGitLabFile(u,f,m,JSON.parse(a.getText()),b,l))}catch(v){d(v)}}),d)}),d,g)}; +GitLabClient.prototype.getFile=function(a,c,d,b,e,g){b=null!=b?b:!1;this.getRefIndex(a.split("/"),!1,mxUtils.bind(this,function(g,l){var k=Math.max(l-1,0),t=g.slice(0,k).join("/"),f=g[k],m=g[l];a=g.slice(l+1,g.length).join("/");k=/\.png$/i.test(a);if(!e&&(/\.v(dx|sdx?)$/i.test(a)||/\.gliffy$/i.test(a)||/\.pdf$/i.test(a)||!this.ui.useCanvasForExport&&k))if(null!=this.token){var k="&t="+(new Date).getTime(),p=this.baseUrl+"/projects/"+encodeURIComponent(t+"/"+f)+"/repository/files/"+encodeURIComponent(a)+ +"?ref="+m;g=a.split("/");this.ui.convertFile(p+k,0<g.length?g[g.length-1]:a,null,this.extension,c,d,mxUtils.bind(this,function(a,b,c){a=new mxXmlRequest(a,null,"GET");this.executeRequest(a,mxUtils.bind(this,function(a){try{b(this.getFileContent(JSON.parse(a.getText())))}catch(x){c(x)}}),c)}))}else d({message:mxResources.get("accessDenied")});else k="&t="+(new Date).getTime(),p=this.baseUrl+"/projects/"+encodeURIComponent(t+"/"+f)+"/repository/files/"+encodeURIComponent(a)+"?ref="+m,k=new mxXmlRequest(p+ +k,null,"GET"),this.executeRequest(k,mxUtils.bind(this,function(a){try{c(this.createGitLabFile(t,f,m,JSON.parse(a.getText()),b,l))}catch(v){d(v)}}),d)}),d,g)}; GitLabClient.prototype.getFileContent=function(a){var c=a.file_name,d=a.content;"base64"===a.encoding&&(/\.jpe?g$/i.test(c)?d="data:image/jpeg;base64,"+d:/\.gif$/i.test(c)?d="data:image/gif;base64,"+d:/\.pdf$/i.test(c)?d="data:application/pdf;base64,"+d:/\.png$/i.test(c)?(a=this.ui.extractGraphModelFromPng(d),d=null!=a&&0<a.length?a:"data:image/png;base64,"+d):d=Base64.decode(d));return d}; GitLabClient.prototype.createGitLabFile=function(a,c,d,b,e,g){var k=DRAWIO_GITLAB_URL+"/";a={org:a,repo:c,ref:d,name:b.file_name,path:b.file_path,html_url:k+a+"/"+c+"/blob/"+d+"/"+b.file_path,download_url:k+a+"/"+c+"/raw/"+d+"/"+b.file_path+"?inline=false",last_commit_id:b.last_commit_id,refPos:g};b=this.getFileContent(b);return e?new GitLabLibrary(this.ui,b,a):new GitLabFile(this.ui,b,a)}; GitLabClient.prototype.insertFile=function(a,c,d,b,e,g,k){e=null!=e?e:!1;this.getRefIndex(g.split("/"),!0,mxUtils.bind(this,function(g,n){var l=Math.max(n-1,0),f=g.slice(0,l).join("/"),m=g[l],p=g[n];path=g.slice(n+1,g.length).join("/");0<path.length&&(path+="/");path+=a;this.checkExists(f+"/"+m+"/"+p+"/"+path,!0,mxUtils.bind(this,function(g,l){if(g)if(e)k||(c=Base64.encode(c)),this.showCommitDialog(a,!0,mxUtils.bind(this,function(a){this.writeFile(f,m,p,path,a,c,l,mxUtils.bind(this,function(a){try{var c= JSON.parse(a.getText());d(this.createGitLabFile(f,m,p,c.content,e,n))}catch(H){b(H)}}),b)}),b);else{var q=DRAWIO_GITLAB_URL+"/";d(new GitLabFile(this.ui,c,{org:f,repo:m,ref:p,name:a,path:path,html_url:q+f+"/"+m+"/blob/"+p+"/"+path,download_url:q+f+"/"+m+"/raw/"+p+"/"+path+"?inline=false",refPos:n,last_commit_id:l,isNew:!0}))}else b()}))}),b)}; GitLabClient.prototype.checkExists=function(a,c,d){this.getFile(a,mxUtils.bind(this,function(b){if(c){var e=this.ui.spinner.pause();this.ui.confirm(mxResources.get("replaceIt",[a]),function(){e();d(!0,b.getCurrentEtag())},function(){e();d(!1)})}else this.ui.spinner.stop(),this.ui.showError(mxResources.get("error"),mxResources.get("fileExists"),mxResources.get("ok"),function(){d(!1)})}),mxUtils.bind(this,function(a){d(!0)}),null,!0)}; -GitLabClient.prototype.writeFile=function(a,c,d,b,e,g,k,l,n){if(g.length>=this.maxFileSize)n({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(g.length)+" / 1 MB)"});else{var u="POST";d={path:encodeURIComponent(b),branch:decodeURIComponent(d),commit_message:e,content:g,encoding:"base64"};null!=k&&(d.last_commit_id=k,u="PUT");a=this.baseUrl+"/projects/"+encodeURIComponent(a+"/"+c)+"/repository/files/"+encodeURIComponent(b);u=new mxXmlRequest(a,JSON.stringify(d),u);this.executeRequest(u, +GitLabClient.prototype.writeFile=function(a,c,d,b,e,g,k,l,n){if(g.length>=this.maxFileSize)n({message:mxResources.get("drawingTooLarge")+" ("+this.ui.formatFileSize(g.length)+" / 1 MB)"});else{var t="POST";d={path:encodeURIComponent(b),branch:decodeURIComponent(d),commit_message:e,content:g,encoding:"base64"};null!=k&&(d.last_commit_id=k,t="PUT");a=this.baseUrl+"/projects/"+encodeURIComponent(a+"/"+c)+"/repository/files/"+encodeURIComponent(b);t=new mxXmlRequest(a,JSON.stringify(d),t);this.executeRequest(t, mxUtils.bind(this,function(a){l(a)}),n)}}; -GitLabClient.prototype.saveFile=function(a,c,d,b,e){var g=a.meta.org,k=a.meta.repo,l=a.meta.ref,n=a.meta.path,u=mxUtils.bind(this,function(b,f){this.writeFile(g,k,l,n,e,f,b,mxUtils.bind(this,function(b){delete a.meta.isNew;this.getFile(g+"/"+k+"/"+l+"/"+n,mxUtils.bind(this,function(b){b.getData()==a.getData()?c(b.getCurrentEtag()):c({content:a.getCurrentEtag()})}),d,null,null,a.meta.refPos)}),d)}),f=mxUtils.bind(this,function(){this.ui.useCanvasForExport&&/(\.png)$/i.test(n)?this.ui.getEmbeddedPng(mxUtils.bind(this, -function(b){u(a.meta.last_commit_id,b)}),d,this.ui.getCurrentFile()!=a?a.getData():null):u(a.meta.last_commit_id,Base64.encode(a.getData()))});b?this.getFile(g+"/"+k+"/"+l+"/"+n,mxUtils.bind(this,function(b){a.meta.last_commit_id=b.meta.last_commit_id;f()}),d):f()};GitLabClient.prototype.pickFolder=function(a){this.showGitLabDialog(!1,a)};GitLabClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("A"+encodeURIComponent(a))});this.showGitLabDialog(!0,a)}; +GitLabClient.prototype.saveFile=function(a,c,d,b,e){var g=a.meta.org,k=a.meta.repo,l=a.meta.ref,n=a.meta.path,t=mxUtils.bind(this,function(b,f){this.writeFile(g,k,l,n,e,f,b,mxUtils.bind(this,function(b){delete a.meta.isNew;this.getFile(g+"/"+k+"/"+l+"/"+n,mxUtils.bind(this,function(b){b.getData()==a.getData()?c(b.getCurrentEtag()):c({content:a.getCurrentEtag()})}),d,null,null,a.meta.refPos)}),d)}),f=mxUtils.bind(this,function(){this.ui.useCanvasForExport&&/(\.png)$/i.test(n)?this.ui.getEmbeddedPng(mxUtils.bind(this, +function(b){t(a.meta.last_commit_id,b)}),d,this.ui.getCurrentFile()!=a?a.getData():null):t(a.meta.last_commit_id,Base64.encode(a.getData()))});b?this.getFile(g+"/"+k+"/"+l+"/"+n,mxUtils.bind(this,function(b){a.meta.last_commit_id=b.meta.last_commit_id;f()}),d):f()};GitLabClient.prototype.pickFolder=function(a){this.showGitLabDialog(!1,a)};GitLabClient.prototype.pickFile=function(a){a=null!=a?a:mxUtils.bind(this,function(a){this.ui.loadFile("A"+encodeURIComponent(a))});this.showGitLabDialog(!0,a)}; GitLabClient.prototype.showGitLabDialog=function(a,c){var d=null,b=null,e=null,g=null,k=document.createElement("div");k.style.whiteSpace="nowrap";k.style.overflow="hidden";k.style.height="304px";var l=document.createElement("h3");mxUtils.write(l,mxResources.get(a?"selectFile":"selectFolder"));l.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";k.appendChild(l);var n=document.createElement("div");n.style.whiteSpace="nowrap";n.style.border="1px solid lightgray";n.style.boxSizing= -"border-box";n.style.padding="4px";n.style.overflow="auto";n.style.lineHeight="1.2em";n.style.height="274px";k.appendChild(n);var u=document.createElement("div");u.style.textOverflow="ellipsis";u.style.boxSizing="border-box";u.style.overflow="hidden";u.style.padding="4px";u.style.width="100%";var f=new CustomDialog(this.ui,k,mxUtils.bind(this,function(){c(d+"/"+b+"/"+encodeURIComponent(e)+"/"+g)}));this.ui.showDialog(f.container,420,360,!0,!0);a&&f.okButton.parentNode.removeChild(f.okButton);var m= -mxUtils.bind(this,function(a,b,c){var d=document.createElement("a");d.setAttribute("href","javascript:void(0);");d.setAttribute("title",a);mxUtils.write(d,a);mxEvent.addListener(d,"click",b);null!=c&&(a=u.cloneNode(),a.style.padding=c,a.appendChild(d),d=a);return d}),p=mxUtils.bind(this,function(a){var c=document.createElement("div");c.style.marginBottom="8px";c.appendChild(m(d+"/"+b,mxUtils.bind(this,function(){g=null;D()})));a||(mxUtils.write(c," / "),c.appendChild(m(decodeURIComponent(e),mxUtils.bind(this, -function(){g=null;y()}))));if(null!=g&&0<g.length){var f=g.split("/");for(a=0;a<f.length;a++)(function(a){mxUtils.write(c," / ");c.appendChild(m(f[a],mxUtils.bind(this,function(){g=f.slice(0,a+1).join("/");z()})))})(a)}n.appendChild(c)}),t=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(g=e=b=d=null,D()):this.ui.hideDialog()}))}),v=null,q=null,z=mxUtils.bind(this,function(k){null==k&&(n.innerHTML="",k=1);var l=new mxXmlRequest(this.baseUrl+ -"/projects/"+encodeURIComponent(d+"/"+b)+"/repository/tree?path="+g+"&ref="+e+"&per_page=100&page="+k,null,"GET");this.ui.spinner.spin(n,mxResources.get("loading"));f.okButton.removeAttribute("disabled");null!=q&&(mxEvent.removeListener(n,"scroll",q),q=null);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var A=mxUtils.bind(this,function(){z(k+ -1)});mxEvent.addListener(v,"click",A);this.executeRequest(l,mxUtils.bind(this,function(f){this.ui.spinner.stop();1==k&&(p(!e),n.appendChild(m("../ [Up]",mxUtils.bind(this,function(){if(""==g)g=null,D();else{var a=g.split("/");g=a.slice(0,a.length-1).join("/");z()}}),"4px")));var l=JSON.parse(f.getText());if(null==l||0==l.length)mxUtils.write(n,mxResources.get("noFiles"));else{var x=!0,t=0;f=mxUtils.bind(this,function(f){for(var k=0;k<l.length;k++)mxUtils.bind(this,function(k){if(f==("tree"==k.type)){var l= -u.cloneNode();l.style.backgroundColor=x?"#eeeeee":"";x=!x;var p=document.createElement("img");p.src=IMAGE_PATH+"/"+("tree"==k.type?"folder.png":"file.png");p.setAttribute("align","absmiddle");p.style.marginRight="4px";p.style.marginTop="-4px";p.width=20;l.appendChild(p);l.appendChild(m(k.name+("tree"==k.type?"/":""),mxUtils.bind(this,function(){"tree"==k.type?(g=k.path,z()):a&&"blob"==k.type&&(this.ui.hideDialog(),c(d+"/"+b+"/"+e+"/"+k.path))})));n.appendChild(l);t++}})(l[k])});f(!0);a&&f(!1);100== -t&&(n.appendChild(v),q=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&A()},mxEvent.addListener(n,"scroll",q))}}),t,!0)}),y=mxUtils.bind(this,function(a){null==a&&(n.innerHTML="",a=1);var c=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(d+"/"+b)+"/repository/branches?per_page=100&page="+a,null,"GET");f.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(n,mxResources.get("loading"));null!=q&&(mxEvent.removeListener(n,"scroll",q),q=null);null!=v&&null!=v.parentNode&& -v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){y(a+1)});mxEvent.addListener(v,"click",k);this.executeRequest(c,mxUtils.bind(this,function(b){this.ui.spinner.stop();1==a&&(p(!0),n.appendChild(m("../ [Up]",mxUtils.bind(this,function(){g=null;D()}),"4px")));b=JSON.parse(b.getText());if(null==b||0==b.length)mxUtils.write(n,mxResources.get("noFiles")); -else{for(var c=0;c<b.length;c++)mxUtils.bind(this,function(a,b){var c=u.cloneNode();c.style.backgroundColor=0==b%2?"#eeeeee":"";c.appendChild(m(a.name,mxUtils.bind(this,function(){e=encodeURIComponent(a.name);g="";z()})));n.appendChild(c)})(b[c],c);100==b.length&&(n.appendChild(v),q=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&k()},mxEvent.addListener(n,"scroll",q))}}),t)});f.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(n,mxResources.get("loading"));var D=mxUtils.bind(this, -function(a){this.ui.spinner.stop();null==a&&(n.innerHTML="",a=1);null!=q&&(mxEvent.removeListener(n,"scroll",q),q=null);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var c=mxUtils.bind(this,function(){D(a+1)});mxEvent.addListener(v,"click",c);var f=mxUtils.bind(this,function(a){this.ui.spinner.spin(n,mxResources.get("loading"));var b=new mxXmlRequest(this.baseUrl+ -"/groups?per_page=100",null,"GET");this.executeRequest(b,mxUtils.bind(this,function(b){this.ui.spinner.stop();a(JSON.parse(b.getText()))}),t)}),k=mxUtils.bind(this,function(a,b){this.ui.spinner.spin(n,mxResources.get("loading"));var c=new mxXmlRequest(this.baseUrl+"/groups/"+a.id+"/projects?per_page=100",null,"GET");this.executeRequest(c,mxUtils.bind(this,function(c){this.ui.spinner.stop();b(a,JSON.parse(c.getText()))}),t)});f(mxUtils.bind(this,function(f){var l=new mxXmlRequest(this.baseUrl+"/users/"+ +"border-box";n.style.padding="4px";n.style.overflow="auto";n.style.lineHeight="1.2em";n.style.height="274px";k.appendChild(n);var t=document.createElement("div");t.style.textOverflow="ellipsis";t.style.boxSizing="border-box";t.style.overflow="hidden";t.style.padding="4px";t.style.width="100%";var f=new CustomDialog(this.ui,k,mxUtils.bind(this,function(){c(d+"/"+b+"/"+encodeURIComponent(e)+"/"+g)}));this.ui.showDialog(f.container,420,360,!0,!0);a&&f.okButton.parentNode.removeChild(f.okButton);var m= +mxUtils.bind(this,function(a,b,c){var d=document.createElement("a");d.setAttribute("href","javascript:void(0);");d.setAttribute("title",a);mxUtils.write(d,a);mxEvent.addListener(d,"click",b);null!=c&&(a=t.cloneNode(),a.style.padding=c,a.appendChild(d),d=a);return d}),p=mxUtils.bind(this,function(a){var c=document.createElement("div");c.style.marginBottom="8px";c.appendChild(m(d+"/"+b,mxUtils.bind(this,function(){g=null;C()})));a||(mxUtils.write(c," / "),c.appendChild(m(decodeURIComponent(e),mxUtils.bind(this, +function(){g=null;x()}))));if(null!=g&&0<g.length){var f=g.split("/");for(a=0;a<f.length;a++)(function(a){mxUtils.write(c," / ");c.appendChild(m(f[a],mxUtils.bind(this,function(){g=f.slice(0,a+1).join("/");z()})))})(a)}n.appendChild(c)}),u=mxUtils.bind(this,function(a){this.ui.handleError(a,null,mxUtils.bind(this,function(){this.ui.spinner.stop();null!=this.getUser()?(g=e=b=d=null,C()):this.ui.hideDialog()}))}),v=null,q=null,z=mxUtils.bind(this,function(k){null==k&&(n.innerHTML="",k=1);var l=new mxXmlRequest(this.baseUrl+ +"/projects/"+encodeURIComponent(d+"/"+b)+"/repository/tree?path="+g+"&ref="+e+"&per_page=100&page="+k,null,"GET");this.ui.spinner.spin(n,mxResources.get("loading"));f.okButton.removeAttribute("disabled");null!=q&&(mxEvent.removeListener(n,"scroll",q),q=null);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var B=mxUtils.bind(this,function(){z(k+ +1)});mxEvent.addListener(v,"click",B);this.executeRequest(l,mxUtils.bind(this,function(f){this.ui.spinner.stop();1==k&&(p(!e),n.appendChild(m("../ [Up]",mxUtils.bind(this,function(){if(""==g)g=null,C();else{var a=g.split("/");g=a.slice(0,a.length-1).join("/");z()}}),"4px")));var l=JSON.parse(f.getText());if(null==l||0==l.length)mxUtils.write(n,mxResources.get("noFiles"));else{var y=!0,u=0;f=mxUtils.bind(this,function(f){for(var k=0;k<l.length;k++)mxUtils.bind(this,function(k){if(f==("tree"==k.type)){var l= +t.cloneNode();l.style.backgroundColor=y?"#eeeeee":"";y=!y;var p=document.createElement("img");p.src=IMAGE_PATH+"/"+("tree"==k.type?"folder.png":"file.png");p.setAttribute("align","absmiddle");p.style.marginRight="4px";p.style.marginTop="-4px";p.width=20;l.appendChild(p);l.appendChild(m(k.name+("tree"==k.type?"/":""),mxUtils.bind(this,function(){"tree"==k.type?(g=k.path,z()):a&&"blob"==k.type&&(this.ui.hideDialog(),c(d+"/"+b+"/"+e+"/"+k.path))})));n.appendChild(l);u++}})(l[k])});f(!0);a&&f(!1);100== +u&&(n.appendChild(v),q=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&B()},mxEvent.addListener(n,"scroll",q))}}),u,!0)}),x=mxUtils.bind(this,function(a){null==a&&(n.innerHTML="",a=1);var c=new mxXmlRequest(this.baseUrl+"/projects/"+encodeURIComponent(d+"/"+b)+"/repository/branches?per_page=100&page="+a,null,"GET");f.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(n,mxResources.get("loading"));null!=q&&(mxEvent.removeListener(n,"scroll",q),q=null);null!=v&&null!=v.parentNode&& +v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var k=mxUtils.bind(this,function(){x(a+1)});mxEvent.addListener(v,"click",k);this.executeRequest(c,mxUtils.bind(this,function(b){this.ui.spinner.stop();1==a&&(p(!0),n.appendChild(m("../ [Up]",mxUtils.bind(this,function(){g=null;C()}),"4px")));b=JSON.parse(b.getText());if(null==b||0==b.length)mxUtils.write(n,mxResources.get("noFiles")); +else{for(var c=0;c<b.length;c++)mxUtils.bind(this,function(a,b){var c=t.cloneNode();c.style.backgroundColor=0==b%2?"#eeeeee":"";c.appendChild(m(a.name,mxUtils.bind(this,function(){e=encodeURIComponent(a.name);g="";z()})));n.appendChild(c)})(b[c],c);100==b.length&&(n.appendChild(v),q=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&k()},mxEvent.addListener(n,"scroll",q))}}),u)});f.okButton.setAttribute("disabled","disabled");this.ui.spinner.spin(n,mxResources.get("loading"));var C=mxUtils.bind(this, +function(a){this.ui.spinner.stop();null==a&&(n.innerHTML="",a=1);null!=q&&(mxEvent.removeListener(n,"scroll",q),q=null);null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v);v=document.createElement("a");v.style.display="block";v.setAttribute("href","javascript:void(0);");mxUtils.write(v,mxResources.get("more")+"...");var c=mxUtils.bind(this,function(){C(a+1)});mxEvent.addListener(v,"click",c);var f=mxUtils.bind(this,function(a){this.ui.spinner.spin(n,mxResources.get("loading"));var b=new mxXmlRequest(this.baseUrl+ +"/groups?per_page=100",null,"GET");this.executeRequest(b,mxUtils.bind(this,function(b){this.ui.spinner.stop();a(JSON.parse(b.getText()))}),u)}),k=mxUtils.bind(this,function(a,b){this.ui.spinner.spin(n,mxResources.get("loading"));var c=new mxXmlRequest(this.baseUrl+"/groups/"+a.id+"/projects?per_page=100",null,"GET");this.executeRequest(c,mxUtils.bind(this,function(c){this.ui.spinner.stop();b(a,JSON.parse(c.getText()))}),u)});f(mxUtils.bind(this,function(f){var l=new mxXmlRequest(this.baseUrl+"/users/"+ this.user.id+"/projects?per_page=100&page="+a,null,"GET");this.ui.spinner.spin(n,mxResources.get("loading"));this.executeRequest(l,mxUtils.bind(this,function(l){this.ui.spinner.stop();l=JSON.parse(l.getText());if(null!=l&&0!=l.length||null!=f&&0!=f.length){1==a&&(n.appendChild(m(mxResources.get("enterValue")+"...",mxUtils.bind(this,function(){var a=new FilenameDialog(this.ui,"org/repo/ref",mxResources.get("ok"),mxUtils.bind(this,function(a){null!=a&&(a=a.split("/"),1<a.length?(d=a[0],b=a[1],e="master", -g=null,2<a.length&&(g=encodeURIComponent(a.slice(2,a.length).join("/"))),z()):(this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})))}),mxResources.get("enterValue"));this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(n),mxUtils.br(n));for(var p=!0,x=0;x<l.length;x++)mxUtils.bind(this,function(a,c){var f=u.cloneNode();f.style.backgroundColor=p?"#eeeeee":"";p=!p;f.appendChild(m(a.name_with_namespace,mxUtils.bind(this,function(){d=a.owner.username;b= -a.path;e=a.default_branch||"master";g="";z()})));n.appendChild(f)})(l[x],x);for(x=0;x<f.length;x++)k(f[x],mxUtils.bind(this,function(a,c){for(var f=0;f<c.length;f++){var k=u.cloneNode();k.style.backgroundColor=p?"#eeeeee":"";p=!p;mxUtils.bind(this,function(c){k.appendChild(m(c.name_with_namespace,mxUtils.bind(this,function(){d=a.full_path;b=c.path;e=c.default_branch||"master";g="";z()})));n.appendChild(k)})(c[f])}}))}else mxUtils.write(n,mxResources.get("noFiles"));100==l.length&&(n.appendChild(v), -q=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&c()},mxEvent.addListener(n,"scroll",q))}),t)}))});this.token?this.user?D():this.updateUser(function(){D()},t,!0):this.authenticate(mxUtils.bind(this,function(){this.updateUser(function(){D()},t,!0)}),t)};GitLabClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null};DrawioComment=function(a,c,d,b,e,g,k){this.file=a;this.id=c;this.content=d;this.modifiedDate=b;this.createdDate=e;this.isResolved=g;this.user=k;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,c,d,b,e){c()};DrawioComment.prototype.editComment=function(a,c,d){c()};DrawioComment.prototype.deleteComment=function(a,c){a()};DriveComment=function(a,c,d,b,e,g,k,l){DrawioComment.call(this,a,c,d,b,e,g,k);this.pCommentId=l};mxUtils.extend(DriveComment,DrawioComment);DriveComment.prototype.addReply=function(a,c,d,b,e){a={content:a.content};b?a.verb="resolve":e&&(a.verb="reopen");this.file.ui.drive.executeRequest({url:"/files/"+this.file.getId()+"/comments/"+this.id+"/replies",params:a,method:"POST"},mxUtils.bind(this,function(a){c(a.replyId)}),d)}; +g=null,2<a.length&&(g=encodeURIComponent(a.slice(2,a.length).join("/"))),z()):(this.ui.spinner.stop(),this.ui.handleError({message:mxResources.get("invalidName")})))}),mxResources.get("enterValue"));this.ui.showDialog(a.container,300,80,!0,!1);a.init()}))),mxUtils.br(n),mxUtils.br(n));for(var p=!0,y=0;y<l.length;y++)mxUtils.bind(this,function(a,c){var f=t.cloneNode();f.style.backgroundColor=p?"#eeeeee":"";p=!p;f.appendChild(m(a.name_with_namespace,mxUtils.bind(this,function(){d=a.owner.username;b= +a.path;e=a.default_branch||"master";g="";z()})));n.appendChild(f)})(l[y],y);for(y=0;y<f.length;y++)k(f[y],mxUtils.bind(this,function(a,c){for(var f=0;f<c.length;f++){var k=t.cloneNode();k.style.backgroundColor=p?"#eeeeee":"";p=!p;mxUtils.bind(this,function(c){k.appendChild(m(c.name_with_namespace,mxUtils.bind(this,function(){d=a.full_path;b=c.path;e=c.default_branch||"master";g="";z()})));n.appendChild(k)})(c[f])}}))}else mxUtils.write(n,mxResources.get("noFiles"));100==l.length&&(n.appendChild(v), +q=function(){n.scrollTop>=n.scrollHeight-n.offsetHeight&&c()},mxEvent.addListener(n,"scroll",q))}),u)}))});this.token?this.user?C():this.updateUser(function(){C()},u,!0):this.authenticate(mxUtils.bind(this,function(){this.updateUser(function(){C()},u,!0)}),u)};GitLabClient.prototype.logout=function(){this.clearPersistentToken();this.setUser(null);this.token=null};DrawioComment=function(a,c,d,b,e,g,k){this.file=a;this.id=c;this.content=d;this.modifiedDate=b;this.createdDate=e;this.isResolved=g;this.user=k;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,c,d,b,e){c()};DrawioComment.prototype.editComment=function(a,c,d){c()};DrawioComment.prototype.deleteComment=function(a,c){a()};DriveComment=function(a,c,d,b,e,g,k,l){DrawioComment.call(this,a,c,d,b,e,g,k);this.pCommentId=l};mxUtils.extend(DriveComment,DrawioComment);DriveComment.prototype.addReply=function(a,c,d,b,e){a={content:a.content};b?a.verb="resolve":e&&(a.verb="reopen");this.file.ui.drive.executeRequest({url:"/files/"+this.file.getId()+"/comments/"+this.id+"/replies",params:a,method:"POST"},mxUtils.bind(this,function(a){c(a.replyId)}),d)}; DriveComment.prototype.editComment=function(a,c,d){this.content=a;a={content:a};this.file.ui.drive.executeRequest(this.pCommentId?{url:"/files/"+this.file.getId()+"/comments/"+this.pCommentId+"/replies/"+this.id,params:a,method:"PATCH"}:{url:"/files/"+this.file.getId()+"/comments/"+this.id,params:a,method:"PATCH"},c,d)}; DriveComment.prototype.deleteComment=function(a,c){this.file.ui.drive.executeRequest(this.pCommentId?{url:"/files/"+this.file.getId()+"/comments/"+this.pCommentId+"/replies/"+this.id,method:"DELETE"}:{url:"/files/"+this.file.getId()+"/comments/"+this.id,method:"DELETE"},a,c)};App=function(a,c,d){EditorUi.call(this,a,c,null!=d?d:"1"==urlParams.lightbox||"min"==uiTheme&&"0"!=urlParams.chrome);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(window.onunload=mxUtils.bind(this,function(){var a=this.getCurrentFile();if(null!=a&&a.isModified()){var c={category:"DISCARD-FILE-"+a.getHash(),action:(a.savingFile?"saving":"")+(a.savingFile&&null!=a.savingFileTime?"_"+Math.round((Date.now()-a.savingFileTime.getTime())/1E3):"")+(null!=a.saveLevel?"-sl_"+a.saveLevel:"")+"-age_"+(null!= a.ageStart?Math.round((Date.now()-a.ageStart.getTime())/1E3):"x")+(this.editor.autosave?"":"-nosave")+(a.isAutosave()?"":"-noauto")+"-open_"+(null!=a.opened?Math.round((Date.now()-a.opened.getTime())/1E3):"x")+"-save_"+(null!=a.lastSaved?Math.round((Date.now()-a.lastSaved.getTime())/1E3):"x")+"-change_"+(null!=a.lastChanged?Math.round((Date.now()-a.lastChanged.getTime())/1E3):"x")+"-alive_"+Math.round((Date.now()-App.startTime.getTime())/1E3),label:null!=a.sync?"client_"+a.sync.clientId:"nosync"}; @@ -9500,8 +9501,8 @@ window.console&&console.error(m)}mxResources.loadDefaultBundle=!1;d(mxResources. "serviceWorker"in navigator&&navigator.serviceWorker.controller&&window.addEventListener("load",function(){navigator.serviceWorker.register("/service-worker.js")});!("ArrayBuffer"in window)||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"auto"!=DrawioFile.SYNC||"1"==urlParams.embed||"1"==urlParams.local||"0"==urlParams.chrome&&"1"!=urlParams.rt||"1"==urlParams.stealth||"1"==urlParams.offline||mxscript(App.PUSHER_URL);if("0"!=urlParams.plugins&&"1"!=urlParams.offline){e=null!=mxSettings.settings? mxSettings.getPlugins():null;if(null==mxSettings.settings&&isLocalStorage&&"undefined"!==typeof JSON)try{var g=JSON.parse(localStorage.getItem(mxSettings.key));null!=g&&(e=g.plugins)}catch(f){}g=urlParams.p;App.initPluginCallback();null!=g&&App.loadPlugins(g.split(";"));if(null!=e&&0<e.length&&"0"!=urlParams.plugins){for(var g=window.location.protocol+"//"+window.location.host,k=!0,l=0;l<e.length&&k;l++)"/"!=e[l].charAt(0)&&e[l].substring(0,g.length)!=g&&(k=!1);if(k||mxUtils.confirm(mxResources.replacePlaceholders("The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n", [e.join("\n")]).replace(/\\n/g,"\n")))for(l=0;l<e.length;l++)try{null==App.pluginsLoaded[e[l]]&&(App.pluginsLoaded[e[l]]=!0,App.embedModePluginsCount++,"/"==e[l].charAt(0)&&(e[l]=PLUGINS_BASE_PATH+e[l]),mxscript(e[l]))}catch(f){}}}"function"===typeof window.DriveClient&&"undefined"===typeof gapi&&("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&isSvgBrowser&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode)?mxscript("https://apis.google.com/js/api.js?onload=DrawGapiClientCallback", -null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&(window.DriveClient=null)}"0"!=urlParams.math&&Editor.initMath();if("1"==urlParams.configure){var n=window.opener||window.parent,u=function(a){if(a.source==n)try{var c=JSON.parse(a.data);null!=c&&"configure"==c.action&&(mxEvent.removeListener(window,"message",u),Editor.configure(c.config,!0),mxSettings.load(),b())}catch(p){null!=window.console&&console.log("Error in configure message: "+p,a.data)}};mxEvent.addListener(window,"message", -u);n.postMessage(JSON.stringify({event:"configure"}),"*")}else{if(null==Editor.config){if(null!=window.DRAWIO_CONFIG)try{EditorUi.debug("Using global configuration",window.DRAWIO_CONFIG),Editor.configure(window.DRAWIO_CONFIG),mxSettings.load()}catch(f){null!=window.console&&console.error(f)}if(isLocalStorage&&null!=localStorage&&"1"!=urlParams.embed&&(e=localStorage.getItem(".configuration"),null!=e))try{e=JSON.parse(e),null!=e&&(EditorUi.debug("Using local configuration",e),Editor.configure(e),mxSettings.load())}catch(f){null!= +null,null,null,mxClient.IS_SVG):"undefined"===typeof window.gapi&&(window.DriveClient=null)}"0"!=urlParams.math&&Editor.initMath();if("1"==urlParams.configure){var n=window.opener||window.parent,t=function(a){if(a.source==n)try{var c=JSON.parse(a.data);null!=c&&"configure"==c.action&&(mxEvent.removeListener(window,"message",t),Editor.configure(c.config,!0),mxSettings.load(),b())}catch(p){null!=window.console&&console.log("Error in configure message: "+p,a.data)}};mxEvent.addListener(window,"message", +t);n.postMessage(JSON.stringify({event:"configure"}),"*")}else{if(null==Editor.config){if(null!=window.DRAWIO_CONFIG)try{EditorUi.debug("Using global configuration",window.DRAWIO_CONFIG),Editor.configure(window.DRAWIO_CONFIG),mxSettings.load()}catch(f){null!=window.console&&console.error(f)}if(isLocalStorage&&null!=localStorage&&"1"!=urlParams.embed&&(e=localStorage.getItem(".configuration"),null!=e))try{e=JSON.parse(e),null!=e&&(EditorUi.debug("Using local configuration",e),Editor.configure(e),mxSettings.load())}catch(f){null!= window.console&&console.error(f)}}b()}};mxUtils.extend(App,EditorUi);App.prototype.defaultUserPicture="https://lh3.googleusercontent.com/-HIzvXUy6QUY/AAAAAAAAAAI/AAAAAAAAAAA/giuR7PQyjEk/photo.jpg?sz=64";App.prototype.shareImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowOTgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMjU2NzdEMTcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMjU2NzdEMDcwRDIxMUUxQjc0MDkxRDhCNUQzOEFGRCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNjgwMTE3NDA3MjA2ODExODcxRkM4MUY1OTFDMjQ5OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowNzgwMTE3NDA3MjA2ODExODhDNkFGMDBEQkQ0RTgwOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrM/fs0AAADgSURBVHjaYmDAA/7//88MwgzkAKDGFiD+BsQ/QWxSNaf9RwN37twpI8WAS+gGfP78+RpQSoRYA36iG/D379+vQClNdLVMOMz4gi7w79+/n0CKg1gD9qELvH379hzIHGK9oA508ieY8//8+fO5rq4uFCilRKwL1JmYmNhhHEZGRiZ+fn6Q2meEbDYG4u3/cYCfP38uA7kOm0ZOIJ7zn0jw48ePPiDFhmzArv8kgi9fvuwB+w5qwH9ykjswbFSZyM4sEMDPBDTlL5BxkFSd7969OwZ2BZKYGhDzkmjOJ4AAAwBhpRqGnEFb8QAAAABJRU5ErkJggg=="; App.prototype.chevronUpImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDg2NEE3NUY1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDg2NEE3NjA1MUVBMTFFM0I3MUVEMTc0N0YyOUI4QzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0ODY0QTc1RDUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0ODY0QTc1RTUxRUExMUUzQjcxRUQxNzQ3RjI5QjhDMSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg+qUokAAAAMUExURQAAANnZ2b+/v////5bgre4AAAAEdFJOU////wBAKqn0AAAAL0lEQVR42mJgRgMMRAswMKAKMDDARBjg8lARBoR6KImkH0wTbygT6YaS4DmAAAMAYPkClOEDDD0AAAAASUVORK5CYII=": IMAGE_PATH+"/chevron-up.png"; @@ -9547,11 +9548,11 @@ App.prototype.addRecent=function(a){if(isLocalStorage&&null!=localStorage){var c App.prototype.resetRecent=function(a){if(isLocalStorage&&null!=localStorage)try{localStorage.removeItem(".recent")}catch(c){}}; App.prototype.onBeforeUnload=function(){if("1"==urlParams.embed&&this.editor.modified)return mxResources.get("allChangesLost");var a=this.getCurrentFile();if(null!=a)if(a.constructor!=LocalFile||""!=a.getHash()||a.isModified()||"1"==urlParams.nowarn||this.isDiagramEmpty()||null!=urlParams.url||this.editor.isChromelessView()){if(a.isModified())return mxResources.get("allChangesLost");a.close(!0)}else return mxResources.get("ensureDataSaved")}; App.prototype.updateDocumentTitle=function(){if(!this.editor.graph.isLightboxView()){var a=this.editor.appName,c=this.getCurrentFile();this.isOfflineApp()&&(a+=" app");null!=c&&(a=(null!=c.getTitle()?c.getTitle():this.defaultFilename)+" - "+a);document.title=a}};App.prototype.createCrcTable=function(){for(var a=[],c,d=0;256>d;d++){c=d;for(var b=0;8>b;b++)c=c&1?3988292384^c>>>1:c>>>1;a[d]=c}return a}; -App.prototype.getThumbnail=function(a,c){var d=!1;try{var b=!0,e=window.setTimeout(mxUtils.bind(this,function(){b=!1;c(null)}),this.timeout),g=mxUtils.bind(this,function(a){window.clearTimeout(e);b&&c(a)});null==this.thumbImageCache&&(this.thumbImageCache={});var k=this.editor.graph,l=null!=k.themes&&"darkTheme"==k.defaultThemeName;if(null!=this.pages&&(this.currentPage!=this.pages[0]||l)){var n=k.getGlobalVariable,k=this.createTemporaryGraph(l?k.getDefaultStylesheet():k.getStylesheet()),u=this.pages[0]; -l&&(k.defaultThemeName="default");k.getGlobalVariable=function(a){return"page"==a?u.getName():"pagenumber"==a?1:n.apply(this,arguments)};k.getGlobalVariable=n;document.body.appendChild(k.container);k.model.setRoot(u.root)}if(mxClient.IS_CHROMEAPP||this.useCanvasForExport)this.exportToCanvas(mxUtils.bind(this,function(a){try{k!=this.editor.graph&&null!=k.container.parentNode&&k.container.parentNode.removeChild(k.container)}catch(A){a=null}g(a)}),a,this.thumbImageCache,"#ffffff",function(){g()},null, -null,null,null,null,null,k),d=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var f=document.createElement("canvas"),m=k.getGraphBounds(),p=a/m.width,p=Math.min(1,Math.min(3*a/(4*m.height),p)),t=Math.floor(m.x),v=Math.floor(m.y);f.setAttribute("width",Math.ceil(p*(m.width+4)));f.setAttribute("height",Math.ceil(p*(m.height+4)));var q=f.getContext("2d");q.scale(p,p);q.translate(-t,-v);var z=k.background;if(null==z||""==z||z==mxConstants.NONE)z="#ffffff";q.save();q.fillStyle=z;q.fillRect(t, -v,Math.ceil(m.width+4),Math.ceil(m.height+4));q.restore();var y=new mxJsCanvas(f),D=new mxAsyncCanvas(this.thumbImageCache);y.images=this.thumbImageCache.images;var H=new mxImageExport;H.drawShape=function(a,b){a.shape instanceof mxShape&&a.shape.checkBounds()&&(b.save(),b.translate(.5,.5),a.shape.paint(b),b.translate(-.5,-.5),b.restore())};H.drawText=function(a,b){};H.drawState(k.getView().getState(k.model.root),D);D.finish(mxUtils.bind(this,function(){try{H.drawState(k.getView().getState(k.model.root), -y),k!=this.editor.graph&&null!=k.container.parentNode&&k.container.parentNode.removeChild(k.container)}catch(x){f=null}g(f)}));d=!0}}catch(x){d=!1,null!=k&&k!=this.editor.graph&&null!=k.container.parentNode&&k.container.parentNode.removeChild(k.container)}return d}; +App.prototype.getThumbnail=function(a,c){var d=!1;try{var b=!0,e=window.setTimeout(mxUtils.bind(this,function(){b=!1;c(null)}),this.timeout),g=mxUtils.bind(this,function(a){window.clearTimeout(e);b&&c(a)});null==this.thumbImageCache&&(this.thumbImageCache={});var k=this.editor.graph,l=null!=k.themes&&"darkTheme"==k.defaultThemeName;if(null!=this.pages&&(this.currentPage!=this.pages[0]||l)){var n=k.getGlobalVariable,k=this.createTemporaryGraph(l?k.getDefaultStylesheet():k.getStylesheet()),t=this.pages[0]; +l&&(k.defaultThemeName="default");k.getGlobalVariable=function(a){return"page"==a?t.getName():"pagenumber"==a?1:n.apply(this,arguments)};k.getGlobalVariable=n;document.body.appendChild(k.container);k.model.setRoot(t.root)}if(mxClient.IS_CHROMEAPP||this.useCanvasForExport)this.exportToCanvas(mxUtils.bind(this,function(a){try{k!=this.editor.graph&&null!=k.container.parentNode&&k.container.parentNode.removeChild(k.container)}catch(B){a=null}g(a)}),a,this.thumbImageCache,"#ffffff",function(){g()},null, +null,null,null,null,null,k),d=!0;else if(this.canvasSupported&&null!=this.getCurrentFile()){var f=document.createElement("canvas"),m=k.getGraphBounds(),p=a/m.width,p=Math.min(1,Math.min(3*a/(4*m.height),p)),u=Math.floor(m.x),v=Math.floor(m.y);f.setAttribute("width",Math.ceil(p*(m.width+4)));f.setAttribute("height",Math.ceil(p*(m.height+4)));var q=f.getContext("2d");q.scale(p,p);q.translate(-u,-v);var z=k.background;if(null==z||""==z||z==mxConstants.NONE)z="#ffffff";q.save();q.fillStyle=z;q.fillRect(u, +v,Math.ceil(m.width+4),Math.ceil(m.height+4));q.restore();var x=new mxJsCanvas(f),C=new mxAsyncCanvas(this.thumbImageCache);x.images=this.thumbImageCache.images;var H=new mxImageExport;H.drawShape=function(a,b){a.shape instanceof mxShape&&a.shape.checkBounds()&&(b.save(),b.translate(.5,.5),a.shape.paint(b),b.translate(-.5,-.5),b.restore())};H.drawText=function(a,b){};H.drawState(k.getView().getState(k.model.root),C);C.finish(mxUtils.bind(this,function(){try{H.drawState(k.getView().getState(k.model.root), +x),k!=this.editor.graph&&null!=k.container.parentNode&&k.container.parentNode.removeChild(k.container)}catch(y){f=null}g(f)}));d=!0}}catch(y){d=!1,null!=k&&k!=this.editor.graph&&null!=k.container.parentNode&&k.container.parentNode.removeChild(k.container)}return d}; App.prototype.createBackground=function(){var a=this.createDiv("background");a.style.position="absolute";a.style.background="white";a.style.left="0px";a.style.top="0px";a.style.bottom="0px";a.style.right="0px";mxUtils.setOpacity(a,100);mxClient.IS_QUIRKS&&new mxDivResizer(a);return a}; (function(){var a=EditorUi.prototype.setMode;App.prototype.setMode=function(c,d){a.apply(this,arguments);null!=this.mode&&(Editor.useLocalStorage=this.mode==App.MODE_BROWSER);if(null!=this.appIcon){var b=this.getCurrentFile();c=null!=b?b.getMode():c;c==App.MODE_GOOGLE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("googleDrive")])),this.appIcon.style.cursor="pointer"):c==App.MODE_DROPBOX?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("dropbox")])), this.appIcon.style.cursor="pointer"):c==App.MODE_ONEDRIVE?(this.appIcon.setAttribute("title",mxResources.get("openIt",[mxResources.get("oneDrive")])),this.appIcon.style.cursor="pointer"):(this.appIcon.removeAttribute("title"),this.appIcon.style.cursor=c==App.MODE_DEVICE?"pointer":"default")}if(d)try{if(isLocalStorage)localStorage.setItem(".mode",c);else if("undefined"!=typeof Storage){var e=new Date;e.setYear(e.getFullYear()+1);document.cookie="MODE="+c+"; expires="+e.toUTCString()}}catch(g){}}})(); @@ -9571,12 +9572,12 @@ App.prototype.start=function(){null!=this.bg&&null!=this.bg.parentNode&&this.bg. "hashchange",mxUtils.bind(this,function(a){try{this.hideDialog();var b=this.getDiagramId(),c=this.getCurrentFile();null!=c&&c.getHash()==b||this.loadFile(b,!0)}catch(l){null!=document.body&&this.handleError(l,mxResources.get("errorLoadingFile"),mxUtils.bind(this,function(){var a=this.getCurrentFile();window.location.hash=null!=a?a.getHash():""}))}}))}if((null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.url)this.loadFile("U"+urlParams.url,!0);else if(null==this.getCurrentFile()){var a= mxUtils.bind(this,function(){if("1"==urlParams.client&&(null==window.location.hash||0==window.location.hash.length||"#P"==window.location.hash.substring(0,2))){var a=mxUtils.bind(this,function(a){"data:image/png;base64,"==a.substring(0,22)&&(a=this.extractGraphModelFromPng(a));var b=urlParams.title,b=null!=b?decodeURIComponent(b):this.defaultFilename;a=new LocalFile(this,a,b,!0);null!=window.location.hash&&"#P"==window.location.hash.substring(0,2)&&(a.getHash=function(){return window.location.hash.substring(1)}); this.fileLoaded(a);this.getCurrentFile().setModified(!this.editor.chromeless)}),b=window.opener||window.parent;if(b!=window){var c=urlParams.create;null!=c?a(b[decodeURIComponent(c)]):(c=urlParams.data,null!=c?a(decodeURIComponent(c)):this.installMessageHandler(mxUtils.bind(this,function(c,d){d.source==b&&a(c)})))}}else if(null==this.dialog)if("1"==urlParams.demo)c=Editor.useLocalStorage,this.createFile(this.defaultFilename,null,null,null,null,null,null,!0),Editor.useLocalStorage=c;else{c=!1;try{c= -null!=window.opener&&null!=window.opener.openFile}catch(l){}c?this.spinner.spin(document.body,mxResources.get("loading")):(c=this.getDiagramId(),!EditorUi.enableDrafts||"draw.io"!=this.getServiceName()||null!=c&&0!=c.length?"0"!=urlParams.splash?this.loadFile(c):this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0):this.checkDrafts())}}),c=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&&null!=c&&0<c.length&&this.spinner.spin(document.body, -mxResources.get("loading"))){var d=mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("reconnecting"))&&(window.location.search=this.getSearch(["create","title"]))}),b=mxUtils.bind(this,function(a){this.spinner.stop();if("0"!=urlParams.splash){this.fileLoaded(new LocalFile(this,a,null));this.editor.graph.setEnabled(!1);this.mode=urlParams.mode;var b=urlParams.title,b=null!=b?decodeURIComponent(b):this.defaultFilename;a=this.getServiceCount(!0);isLocalStorage&&a++;var c=4>= -a?2:6<a?4:3,b=new CreateDialog(this,b,mxUtils.bind(this,function(a,b){if(null==b){this.hideDialog();var c=Editor.useLocalStorage;this.createFile(0<a.length?a:this.defaultFilename,this.getFileData(),null,null,null,!0,null,!0);Editor.useLocalStorage=c}else this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a,this.getFileData(!0),null,b,null,!0,c)}))}),null,null,null,null,"1"==urlParams.browser,null,null,!0,c,null,null,null,this.editor.fileExtensions);this.showDialog(b.container,400,a>c? -390:270,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&this.showSplash()}));b.init()}}),c=decodeURIComponent(c);if("http://"!=c.substring(0,7)&&"https://"!=c.substring(0,8))try{null!=window.opener&&null!=window.opener[c]?b(window.opener[c]):this.handleError(null,mxResources.get("errorLoadingFile"))}catch(e){this.handleError(e,mxResources.get("errorLoadingFile"))}else this.loadTemplate(c,function(a){b(a)},mxUtils.bind(this,function(){this.handleError(null,mxResources.get("errorLoadingFile"), -d)}))}else(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.state&&null!=this.stateArg&&"open"==this.stateArg.action?null!=this.stateArg.ids&&(window.history&&window.history.replaceState&&window.history.replaceState(null,null,window.location.pathname+this.getSearch(["state"])),window.location.hash="G"+this.stateArg.ids[0]):(null==window.location.hash||1>=window.location.hash.length)&&null!=this.drive&&null!=this.stateArg&&"create"==this.stateArg.action?(this.setMode(App.MODE_GOOGLE), -this.actions.get("new").funct()):a()}}catch(e){this.handleError(e)}};App.prototype.loadDraft=function(a,c){this.createFile(this.defaultFilename,a,null,null,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&(a.fileChanged(),null!=c&&c())}),0)}),null,null,!0)}; +null!=window.opener&&null!=window.opener.openFile}catch(l){}c?this.spinner.spin(document.body,mxResources.get("loading")):(c=this.getDiagramId(),!EditorUi.enableDrafts||null!=urlParams.mode||"draw.io"!=this.getServiceName()||null!=c&&0!=c.length?"0"!=urlParams.splash?this.loadFile(c):this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0):this.checkDrafts())}}),c=decodeURIComponent(urlParams.create||"");if((null==window.location.hash||1>=window.location.hash.length)&& +null!=c&&0<c.length&&this.spinner.spin(document.body,mxResources.get("loading"))){var d=mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("reconnecting"))&&(window.location.search=this.getSearch(["create","title"]))}),b=mxUtils.bind(this,function(a){this.spinner.stop();if("0"!=urlParams.splash){this.fileLoaded(new LocalFile(this,a,null));this.editor.graph.setEnabled(!1);this.mode=urlParams.mode;var b=urlParams.title,b=null!=b?decodeURIComponent(b):this.defaultFilename;a= +this.getServiceCount(!0);isLocalStorage&&a++;var c=4>=a?2:6<a?4:3,b=new CreateDialog(this,b,mxUtils.bind(this,function(a,b){if(null==b){this.hideDialog();var c=Editor.useLocalStorage;this.createFile(0<a.length?a:this.defaultFilename,this.getFileData(),null,null,null,!0,null,!0);Editor.useLocalStorage=c}else this.pickFolder(b,mxUtils.bind(this,function(c){this.createFile(a,this.getFileData(!0),null,b,null,!0,c)}))}),null,null,null,null,"1"==urlParams.browser,null,null,!0,c,null,null,null,this.editor.fileExtensions); +this.showDialog(b.container,400,a>c?390:270,!0,!1,mxUtils.bind(this,function(a){a&&null==this.getCurrentFile()&&this.showSplash()}));b.init()}}),c=decodeURIComponent(c);if("http://"!=c.substring(0,7)&&"https://"!=c.substring(0,8))try{null!=window.opener&&null!=window.opener[c]?b(window.opener[c]):this.handleError(null,mxResources.get("errorLoadingFile"))}catch(e){this.handleError(e,mxResources.get("errorLoadingFile"))}else this.loadTemplate(c,function(a){b(a)},mxUtils.bind(this,function(){this.handleError(null, +mxResources.get("errorLoadingFile"),d)}))}else(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.state&&null!=this.stateArg&&"open"==this.stateArg.action?null!=this.stateArg.ids&&(window.history&&window.history.replaceState&&window.history.replaceState(null,null,window.location.pathname+this.getSearch(["state"])),window.location.hash="G"+this.stateArg.ids[0]):(null==window.location.hash||1>=window.location.hash.length)&&null!=this.drive&&null!=this.stateArg&&"create"==this.stateArg.action? +(this.setMode(App.MODE_GOOGLE),this.actions.get("new").funct()):a()}}catch(e){this.handleError(e)}};App.prototype.loadDraft=function(a,c){this.createFile(this.defaultFilename,a,null,null,mxUtils.bind(this,function(){window.setTimeout(mxUtils.bind(this,function(){var a=this.getCurrentFile();null!=a&&(a.fileChanged(),null!=c&&c())}),0)}),null,null,!0)}; App.prototype.checkDrafts=function(){try{var a=Editor.guid();localStorage.setItem(".draft-alive-check",a);window.setTimeout(mxUtils.bind(this,function(){localStorage.removeItem(".draft-alive-check");this.getDatabaseItems(mxUtils.bind(this,function(c){for(var d=[],b=0;b<c.length;b++)try{var e=c[b].key;if(null!=e&&".draft_"==e.substring(0,7)){var g=JSON.parse(c[b].data);null!=g&&"draft"==g.type&&g.aliveCheck!=a&&(g.key=e,d.push(g))}}catch(k){}1==d.length?this.loadDraft(d[0].data,mxUtils.bind(this,function(){this.removeDatabaseItem(d[0].key)})): 1<d.length?(c=new Date(d[0].modified),c=new DraftDialog(this,1<d.length?mxResources.get("selectDraft"):mxResources.get("draftFound",[c.toLocaleDateString()+" "+c.toLocaleTimeString()]),1<d.length?null:d[0].data,mxUtils.bind(this,function(a){this.hideDialog();a=""!=a?a:0;this.loadDraft(d[a].data,mxUtils.bind(this,function(){this.removeDatabaseItem(d[a].key)}))}),mxUtils.bind(this,function(a,b){a=""!=a?a:0;this.confirm(mxResources.get("areYouSure"),null,mxUtils.bind(this,function(){this.removeDatabaseItem(d[a].key); null!=b&&b()}),mxResources.get("no"),mxResources.get("yes"))}),null,null,null,1<d.length?d:null),this.showDialog(c.container,640,480,!0,!1,mxUtils.bind(this,function(a){"0"==urlParams.splash?this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0):this.loadFile()})),c.init()):"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename,this.getFileData(),null,null,null,null,null,!0)}),mxUtils.bind(this,function(){"0"!=urlParams.splash?this.loadFile():this.createFile(this.defaultFilename, @@ -9598,21 +9599,21 @@ App.prototype.saveLibrary=function(a,c,d,b,e,g,k){try{b=null!=b?b:this.mode;e=nu l,d,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),n,this.drive.libraryMimeType):b==App.MODE_GITHUB&&null!=this.gitHub&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitHub.insertLibrary(a,l,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),n,d):b==App.MODE_GITLAB&&null!=this.gitLab&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.gitLab.insertLibrary(a,l,mxUtils.bind(this, function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),n,d):b==App.MODE_TRELLO&&null!=this.trello&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.trello.insertLibrary(a,l,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),n,d):b==App.MODE_DROPBOX&&null!=this.dropbox&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.dropbox.insertLibrary(a,l,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0); this.libraryLoaded(a,c)}),n,d):b==App.MODE_ONEDRIVE&&null!=this.oneDrive&&this.spinner.spin(document.body,mxResources.get("inserting"))?this.oneDrive.insertLibrary(a,l,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);this.libraryLoaded(a,c)}),n,d):b==App.MODE_BROWSER?(d=mxUtils.bind(this,function(){var b=new StorageLibrary(this,l,a);b.saveFile(a,!1,mxUtils.bind(this,function(){this.hideDialog(!0);this.libraryLoaded(b,c)}),n)}),null==localStorage.getItem(a)?d():this.confirm(mxResources.get("replaceIt", -[a]),d)):this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}));else if(e||this.spinner.spin(document.body,mxResources.get("saving"))){d.setData(l);var u=mxUtils.bind(this,function(){d.save(!0,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);g||this.libraryLoaded(d,c);null!=k&&k()}),n)});if(a!=d.getTitle()){var f=d.getHash();d.rename(a,mxUtils.bind(this,function(a){d.constructor!=LocalLibrary&&f!=d.getHash()&&(mxSettings.removeCustomLibrary(f),mxSettings.addCustomLibrary(d.getHash())); -this.removeLibrarySidebar(f);u()}),n)}else u()}}catch(m){this.handleError(m)}}; +[a]),d)):this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})}));else if(e||this.spinner.spin(document.body,mxResources.get("saving"))){d.setData(l);var t=mxUtils.bind(this,function(){d.save(!0,mxUtils.bind(this,function(a){this.spinner.stop();this.hideDialog(!0);g||this.libraryLoaded(d,c);null!=k&&k()}),n)});if(a!=d.getTitle()){var f=d.getHash();d.rename(a,mxUtils.bind(this,function(a){d.constructor!=LocalLibrary&&f!=d.getHash()&&(mxSettings.removeCustomLibrary(f),mxSettings.addCustomLibrary(d.getHash())); +this.removeLibrarySidebar(f);t()}),n)}else t()}}catch(m){this.handleError(m)}}; App.prototype.saveFile=function(a,c){var d=this.getCurrentFile();if(null!=d){var b=mxUtils.bind(this,function(){EditorUi.enableDrafts&&d.removeDraft();this.getCurrentFile()==d||d.isModified()||(d.getMode()!=App.MODE_DEVICE?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get("allChangesSaved"))):this.editor.setStatus(""));null!=c&&c()});if(a||null==d.getTitle()||null==this.mode){var e=null!=d.getTitle()?d.getTitle():this.defaultFilename,g=!mxClient.IS_IOS||!navigator.standalone,k=this.mode, l=this.getServiceCount(!0);isLocalStorage&&l++;var n=4>=l?2:6<l?4:3,e=new CreateDialog(this,e,mxUtils.bind(this,function(a,c,d){null!=a&&0<a.length&&(/(\.pdf)$/i.test(a)?this.confirm(mxResources.get("didYouMeanToExportToPdf"),mxUtils.bind(this,function(){this.hideDialog();this.actions.get("exportPdf").funct()}),mxUtils.bind(this,function(){d.value=a.split(".").slice(0,-1).join(".");d.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?d.select():document.execCommand("selectAll", !1,null)}),mxResources.get("yes"),mxResources.get("no")):(this.hideDialog(),null==k&&c==App.MODE_DEVICE?(this.setMode(App.MODE_DEVICE),this.save(a,b)):"download"==c?(new LocalFile(this,null,a)).save():"_blank"==c?(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(this.getFileData(!0)),this.openLink(this.getUrl(window.location.pathname),null,!0)):k!=c?this.pickFolder(c,mxUtils.bind(this,function(d){this.createFile(a,this.getFileData(/(\.xml)$/i.test(a)||0>a.indexOf(".")|| /(\.drawio)$/i.test(a),/(\.svg)$/i.test(a),/(\.html)$/i.test(a)),null,c,b,null==this.mode,d)})):null!=c&&this.save(a,b)))}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),null,null,g,null,!0,n,null,null,null,this.editor.fileExtensions,!1);this.showDialog(e.container,400,l>n?390:270,!0,!0);e.init()}else this.save(d.getTitle(),b)}}; App.prototype.loadTemplate=function(a,c,d,b){var e=!1,g=a;this.editor.isCorsEnabledForUrl(g)||(g="t="+(new Date).getTime(),g=PROXY_URL+"?url="+encodeURIComponent(a)+"&base64=1&"+g,e=!0);var k=null!=b?b:a;this.loadUrl(g,mxUtils.bind(this,function(b){try{var g=e?!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(b):atob(b):b;if(/(\.v(dx|sdx?))($|\?)/i.test(k)||this.isVisioData(g))this.importVisio(this.base64ToBlob(b.substring(b.indexOf(",")+1)),function(a){c(a)},d,k);else if(!this.isOffline()&& -(new XMLHttpRequest).upload&&this.isRemoteFileFormat(g,k))this.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&c(a.responseText)}),a);else if(this.isLucidChartData(g))this.convertLucidChart(g,mxUtils.bind(this,function(a){c(a)}),mxUtils.bind(this,function(a){d(a)}));else{if(/(\.png)($|\?)/i.test(k)||this.isPngData(g))g=this.extractGraphModelFromPng(b);c(g)}}catch(u){d(u)}}), +(new XMLHttpRequest).upload&&this.isRemoteFileFormat(g,k))this.parseFile(new Blob([g],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&"<mxGraphModel"==a.responseText.substring(0,13)&&c(a.responseText)}),a);else if(this.isLucidChartData(g))this.convertLucidChart(g,mxUtils.bind(this,function(a){c(a)}),mxUtils.bind(this,function(a){d(a)}));else{if(/(\.png)($|\?)/i.test(k)||this.isPngData(g))g=this.extractGraphModelFromPng(b);c(g)}}catch(t){d(t)}}), d,/(\.png)($|\?)/i.test(k)||/(\.v(dx|sdx?))($|\?)/i.test(k),null,null,e)};App.prototype.getPeerForMode=function(a){return a==App.MODE_GOOGLE?this.drive:a==App.MODE_GITHUB?this.gitHub:a==App.MODE_GITLAB?this.gitLab:a==App.MODE_DROPBOX?this.dropbox:a==App.MODE_ONEDRIVE?this.oneDrive:a==App.MODE_TRELLO?this.trello:null}; -App.prototype.createFile=function(a,c,d,b,e,g,k,l,n){b=l?null:null!=b?b:this.mode;if(null!=a&&this.spinner.spin(document.body,mxResources.get("inserting"))){c=null!=c?c:this.emptyDiagramXml;var u=mxUtils.bind(this,function(){this.spinner.stop()}),f=mxUtils.bind(this,function(a){u();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{if(b==App.MODE_GOOGLE&&null!=this.drive)null==k&&null!=this.stateArg&&null!=this.stateArg.folderId&&(k=this.stateArg.folderId), -this.drive.insertFile(a,c,k,mxUtils.bind(this,function(a){u();this.fileCreated(a,d,g,e,n)}),f);else if(b==App.MODE_GITHUB&&null!=this.gitHub)this.gitHub.insertFile(a,c,mxUtils.bind(this,function(a){u();this.fileCreated(a,d,g,e,n)}),f,!1,k);else if(b==App.MODE_GITLAB&&null!=this.gitLab)this.gitLab.insertFile(a,c,mxUtils.bind(this,function(a){u();this.fileCreated(a,d,g,e,n)}),f,!1,k);else if(b==App.MODE_TRELLO&&null!=this.trello)this.trello.insertFile(a,c,mxUtils.bind(this,function(a){u();this.fileCreated(a, -d,g,e,n)}),f,!1,k);else if(b==App.MODE_DROPBOX&&null!=this.dropbox)this.dropbox.insertFile(a,c,mxUtils.bind(this,function(a){u();this.fileCreated(a,d,g,e,n)}),f);else if(b==App.MODE_ONEDRIVE&&null!=this.oneDrive)this.oneDrive.insertFile(a,c,mxUtils.bind(this,function(a){u();this.fileCreated(a,d,g,e,n)}),f,!1,k);else if(b==App.MODE_BROWSER){u();var m=mxUtils.bind(this,function(){var b=new StorageFile(this,c,a);b.saveFile(a,!1,mxUtils.bind(this,function(){this.fileCreated(b,d,g,e,n)}),f)});null==localStorage.getItem(a)? -m():this.confirm(mxResources.get("replaceIt",[a]),m,mxUtils.bind(this,function(){null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}else u(),this.fileCreated(new LocalFile(this,c,a,null==b),d,g,e,n)}catch(p){u(),this.handleError(p)}}}; -App.prototype.fileCreated=function(a,c,d,b,e){var g=window.location.pathname;null!=c&&0<c.length&&(g+="?libs="+c);null!=e&&0<e.length&&(g+="?clibs="+e);g=this.getUrl(g);a.getMode()!=App.MODE_DEVICE&&(g+="#"+a.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var k=a.getData(),k=0<k.length?this.editor.extractGraphModel(mxUtils.parseXml(k).documentElement,!0):null,l=window.location.protocol+"//"+window.location.hostname+g,n=k,u=null;null!=k&&/\.svg$/i.test(a.getTitle())&& -(u=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(u.container),n=this.decodeNodeIntoGraph(n,u));a.setData(this.createFileData(k,u,a,l));null!=u&&u.container.parentNode.removeChild(u.container);var f=mxUtils.bind(this,function(){this.spinner.stop()}),m=mxUtils.bind(this,function(){f();var k=this.getCurrentFile();null==d&&null!=k&&(d=!k.isModified()&&null==k.getMode());var l=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(a);d&&a.addAllSavedStatus(); +App.prototype.createFile=function(a,c,d,b,e,g,k,l,n){b=l?null:null!=b?b:this.mode;if(null!=a&&this.spinner.spin(document.body,mxResources.get("inserting"))){c=null!=c?c:this.emptyDiagramXml;var t=mxUtils.bind(this,function(){this.spinner.stop()}),f=mxUtils.bind(this,function(a){t();null==a&&null==this.getCurrentFile()&&null==this.dialog?this.showSplash():null!=a&&this.handleError(a)});try{if(b==App.MODE_GOOGLE&&null!=this.drive)null==k&&null!=this.stateArg&&null!=this.stateArg.folderId&&(k=this.stateArg.folderId), +this.drive.insertFile(a,c,k,mxUtils.bind(this,function(a){t();this.fileCreated(a,d,g,e,n)}),f);else if(b==App.MODE_GITHUB&&null!=this.gitHub)this.gitHub.insertFile(a,c,mxUtils.bind(this,function(a){t();this.fileCreated(a,d,g,e,n)}),f,!1,k);else if(b==App.MODE_GITLAB&&null!=this.gitLab)this.gitLab.insertFile(a,c,mxUtils.bind(this,function(a){t();this.fileCreated(a,d,g,e,n)}),f,!1,k);else if(b==App.MODE_TRELLO&&null!=this.trello)this.trello.insertFile(a,c,mxUtils.bind(this,function(a){t();this.fileCreated(a, +d,g,e,n)}),f,!1,k);else if(b==App.MODE_DROPBOX&&null!=this.dropbox)this.dropbox.insertFile(a,c,mxUtils.bind(this,function(a){t();this.fileCreated(a,d,g,e,n)}),f);else if(b==App.MODE_ONEDRIVE&&null!=this.oneDrive)this.oneDrive.insertFile(a,c,mxUtils.bind(this,function(a){t();this.fileCreated(a,d,g,e,n)}),f,!1,k);else if(b==App.MODE_BROWSER){t();var m=mxUtils.bind(this,function(){var b=new StorageFile(this,c,a);b.saveFile(a,!1,mxUtils.bind(this,function(){this.fileCreated(b,d,g,e,n)}),f)});null==localStorage.getItem(a)? +m():this.confirm(mxResources.get("replaceIt",[a]),m,mxUtils.bind(this,function(){null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}else t(),this.fileCreated(new LocalFile(this,c,a,null==b),d,g,e,n)}catch(p){t(),this.handleError(p)}}}; +App.prototype.fileCreated=function(a,c,d,b,e){var g=window.location.pathname;null!=c&&0<c.length&&(g+="?libs="+c);null!=e&&0<e.length&&(g+="?clibs="+e);g=this.getUrl(g);a.getMode()!=App.MODE_DEVICE&&(g+="#"+a.getHash());if(this.spinner.spin(document.body,mxResources.get("inserting"))){var k=a.getData(),k=0<k.length?this.editor.extractGraphModel(mxUtils.parseXml(k).documentElement,!0):null,l=window.location.protocol+"//"+window.location.hostname+g,n=k,t=null;null!=k&&/\.svg$/i.test(a.getTitle())&& +(t=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(t.container),n=this.decodeNodeIntoGraph(n,t));a.setData(this.createFileData(k,t,a,l));null!=t&&t.container.parentNode.removeChild(t.container);var f=mxUtils.bind(this,function(){this.spinner.stop()}),m=mxUtils.bind(this,function(){f();var k=this.getCurrentFile();null==d&&null!=k&&(d=!k.isModified()&&null==k.getMode());var l=mxUtils.bind(this,function(){window.openFile=null;this.fileLoaded(a);d&&a.addAllSavedStatus(); null!=c&&this.sidebar.showEntries(c);if(null!=e){for(var b=[],f=e.split(";"),g=0;g<f.length;g++)b.push(decodeURIComponent(f[g]));this.loadLibraries(b)}}),m=mxUtils.bind(this,function(){d||null==k||!k.isModified()?l():this.confirm(mxResources.get("allChangesLost"),null,l,mxResources.get("cancel"),mxResources.get("discardChanges"))});null!=b&&b();null==d||d?m():(a.constructor==LocalFile&&(window.openFile=new OpenFile(function(){window.openFile=null}),window.openFile.setData(a.getData(),a.getTitle(), null==a.getMode())),null!=b&&b(),window.openWindow(g,null,m))});a.constructor==LocalFile?m():a.saveFile(a.getTitle(),!1,mxUtils.bind(this,function(){m()}),mxUtils.bind(this,function(a){f();this.handleError(a)}))}}; App.prototype.loadFile=function(a,c,d,b,e){this.hideDialog();var g=mxUtils.bind(this,function(){if(null==a||0==a.length)this.editor.setStatus(""),this.fileLoaded(null);else if(this.spinner.spin(document.body,mxResources.get("loading")))if("L"==a.charAt(0))if(this.spinner.stop(),isLocalStorage)try{a=decodeURIComponent(a.substring(1));var e=localStorage.getItem(a);if(null!=e)this.fileLoaded(new StorageFile(this,e,a)),null!=b&&b();else throw{message:mxResources.get("fileNotFound")};}catch(p){this.handleError(p, @@ -9629,9 +9630,9 @@ App.prototype.getLibraryStorageHint=function(a){var c=a.getTitle();a.constructor mxResources.get("browser")+")":a.constructor==LocalLibrary&&(c+=" ("+mxResources.get("device")+")");return c};App.prototype.restoreLibraries=function(){this.loadLibraries(mxSettings.getCustomLibraries(),mxUtils.bind(this,function(){this.loadLibraries((urlParams.clibs||"").split(";"))}))}; App.prototype.loadLibraries=function(a,c){if(null!=this.sidebar){null==this.pendingLibraries&&(this.pendingLibraries={});var d=mxUtils.bind(this,function(a,b){b||mxSettings.removeCustomLibrary(a);delete this.pendingLibraries[a]}),b=0,e=[],g=mxUtils.bind(this,function(){if(0==b){if(null!=a)for(var d=a.length-1;0<=d;d--)null!=e[d]&&this.loadLibrary(e[d]);null!=c&&c()}});if(null!=a)for(var k=0;k<a.length;k++){var l=encodeURIComponent(decodeURIComponent(a[k]));mxUtils.bind(this,function(a,c){if(null!= a&&0<a.length&&null==this.pendingLibraries[a]&&null==this.sidebar.palettes[a]){b++;var f=mxUtils.bind(this,function(d){delete this.pendingLibraries[a];e[c]=d;b--;g()}),k=mxUtils.bind(this,function(c){d(a,c);b--;g()});this.pendingLibraries[a]=!0;var l=a.substring(0,1);if("L"==l)(isLocalStorage||mxClient.IS_CHROMEAPP)&&window.setTimeout(mxUtils.bind(this,function(){try{var b=decodeURIComponent(a.substring(1));this.getLocalData(b,mxUtils.bind(this,function(a){".scratchpad"==b&&null==a&&(a=this.emptyLibraryXml); -null!=a?f(new StorageLibrary(this,a,b)):k()}))}catch(y){k()}}),0);else if("U"==l){var n=decodeURIComponent(a.substring(1));if(!this.isOffline()){l=n;this.editor.isCorsEnabledForUrl(l)||(l="t="+(new Date).getTime(),l=PROXY_URL+"?url="+encodeURIComponent(n)+"&"+l);try{mxUtils.get(l,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus())try{f(new UrlLibrary(this,a.getText(),n))}catch(y){k()}else k()}),function(){k()})}catch(z){k()}}}else if("R"==l){if(l=decodeURIComponent(a.substring(1)), -!this.isOffline())try{var l=JSON.parse(l),u={id:l[0],title:l[1],downloadUrl:l[2]};this.remoteInvoke("getFileContent",[u.downloadUrl],null,mxUtils.bind(this,function(a){try{f(new RemoteLibrary(this,a,u))}catch(y){k()}}),function(){k()})}catch(z){k()}}else if("S"==l&&null!=this.loadDesktopLib)try{this.loadDesktopLib(decodeURIComponent(a.substring(1)),function(a){f(a)},k)}catch(z){k()}else{var q=null;"G"==l?null!=this.drive&&null!=this.drive.user&&(q=this.drive):"H"==l?null!=this.gitHub&&null!=this.gitHub.getUser()&& -(q=this.gitHub):"T"==l?null!=this.trello&&this.trello.isAuthorized()&&(q=this.trello):"D"==l?null!=this.dropbox&&null!=this.dropbox.getUser()&&(q=this.dropbox):"W"==l&&null!=this.oneDrive&&null!=this.oneDrive.getUser()&&(q=this.oneDrive);null!=q?q.getLibrary(decodeURIComponent(a.substring(1)),mxUtils.bind(this,function(a){try{f(a)}catch(y){k()}}),function(a){k()}):k(!0)}}})(l,k)}g()}}; +null!=a?f(new StorageLibrary(this,a,b)):k()}))}catch(x){k()}}),0);else if("U"==l){var n=decodeURIComponent(a.substring(1));if(!this.isOffline()){l=n;this.editor.isCorsEnabledForUrl(l)||(l="t="+(new Date).getTime(),l=PROXY_URL+"?url="+encodeURIComponent(n)+"&"+l);try{mxUtils.get(l,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus())try{f(new UrlLibrary(this,a.getText(),n))}catch(x){k()}else k()}),function(){k()})}catch(z){k()}}}else if("R"==l){if(l=decodeURIComponent(a.substring(1)), +!this.isOffline())try{var l=JSON.parse(l),t={id:l[0],title:l[1],downloadUrl:l[2]};this.remoteInvoke("getFileContent",[t.downloadUrl],null,mxUtils.bind(this,function(a){try{f(new RemoteLibrary(this,a,t))}catch(x){k()}}),function(){k()})}catch(z){k()}}else if("S"==l&&null!=this.loadDesktopLib)try{this.loadDesktopLib(decodeURIComponent(a.substring(1)),function(a){f(a)},k)}catch(z){k()}else{var q=null;"G"==l?null!=this.drive&&null!=this.drive.user&&(q=this.drive):"H"==l?null!=this.gitHub&&null!=this.gitHub.getUser()&& +(q=this.gitHub):"T"==l?null!=this.trello&&this.trello.isAuthorized()&&(q=this.trello):"D"==l?null!=this.dropbox&&null!=this.dropbox.getUser()&&(q=this.dropbox):"W"==l&&null!=this.oneDrive&&null!=this.oneDrive.getUser()&&(q=this.oneDrive);null!=q?q.getLibrary(decodeURIComponent(a.substring(1)),mxUtils.bind(this,function(a){try{f(a)}catch(x){k()}}),function(a){k()}):k(!0)}}})(l,k)}g()}}; App.prototype.updateButtonContainer=function(){if(null!=this.buttonContainer){var a=this.getCurrentFile();this.commentsSupported()?null==this.commentButton&&(this.commentButton=document.createElement("a"),this.commentButton.setAttribute("title",mxResources.get("comments")),this.commentButton.className="geToolbarButton",this.commentButton.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;float:left;cursor:pointer;width:24px;height:24px;background-size:24px 24px;background-position:center center;background-repeat:no-repeat;background-image:url("+ Editor.commentImage+");","atlas"==uiTheme?(this.commentButton.style.marginRight="10px",this.commentButton.style.marginTop="-3px"):this.commentButton.style.marginTop="min"==uiTheme?"1px":"-5px",mxEvent.addListener(this.commentButton,"click",mxUtils.bind(this,function(){this.actions.get("comments").funct()})),this.buttonContainer.appendChild(this.commentButton),"dark"==uiTheme||"atlas"==uiTheme)&&(this.commentButton.style.filter="invert(100%)"):null!=this.commentButton&&(this.commentButton.parentNode.removeChild(this.commentButton), this.commentButton=null);null!=a&&a.constructor==DriveFile?null==this.shareButton&&(this.shareButton=document.createElement("div"),this.shareButton.className="geBtn gePrimaryBtn",this.shareButton.style.display="inline-block",this.shareButton.style.backgroundColor="#F2931E",this.shareButton.style.borderColor="#F08705",this.shareButton.style.backgroundImage="none",this.shareButton.style.padding="2px 10px 0 10px",this.shareButton.style.marginTop="-10px",this.shareButton.style.height="28px",this.shareButton.style.lineHeight= @@ -9647,10 +9648,10 @@ d():this.confirm(mxResources.get("replaceIt",[c]),d))}; App.prototype.descriptorChanged=function(){var a=this.getCurrentFile();if(null!=a){if(null!=this.fname){this.fnameWrapper.style.display="block";this.fname.innerHTML="";var c=null!=a.getTitle()?a.getTitle():this.defaultFilename;mxUtils.write(this.fname,c);this.fname.setAttribute("title",c+" - "+mxResources.get("rename"))}var c=this.editor.graph,d=a.isEditable()&&!a.invalidChecksum;c.isEnabled()&&!d&&c.reset();c.setEnabled(d);null==urlParams.rev&&(this.updateDocumentTitle(),a=a.getHash(),0<a.length? window.location.hash=a:0<window.location.hash.length&&(window.location.hash=""))}this.updateUi();null!=this.format&&this.editor.graph.isSelectionEmpty()&&this.format.refresh()}; App.prototype.showAuthDialog=function(a,c,d,b){var e=this.spinner.pause();this.showDialog((new AuthDialog(this,a,c,mxUtils.bind(this,function(a){try{null!=d&&d(a,mxUtils.bind(this,function(){this.hideDialog();e()}))}catch(k){this.editor.setStatus(mxUtils.htmlEntities(k.message))}}))).container,300,c?180:140,!0,!0,mxUtils.bind(this,function(a){null!=b&&b();a&&null==this.getCurrentFile()&&null==this.dialog&&this.showSplash()}))}; -App.prototype.convertFile=function(a,c,d,b,e,g,k,l){var n=c;/\.svg$/i.test(n)||(n=n.substring(0,c.lastIndexOf("."))+b);var u=!1;null!=this.gitHub&&a.substring(0,this.gitHub.baseUrl.length)==this.gitHub.baseUrl&&(u=!0);if(/\.v(dx|sdx?)$/i.test(c)&&Graph.fileSupport&&(new XMLHttpRequest).upload&&"string"===typeof(new XMLHttpRequest).responseType){var f=new XMLHttpRequest;f.open("GET",a,!0);u||(f.responseType="blob");if(l)for(var m in l)f.setRequestHeader(m,l[m]);f.onload=mxUtils.bind(this,function(){if(200<= -f.status&&299>=f.status){var a=null;u?(a=JSON.parse(f.responseText),a=this.base64ToBlob(a.content,"application/octet-stream")):a=new Blob([f.response],{type:"application/octet-stream"});this.importVisio(a,mxUtils.bind(this,function(a){e(new LocalFile(this,a,n,!0))}),g,c)}else null!=g&&g({message:mxResources.get("errorLoadingFile")})});f.onerror=g;f.send()}else{var p=mxUtils.bind(this,function(b){try{if(/\.pdf$/i.test(c)){var d=Editor.extractGraphModelFromPdf(b);null!=d&&0<d.length&&e(new LocalFile(this, +App.prototype.convertFile=function(a,c,d,b,e,g,k,l){var n=c;/\.svg$/i.test(n)||(n=n.substring(0,c.lastIndexOf("."))+b);var t=!1;null!=this.gitHub&&a.substring(0,this.gitHub.baseUrl.length)==this.gitHub.baseUrl&&(t=!0);if(/\.v(dx|sdx?)$/i.test(c)&&Graph.fileSupport&&(new XMLHttpRequest).upload&&"string"===typeof(new XMLHttpRequest).responseType){var f=new XMLHttpRequest;f.open("GET",a,!0);t||(f.responseType="blob");if(l)for(var m in l)f.setRequestHeader(m,l[m]);f.onload=mxUtils.bind(this,function(){if(200<= +f.status&&299>=f.status){var a=null;t?(a=JSON.parse(f.responseText),a=this.base64ToBlob(a.content,"application/octet-stream")):a=new Blob([f.response],{type:"application/octet-stream"});this.importVisio(a,mxUtils.bind(this,function(a){e(new LocalFile(this,a,n,!0))}),g,c)}else null!=g&&g({message:mxResources.get("errorLoadingFile")})});f.onerror=g;f.send()}else{var p=mxUtils.bind(this,function(b){try{if(/\.pdf$/i.test(c)){var d=Editor.extractGraphModelFromPdf(b);null!=d&&0<d.length&&e(new LocalFile(this, d,n,!0))}else/\.png$/i.test(c)?(d=this.extractGraphModelFromPng(b),null!=d?e(new LocalFile(this,d,n,!0)):e(new LocalFile(this,b,c,!0))):Graph.fileSupport&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(b,a)?this.parseFile(new Blob([b],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?e(new LocalFile(this,a.responseText,n,!0)):null!=g&&g({message:mxResources.get("errorLoadingFile")}))}),c):e(new LocalFile(this,b,n,!0))}catch(q){null!= -g&&g(q)}});d=/\.png$/i.test(c)||/\.jpe?g$/i.test(c)||/\.pdf$/i.test(c)||null!=d&&"image/"==d.substring(0,6);u?mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=e){a=JSON.parse(a.getText());var b=a.content;"base64"===a.encoding&&(b=/\.png$/i.test(c)?"data:image/png;base64,"+b:/\.pdf$/i.test(c)?"data:application/pdf;base64,"+b:!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(b):atob(b));p(b)}}else null!=g&&g({code:App.ERROR_UNKNOWN})}),function(){null!= +g&&g(q)}});d=/\.png$/i.test(c)||/\.jpe?g$/i.test(c)||/\.pdf$/i.test(c)||null!=d&&"image/"==d.substring(0,6);t?mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=e){a=JSON.parse(a.getText());var b=a.content;"base64"===a.encoding&&(b=/\.png$/i.test(c)?"data:image/png;base64,"+b:/\.pdf$/i.test(c)?"data:application/pdf;base64,"+b:!window.atob||mxClient.IS_IE||mxClient.IS_IE11?Base64.decode(b):atob(b));p(b)}}else null!=g&&g({code:App.ERROR_UNKNOWN})}),function(){null!= g&&g({code:App.ERROR_UNKNOWN})},!1,this.timeout,function(){null!=g&&g({code:App.ERROR_TIMEOUT,retry:fn})},l):null!=k?k(a,p,g,d):this.loadUrl(a,p,g,d,null,null,null,l)}}; App.prototype.updateHeader=function(){if(null!=this.menubar){this.appIcon=document.createElement("a");this.appIcon.style.display="block";this.appIcon.style.position="absolute";this.appIcon.style.width="28px";this.appIcon.style.height=this.menubarHeight-28+"px";this.appIcon.style.margin="14px 0px 8px 20px";this.appIcon.style.opacity="0.85";this.appIcon.style.borderRadius="3px";"dark"!=uiTheme&&(this.appIcon.style.backgroundColor="#f08705");mxEvent.disableContextMenu(this.appIcon);mxEvent.addListener(this.appIcon, "click",mxUtils.bind(this,function(a){this.appIconClicked(a)}));var a=mxClient.IS_SVG?"dark"==uiTheme?"url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzA2LjE4NSAxMjAuMjk2IgogICB2aWV3Qm94PSIyNCAyNiA2OCA2OCIKICAgeT0iMHB4IgogICB4PSIwcHgiCiAgIHZlcnNpb249IjEuMSI+CiAgIAkgPGc+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNDEuMDYxIgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjkiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTUyOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGxpbmUKICAgICAgIHkyPSI3Mi4zOTQiCiAgICAgICB4Mj0iNzUuMDc2IgogICAgICAgeTE9IjQzLjM4NCIKICAgICAgIHgxPSI1OC4wNjgiCiAgICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgICBzdHJva2Utd2lkdGg9IjMuNTAwOCIKICAgICAgIHN0cm9rZT0iI0ZGRkZGRiIKICAgICAgIGZpbGw9Im5vbmUiIC8+PGc+PHBhdGgKICAgICAgICAgZD0iTTUyLjc3Myw3Ny4wODRjMCwxLjk1NC0xLjU5OSwzLjU1My0zLjU1MywzLjU1M0gzNi45OTljLTEuOTU0LDAtMy41NTMtMS41OTktMy41NTMtMy41NTN2LTkuMzc5ICAgIGMwLTEuOTU0LDEuNTk5LTMuNTUzLDMuNTUzLTMuNTUzaDEyLjIyMmMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjc3LjA4NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnCiAgICAgICBpZD0iZzM0MTkiPjxwYXRoCiAgICAgICAgIGQ9Ik02Ny43NjIsNDguMDc0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINTEuOTg4Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M0g2NC4yMWMxLjk1NCwwLDMuNTUzLDEuNTk5LDMuNTUzLDMuNTUzVjQ4LjA3NHoiCiAgICAgICAgIGZpbGw9IiNGRkZGRkYiIC8+PC9nPjxnPjxwYXRoCiAgICAgICAgIGQ9Ik04Mi43NTIsNzcuMDg0YzAsMS45NTQtMS41OTksMy41NTMtMy41NTMsMy41NTNINjYuOTc3Yy0xLjk1NCwwLTMuNTUzLTEuNTk5LTMuNTUzLTMuNTUzdi05LjM3OSAgICBjMC0xLjk1NCwxLjU5OS0zLjU1MywzLjU1My0zLjU1M2gxMi4yMjJjMS45NTQsMCwzLjU1MywxLjU5OSwzLjU1MywzLjU1M1Y3Ny4wODR6IgogICAgICAgICBmaWxsPSIjRkZGRkZGIiAvPjwvZz48L2c+PC9zdmc+)": @@ -9695,7 +9696,7 @@ App.prototype.getCurrentUser=function(){var a=null;null!=this.drive&&null!=this. Editor.prototype.resetGraph=function(){editorResetGraph.apply(this,arguments);this.graph.pageFormat=mxSettings.getPageFormat()};(function(){var a=mxPopupMenu.prototype.showMenu;mxPopupMenu.prototype.showMenu=function(){a.apply(this,arguments);this.div.style.overflowY="auto";this.div.style.overflowX="hidden";this.div.style.maxHeight=Math.max(document.body.clientHeight,document.documentElement.clientHeight)-10+"px"};Menus.prototype.createHelpLink=function(a){var b=document.createElement("span");b.setAttribute("title",mxResources.get("help"));b.style.cssText="color:blue;text-decoration:underline;margin-left:8px;cursor:help;"; var c=document.createElement("img");mxUtils.setOpacity(c,50);c.style.height="16px";c.style.width="16px";c.setAttribute("border","0");c.setAttribute("valign","bottom");c.setAttribute("src",Editor.helpImage);b.appendChild(c);mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){null!=this.editorUi.menubar&&this.editorUi.menubar.hideMenu();this.editorUi.openLink(a);mxEvent.consume(b)}));return b};Menus.prototype.addLinkToItem=function(a,b){null!=a&&a.firstChild.nextSibling.appendChild(this.createHelpLink(b))}; var c=Menus.prototype.init;Menus.prototype.init=function(){function a(a,b){this.ui=a;this.previousExtFonts=this.extFonts=b}c.apply(this,arguments);var b=this.editorUi,e=b.editor.graph,g=mxUtils.bind(e,e.isEnabled),k=("1"!=urlParams.embed&&"0"!=urlParams.gapi||"1"==urlParams.embed&&"1"==urlParams.gapi)&&mxClient.IS_SVG&&isLocalStorage&&(null==document.documentMode||10<=document.documentMode),l=("1"!=urlParams.embed&&"0"!=urlParams.db||"1"==urlParams.embed&&"1"==urlParams.db)&&mxClient.IS_SVG&&(null== -document.documentMode||9<document.documentMode),n=("www.draw.io"==window.location.hostname||"test.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname)&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode),u=("1"!=urlParams.embed&&"0"!=urlParams.tr||"1"==urlParams.embed&&"1"==urlParams.tr)&&mxClient.IS_SVG&&(null==document.documentMode|| +document.documentMode||9<document.documentMode),n=("www.draw.io"==window.location.hostname||"test.draw.io"==window.location.hostname||"drive.draw.io"==window.location.hostname)&&("1"!=urlParams.embed&&"0"!=urlParams.od||"1"==urlParams.embed&&"1"==urlParams.od)&&!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)&&(0>navigator.userAgent.indexOf("MSIE")||10<=document.documentMode),t=("1"!=urlParams.embed&&"0"!=urlParams.tr||"1"==urlParams.embed&&"1"==urlParams.tr)&&mxClient.IS_SVG&&(null==document.documentMode|| 9<document.documentMode);mxClient.IS_SVG||b.isOffline()||((new Image).src=IMAGE_PATH+"/help.png");b.actions.addAction("new...",function(){var a=b.isOffline(),c=new NewDialog(b,a);b.showDialog(c.container,a?350:620,a?70:440,!0,!0,function(a){a&&null==b.getCurrentFile()&&b.showSplash()});c.init()});b.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+"...",function(){b.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files", mxUtils.bind(this,function(a,c,d,e,f,g,k,l,m,n){a=parseInt(a);!isNaN(a)&&0<a&&b.exportSvg(a/100,c,d,e,f,g,k,!l,m,n)}),!0,null,"svg")}));b.actions.put("insertTemplate",new Action(mxResources.get("template")+"...",function(){var a=new NewDialog(b,null,!1,function(a){b.hideDialog();if(null!=a){var c=b.editor.graph.getFreeInsertPoint();e.setSelectionCells(b.importXml(a,Math.max(c.x,20),Math.max(c.y,20),!0));e.scrollCellToVisible(e.getSelectionCell())}},null,null,null,null,null,null,null,null,null,null, !1,mxResources.get("insert"));b.showDialog(a.container,620,440,!0,!0)})).isEnabled=g;var f=b.actions.addAction("points",function(){b.editor.graph.view.setUnit(mxConstants.POINTS)});f.setToggleAction(!0);f.setSelectedCallback(function(){return b.editor.graph.view.unit==mxConstants.POINTS});f=b.actions.addAction("inches",function(){b.editor.graph.view.setUnit(mxConstants.INCHES)});f.setToggleAction(!0);f.setSelectedCallback(function(){return b.editor.graph.view.unit==mxConstants.INCHES});f=b.actions.addAction("millimeters", @@ -9716,92 +9717,95 @@ f.isEnabled=g);if(isLocalStorage||mxClient.IS_CHROMEAPP)f=b.actions.addAction("s function(){for(var a=e.getSelectionCells(),c=[],d=0;d<a.length;d++)e.getModel().isVertex(a[d])&&c.push(a[d]);0<c.length&&(a=new EditGeometryDialog(b,c),b.showDialog(a.container,200,250,!0,!0),a.init())},null,null,Editor.ctrlKey+"+Shift+M");var p="rounded shadow dashed dashPattern fontFamily fontSize fontColor fontStyle align verticalAlign strokeColor strokeWidth fillColor gradientColor swimlaneFillColor textOpacity gradientDirection glass labelBackgroundColor labelBorderColor opacity spacing spacingTop spacingLeft spacingBottom spacingRight endFill endArrow endSize targetPerimeterSpacing startFill startArrow startSize sourcePerimeterSpacing arcSize".split(" "); b.actions.addAction("copyStyle",function(){var a=e.view.getState(e.getSelectionCell());if(e.isEnabled()&&null!=a){b.copiedStyle=mxUtils.clone(a.style);for(var a=e.getModel().getStyle(a.cell),a=null!=a?a.split(";"):[],c=0;c<a.length;c++){var d=a[c],f=d.indexOf("=");if(0<=f){var g=d.substring(0,f),d=d.substring(f+1);null==b.copiedStyle[g]&&"none"==d&&(b.copiedStyle[g]="none")}}}},null,null,Editor.ctrlKey+"+Shift+C");b.actions.addAction("pasteStyle",function(){if(e.isEnabled()&&!e.isSelectionEmpty()&& null!=b.copiedStyle){e.getModel().beginUpdate();try{for(var a=e.getSelectionCells(),c=0;c<a.length;c++)for(var d=e.view.getState(a[c]),f=0;f<p.length;f++){var g=p[f],k=b.copiedStyle[g];d.style[g]!=k&&e.setCellStyles(g,k,[a[c]])}}finally{e.getModel().endUpdate()}}},null,null,Editor.ctrlKey+"+Shift+V");b.actions.put("pageBackgroundImage",new Action(mxResources.get("backgroundImage")+"...",function(){if(!b.isOffline()){var a=new BackgroundImageDialog(b,function(a){b.setBackgroundImage(a)});b.showDialog(a.container, -320,170,!0,!0);a.init()}}));b.actions.put("exportPng",new Action(mxResources.get("formatPng")+"...",function(){b.isExportToCanvas()?b.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(a,c,d,e,f,g,k,l,m,n,q){a=parseInt(a);!isNaN(a)&&0<a&&b.exportImage(a/100,c,d,e,f,k,!l,m,null,q)}),!0,!0,"png"):b.isOffline()||mxClient.IS_IOS&&navigator.standalone||b.showRemoteExportDialog(mxResources.get("export"), -null,mxUtils.bind(this,function(a,c,d,e,f){b.downloadFile(c?"xmlpng":"png",null,null,a,null,null,d,e,f)}),!1,!0)}));b.actions.put("exportJpg",new Action(mxResources.get("formatJpg")+"...",function(){b.isExportToCanvas()?b.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(a,c,d,e,f,g,k,l,m,n,q){a=parseInt(a);!isNaN(a)&&0<a&&b.exportImage(a/100,!1,d,e,!1,k,!l,!1,"jpeg",q)}),!0,!1,"jpeg"):b.isOffline()|| -mxClient.IS_IOS&&navigator.standalone||b.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this,function(a,c,d,e,f){b.downloadFile("jpeg",null,null,a,null,null,null,e,f)}),!0,!0)}));f=b.actions.put("shadowVisible",new Action(mxResources.get("shadow"),function(){e.setShadowVisible(!e.shadowVisible)}));f.setToggleAction(!0);f.setSelectedCallback(function(){return e.shadowVisible});var t=!1;b.actions.put("about",new Action(mxResources.get("aboutDrawio")+"...",function(){t||(b.showDialog((new AboutDialog(b)).container, -220,300,!0,!0,function(){t=!1}),t=!0)},null,null,"F1"));b.actions.addAction("userManual...",function(){b.openLink("https://support.draw.io/display/DO/Draw.io+Online+User+Manual")});b.actions.addAction("support...",function(){b.openLink("https://about.draw.io/support/")});b.actions.addAction("exportOptionsDisabled...",function(){b.handleError({message:mxResources.get("exportOptionsDisabledDetails")},mxResources.get("exportOptionsDisabled"))});b.actions.addAction("keyboardShortcuts...",function(){mxClient.IS_CHROMEAPP|| +320,170,!0,!0);a.init()}}));b.actions.put("exportPng",new Action(mxResources.get("formatPng")+"...",function(){b.isExportToCanvas()?b.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(a,c,d,e,f,g,k,l,m,n,p){a=parseInt(a);!isNaN(a)&&0<a&&b.exportImage(a/100,c,d,e,f,k,!l,m,null,p)}),!0,!0,"png"):b.isOffline()||mxClient.IS_IOS&&navigator.standalone||b.showRemoteExportDialog(mxResources.get("export"), +null,mxUtils.bind(this,function(a,c,d,e,f){b.downloadFile(c?"xmlpng":"png",null,null,a,null,null,d,e,f)}),!1,!0)}));b.actions.put("exportJpg",new Action(mxResources.get("formatJpg")+"...",function(){b.isExportToCanvas()?b.showExportDialog(mxResources.get("image"),!1,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(a,c,d,e,f,g,k,l,m,n,p){a=parseInt(a);!isNaN(a)&&0<a&&b.exportImage(a/100,!1,d,e,!1,k,!l,!1,"jpeg",p)}),!0,!1,"jpeg"):b.isOffline()|| +mxClient.IS_IOS&&navigator.standalone||b.showRemoteExportDialog(mxResources.get("export"),null,mxUtils.bind(this,function(a,c,d,e,f){b.downloadFile("jpeg",null,null,a,null,null,null,e,f)}),!0,!0)}));f=b.actions.put("shadowVisible",new Action(mxResources.get("shadow"),function(){e.setShadowVisible(!e.shadowVisible)}));f.setToggleAction(!0);f.setSelectedCallback(function(){return e.shadowVisible});var u=!1;b.actions.put("about",new Action(mxResources.get("aboutDrawio")+"...",function(){u||(b.showDialog((new AboutDialog(b)).container, +220,300,!0,!0,function(){u=!1}),u=!0)},null,null,"F1"));b.actions.addAction("userManual...",function(){b.openLink("https://support.draw.io/display/DO/Draw.io+Online+User+Manual")});b.actions.addAction("support...",function(){b.openLink("https://about.draw.io/support/")});b.actions.addAction("exportOptionsDisabled...",function(){b.handleError({message:mxResources.get("exportOptionsDisabledDetails")},mxResources.get("exportOptionsDisabled"))});b.actions.addAction("keyboardShortcuts...",function(){mxClient.IS_CHROMEAPP|| EditorUi.isElectronApp?b.openLink("https://www.draw.io/shortcuts.svg"):mxClient.IS_SVG?b.openLink("shortcuts.svg"):b.openLink("https://www.draw.io/?lightbox=1#Uhttps%3A%2F%2Fwww.draw.io%2Fshortcuts.svg")});b.actions.addAction("feedback...",function(){var a=new FeedbackDialog(b);b.showDialog(a.container,610,360,!0,!1);a.init()});b.actions.addAction("quickStart...",function(){b.openLink("https://www.youtube.com/watch?v=Z0D96ZikMkc")});f=b.actions.addAction("tags...",mxUtils.bind(this,function(){null== this.tagsWindow?(this.tagsWindow=new TagsWindow(b,document.body.offsetWidth-380,230,300,120),this.tagsWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("tags"))}),this.tagsWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("tags"))):this.tagsWindow.window.setVisible(!this.tagsWindow.window.isVisible())}));f.setToggleAction(!0);f.setSelectedCallback(mxUtils.bind(this,function(){return null!= this.tagsWindow&&this.tagsWindow.window.isVisible()}));f=b.actions.addAction("find...",mxUtils.bind(this,function(){null==this.findWindow?(this.findWindow=new FindWindow(b,document.body.offsetWidth-300,110,240,140),this.findWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("find"))}),this.findWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("find"))}),this.findWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("find"))):this.findWindow.window.setVisible(!this.findWindow.window.isVisible())})); f.setToggleAction(!0);f.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.findWindow&&this.findWindow.window.isVisible()}));b.actions.put("exportVsdx",new Action(mxResources.get("formatVsdx")+" (beta)...",function(){b.exportVisio()}));isLocalStorage&&null!=localStorage&&"1"!=urlParams.embed&&b.actions.addAction("drawConfig...",function(){var a=localStorage.getItem(".configuration"),a=new TextareaDialog(b,mxResources.get("drawConfig")+":",null!=a?JSON.stringify(JSON.parse(a),null, -2):"",function(a){if(null!=a)try{if(0<a.length){var c=JSON.parse(a);localStorage.setItem(".configuration",JSON.stringify(c))}else localStorage.removeItem(".configuration");b.hideDialog();b.alert(mxResources.get("restartForChangeRequired"))}catch(B){b.handleError(B)}},null,null,null,null,null,!0,null,null,"https://desk.draw.io/support/solutions/articles/16000058316",EditorUi.isElectronApp?null:[[mxResources.get("link"),function(a,c){if(0<c.value.length)try{var d=JSON.parse(c.value),e=window.location.protocol+ -"//"+window.location.host+"/"+b.getSearch()+"#_CONFIG_"+Graph.compress(JSON.stringify(d)),f=new EmbedDialog(b,e);b.showDialog(f.container,440,240,!0);f.init()}catch(G){b.handleError(G)}else b.handleError({message:mxResources.get("invalidInput")})}]]);a.textarea.style.width="600px";a.textarea.style.height="380px";b.showDialog(a.container,620,460,!0,!1);a.init()});if(mxClient.IS_CHROMEAPP||isLocalStorage&&"1"!=urlParams.offline){this.put("language",new Menu(mxUtils.bind(this,function(a,c){var d=mxUtils.bind(this, +2):"",function(a){if(null!=a)try{if(0<a.length){var c=JSON.parse(a);localStorage.setItem(".configuration",JSON.stringify(c))}else localStorage.removeItem(".configuration");b.hideDialog();b.alert(mxResources.get("restartForChangeRequired"))}catch(A){b.handleError(A)}},null,null,null,null,null,!0,null,null,"https://desk.draw.io/support/solutions/articles/16000058316",EditorUi.isElectronApp?null:[[mxResources.get("link"),function(a,c){if(0<c.value.length)try{var d=JSON.parse(c.value),e=window.location.protocol+ +"//"+window.location.host+"/"+b.getSearch()+"#_CONFIG_"+Graph.compress(JSON.stringify(d)),f=new EmbedDialog(b,e);b.showDialog(f.container,440,240,!0);f.init()}catch(I){b.handleError(I)}else b.handleError({message:mxResources.get("invalidInput")})}]]);a.textarea.style.width="600px";a.textarea.style.height="380px";b.showDialog(a.container,620,460,!0,!1);a.init()});if(mxClient.IS_CHROMEAPP||isLocalStorage&&"1"!=urlParams.offline){this.put("language",new Menu(mxUtils.bind(this,function(a,c){var d=mxUtils.bind(this, function(d){var e=""==d?mxResources.get("automatic"):mxLanguageMap[d],f=null;""!=e&&(f=a.addItem(e,null,mxUtils.bind(this,function(){mxSettings.setLanguage(d);mxSettings.save();mxClient.language=d;mxResources.loadDefaultBundle=!1;mxResources.add(RESOURCE_BASE);b.alert(mxResources.get("restartForChangeRequired"))}),c),(d==mxLanguage||""==d&&null==mxLanguage)&&a.addCheckmark(f,Editor.checkmarkImage));return f});d("");a.addSeparator(c);for(var e in mxLanguageMap)d(e)})));var v=Menus.prototype.createMenubar; Menus.prototype.createMenubar=function(a){var b=v.apply(this,arguments);if(null!=b){var c=this.get("language");if(null!=c){c=b.addMenu("",c.funct);c.setAttribute("title",mxResources.get("language"));c.style.width="16px";c.style.paddingTop="2px";c.style.paddingLeft="4px";c.style.zIndex="1";c.style.position="absolute";c.style.display="block";c.style.cursor="pointer";c.style.right="17px";"atlas"==uiTheme?(c.style.top="6px",c.style.right="15px"):c.style.top="min"==uiTheme?"2px":"0px";if(mxClient.IS_VML)c.innerHTML= '<div class="geIcon geSprite geSprite-globe"/>';else{var d=document.createElement("div");d.style.backgroundImage="url("+Editor.globeImage+")";d.style.backgroundPosition="center center";d.style.backgroundRepeat="no-repeat";d.style.backgroundSize="19px 19px";d.style.position="absolute";d.style.height="19px";d.style.width="19px";d.style.marginTop="2px";d.style.zIndex="1";c.appendChild(d);mxUtils.setOpacity(c,40);if("atlas"==uiTheme||"dark"==uiTheme)c.style.opacity="0.85",c.style.filter="invert(100%)"}document.body.appendChild(c)}}return b}}b.customLayoutConfig= -[{layout:"mxHierarchicalLayout",config:{orientation:"west",intraCellSpacing:30,interRankCellSpacing:100,interHierarchySpacing:60,parallelEdgeSpacing:10}}];b.actions.addAction("runLayout",function(){var a=new TextareaDialog(b,"Run Layouts:",JSON.stringify(b.customLayoutConfig,null,2),function(a){if(0<a.length)try{var c=JSON.parse(a);b.executeLayoutList(c);b.customLayoutConfig=c}catch(B){b.handleError(B),null!=window.console&&console.error(B)}});a.textarea.style.width="600px";a.textarea.style.height= -"380px";b.showDialog(a.container,620,460,!0,!0);a.init()});var f=this.get("layout"),q=f.funct;f.funct=function(a,c){q.apply(this,arguments);"1"==urlParams.orgLayout&&a.addItem("Org. Chart",null,function(){var a=b.editor.graph;(new mxOrgChartLayout(a)).execute(a.getDefaultParent())},c,null,g());a.addSeparator(c);b.menus.addMenuItem(a,"runLayout",c,null,null,mxResources.get("apply")+"...")};this.put("help",new Menu(mxUtils.bind(this,function(a,c){if(!mxClient.IS_CHROMEAPP&&b.isOffline())this.addMenuItems(a, -["about"],c);else{var d=a.addItem("Search:",null,null,c,null,null,!1);d.style.backgroundColor="dark"==uiTheme?"#505759":"whiteSmoke";d.style.cursor="default";var e=document.createElement("input");e.setAttribute("type","text");e.setAttribute("size","25");e.style.marginLeft="8px";mxEvent.addListener(e,"keydown",mxUtils.bind(this,function(a){var b=mxUtils.trim(e.value);13==a.keyCode&&0<b.length?(this.editorUi.openLink("https://desk.draw.io/support/search/solutions?term="+encodeURIComponent(b)),e.value= -"",EditorUi.logEvent({category:"SEARCH-HELP",action:"search",label:b}),null!=this.editorUi.menubar&&window.setTimeout(mxUtils.bind(this,function(){this.editorUi.menubar.hideMenu()}),0)):27==a.keyCode&&(e.value="")}));d.firstChild.nextSibling.appendChild(e);mxEvent.addGestureListeners(e,function(a){document.activeElement!=e&&e.focus();mxEvent.consume(a)},function(a){mxEvent.consume(a)},function(a){mxEvent.consume(a)});window.setTimeout(function(){e.focus()},0);this.addMenuItems(a,["-","keyboardShortcuts", -"quickStart","userManual","-"],c);EditorUi.isElectronApp||navigator.standalone||"1"==urlParams.embed||this.addMenuItems(a,["downloadDesktop"],c);mxClient.IS_CHROMEAPP||this.addMenuItems(a,["feedback","support"],c);this.addMenuItems(a,["-","about"],c)}"1"==urlParams.test&&(a.addSeparator(c),this.addSubmenu("testDevelop",a,c))})));"1"==urlParams.test&&(mxResources.parse("testDevelop=Develop"),mxResources.parse("showBoundingBox=Show bounding box"),mxResources.parse("createSidebarEntry=Create Sidebar Entry"), -mxResources.parse("testCheckFile=Check File"),mxResources.parse("testDiff=Diff"),mxResources.parse("testInspect=Inspect"),mxResources.parse("testShowConsole=Show Console"),mxResources.parse("testXmlImageExport=XML Image Export"),mxResources.parse("testDownloadRtModel=Export RT model"),mxResources.parse("testImportRtModel=Import RT model"),b.actions.addAction("createSidebarEntry",mxUtils.bind(this,function(){e.isSelectionEmpty()||b.showTextDialog("Create Sidebar Entry","sb.createVertexTemplateFromData('"+ -Graph.compress(mxUtils.getXml(e.encodeCells(e.getSelectionCells())))+"', width, height, 'Title');")})),b.actions.addAction("showBoundingBox",mxUtils.bind(this,function(){var a=e.getGraphBounds(),b=e.view.translate,c=e.view.scale;e.insertVertex(e.getDefaultParent(),null,"",a.x/c-b.x,a.y/c-b.y,a.width/c,a.height/c,"fillColor=none;strokeColor=red;")})),b.actions.addAction("testCheckFile",mxUtils.bind(this,function(){var a=null!=b.pages&&null!=b.getCurrentFile()?b.getCurrentFile().getAnonymizedXmlForPages(b.pages): -"",a=new TextareaDialog(b,"Paste Data:",a,function(a){if(0<a.length)try{var c=function(a){function b(a){if(null==n[a]){if(n[a]=!0,null!=e[a]){for(;0<e[a].length;){var d=e[a].pop();b(d)}delete e[a]}}else mxLog.debug(c+": Visited: "+a)}var c=a.parentNode.id,d=a.childNodes;a={};for(var e={},f=null,g={},k=0;k<d.length;k++){var l=d[k];if(null!=l.id&&0<l.id.length)if(null==a[l.id]){a[l.id]=l.id;var m=l.getAttribute("parent");null==m?null!=f?mxLog.debug(c+": Multiple roots: "+l.id):f=l.id:(null==e[m]&&(e[m]= -[]),e[m].push(l.id))}else g[l.id]=l.id}0<Object.keys(g).length?(d=c+": "+Object.keys(g).length+" Duplicates: "+Object.keys(g).join(", "),mxLog.debug(d+" (see console)")):mxLog.debug(c+": Checked");var n={};null==f?mxLog.debug(c+": No root"):(b(f),Object.keys(n).length!=Object.keys(a).length&&(mxLog.debug(c+": Invalid tree: (see console)"),console.log(c+": Invalid tree",e)))};"<"!=a.charAt(0)&&(a=Graph.decompress(a),mxLog.debug("See console for uncompressed XML"),console.log("xml",a));var d=mxUtils.parseXml(a), -e=b.getPagesForNode(d.documentElement,"mxGraphModel");if(null!=e&&0<e.length)try{var f=b.getHashValueForPages(e);mxLog.debug("Checksum: ",f)}catch(J){mxLog.debug("Error: ",J.message)}else mxLog.debug("No pages found for checksum");var g=d.getElementsByTagName("root");for(a=0;a<g.length;a++)c(g[a]);mxLog.show()}catch(J){b.handleError(J),null!=window.console&&console.error(J)}});a.textarea.style.width="600px";a.textarea.style.height="380px";b.showDialog(a.container,620,460,!0,!0);a.init()})),b.actions.addAction("testDiff", -mxUtils.bind(this,function(){if(null!=b.pages){var a=new TextareaDialog(b,"Paste Data:","",function(a){if(0<a.length)try{console.log(JSON.stringify(b.diffPages(b.pages,b.getPagesForNode(mxUtils.parseXml(a).documentElement)),null,2))}catch(C){b.handleError(C),null!=window.console&&console.error(C)}});a.textarea.style.width="600px";a.textarea.style.height="380px";b.showDialog(a.container,620,460,!0,!0);a.init()}else b.alert("No pages")})),b.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(b, -e.getModel())})),b.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var a=new mxImageExport,b=e.getGraphBounds(),c=e.view.scale,d=mxUtils.createXmlDocument(),f=d.createElement("output");d.appendChild(f);d=new mxXmlCanvas2D(f);d.translate(Math.floor((1-b.x)/c),Math.floor((1-b.y)/c));d.scale(1/c);var g=0,k=d.save;d.save=function(){g++;k.apply(this,arguments)};var l=d.restore;d.restore=function(){g--;l.apply(this,arguments)};var m=a.drawShape;a.drawShape=function(a){mxLog.debug("entering shape", -a,g);m.apply(this,arguments);mxLog.debug("leaving shape",a,g)};a.drawState(e.getView().getState(e.model.root),d);mxLog.show();mxLog.debug(mxUtils.getXml(f));mxLog.debug("stateCounter",g)})),b.actions.addAction("testDownloadRtModel...",mxUtils.bind(this,function(){null==b.drive?b.handleError({message:mxResources.get("serviceUnavailableOrBlocked")}):b.drive.execute(mxUtils.bind(this,function(){var a=prompt("File ID","");if(null!=a&&0<a.length&&b.spinner.spin(document.body,mxResources.get("export"))){var c= -new mxXmlRequest("https://www.googleapis.com/drive/v2/files/"+a+"/realtime?supportsTeamDrives=true",null,"GET");c.setRequestHeaders=function(a){mxXmlRequest.prototype.setRequestHeaders.apply(this,arguments);a.setRequestHeader("authorization","Bearer "+b.drive.token)};c.send(function(c){b.spinner.stop();200<=c.getStatus()&&299>=c.getStatus()?b.saveLocalFile(c.getText(),"json-"+a+".txt","text/plain"):b.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile"))})}}))})), -b.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-1}),this.put("testDevelop",new Menu(mxUtils.bind(this,function(a,c){this.addMenuItems(a,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testDownloadRtModel".split(" "),c);a.addItem(mxResources.get("testImportRtModel")+"...",null,function(){var a=document.createElement("input");a.setAttribute("type", -"file");mxEvent.addListener(a,"change",mxUtils.bind(this,function(){if(null!=a.files){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{b.openLocalFile(mxUtils.getXml(b.drive.convertJsonToXml(JSON.parse(c.target.result).data)),a.files[0].name,!0)}catch(F){b.handleError(F,mxResources.get("errorLoadingFile"))}});c.readAsText(a.files[0])}}));a.click()},c);this.addMenuItems(a,["-","testShowConsole"],c)}))));b.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!b.isOffline()? -b.showDialog((new MoreShapesDialog(b,!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):b.showDialog((new MoreShapesDialog(b,!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});b.actions.put("createShape",new Action(mxResources.get("shape")+"...",function(a){e.isEnabled()&&(a=new mxCell("",new mxGeometry(0,0,120,120),b.defaultCustomShapeStyle),a.vertex=!0,a=new EditShapeDialog(b,a,mxResources.get("editShape")+":",630,400),b.showDialog(a.container,640,480,!0,!1), -a.init())})).isEnabled=g;b.actions.put("embedHtml",new Action(mxResources.get("html")+"...",function(){b.spinner.spin(document.body,mxResources.get("loading"))&&b.getPublicUrl(b.getCurrentFile(),function(a){b.spinner.stop();b.showHtmlDialog(mxResources.get("create"),"https://desk.draw.io/support/solutions/articles/16000042542",a,function(a,c,d,e,f,g,k,l,m,n){b.createHtml(a,c,d,e,f,g,k,l,m,n,mxUtils.bind(this,function(a,c){var d=new EmbedDialog(b,a+"\n"+c,null,null,function(){var d=window.open(),e= -d.document;if(null!=e){"CSS1Compat"===document.compatMode&&e.writeln("<!DOCTYPE html>");e.writeln("<html>");e.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head>');e.writeln("<body>");e.writeln(a);var f=mxClient.IS_IE||mxClient.IS_EDGE||null!=document.documentMode;f&&e.writeln(c);e.writeln("</body>");e.writeln("</html>");e.close();if(!f){var g=d.document.createElement("div");g.marginLeft="26px";g.marginTop="26px";mxUtils.write(g,mxResources.get("updatingDocument")); -f=d.document.createElement("img");f.setAttribute("src",window.location.protocol+"//"+window.location.hostname+"/"+IMAGE_PATH+"/spin.gif");f.style.marginLeft="6px";g.appendChild(f);d.document.body.insertBefore(g,d.document.body.firstChild);window.setTimeout(function(){var a=document.createElement("script");a.type="text/javascript";a.src=/<script.*?src="(.*?)"/.exec(c)[1];e.body.appendChild(a);g.parentNode.removeChild(g)},20)}}else b.handleError({message:mxResources.get("errorUpdatingPreview")})}); -b.showDialog(d.container,440,240,!0,!0);d.init()}))})})}));b.actions.put("liveImage",new Action("Live image...",function(){var a=b.getCurrentFile();null!=a&&b.spinner.spin(document.body,mxResources.get("loading"))&&b.getPublicUrl(b.getCurrentFile(),function(c){b.spinner.stop();null!=c?(c=new EmbedDialog(b,'<img src="'+(a.constructor!=DriveFile?c:"https://drive.google.com/uc?id="+a.getId())+'"/>'),b.showDialog(c.container,440,240,!0,!0),c.init()):b.handleError({message:mxResources.get("invalidPublicUrl")})})})); -b.actions.put("embedImage",new Action(mxResources.get("image")+"...",function(){b.showEmbedImageDialog(function(a,c,d,e,f,g){b.spinner.spin(document.body,mxResources.get("loading"))&&b.createEmbedImage(a,c,d,e,f,g,function(a){b.spinner.stop();a=new EmbedDialog(b,a);b.showDialog(a.container,440,240,!0,!0);a.init()},function(a){b.spinner.stop();b.handleError(a)})},mxResources.get("image"),mxResources.get("retina"),b.isExportToCanvas())}));b.actions.put("embedSvg",new Action(mxResources.get("formatSvg")+ -"...",function(){b.showEmbedImageDialog(function(a,c,d,e,f,g){b.spinner.spin(document.body,mxResources.get("loading"))&&b.createEmbedSvg(a,c,d,e,f,g,function(a){b.spinner.stop();a=new EmbedDialog(b,a);b.showDialog(a.container,440,240,!0,!0);a.init()},function(a){b.spinner.stop();b.handleError(a)})},mxResources.get("formatSvg"),mxResources.get("image"),!0,"https://desk.draw.io/support/solutions/articles/16000042548")}));b.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var a= -e.getGraphBounds();b.showPublishLinkDialog(mxResources.get("iframe"),null,"100%",Math.ceil((a.y+a.height-e.view.translate.y)/e.view.scale)+2,function(a,c,d,e,f,g,k,l){b.spinner.spin(document.body,mxResources.get("loading"))&&b.getPublicUrl(b.getCurrentFile(),function(m){b.spinner.stop();m=new EmbedDialog(b,'<iframe frameborder="0" style="width:'+k+";height:"+l+';" src="'+b.createLink(a,c,d,e,f,g,m)+'"></iframe>');b.showDialog(m.container,440,240,!0,!0);m.init()})},!0)}));b.actions.put("publishLink", -new Action(mxResources.get("link")+"...",function(){b.showPublishLinkDialog(null,null,null,null,function(a,c,d,e,f,g){b.spinner.spin(document.body,mxResources.get("loading"))&&b.getPublicUrl(b.getCurrentFile(),function(k){b.spinner.stop();k=new EmbedDialog(b,b.createLink(a,c,d,e,f,g,k));b.showDialog(k.container,440,240,!0,!0);k.init()})})}));b.actions.addAction("microsoftOffice...",function(){b.openLink("https://office.draw.io")});b.actions.addAction("googleDocs...",function(){b.openLink("http://docsaddon.draw.io")}); -b.actions.addAction("googleSlides...",function(){b.openLink("https://slidesaddon.draw.io")});b.actions.addAction("googleSheets...",function(){b.openLink("https://sheetsaddon.draw.io")});b.actions.addAction("googleSites...",function(){b.spinner.spin(document.body,mxResources.get("loading"))&&b.getPublicUrl(b.getCurrentFile(),function(a){b.spinner.stop();a=new GoogleSitesDialog(b,a);b.showDialog(a.container,420,256,!0,!0);a.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)f=b.actions.addAction("scratchpad", -function(){b.toggleScratchpad()}),f.setToggleAction(!0),f.setSelectedCallback(function(){return null!=b.scratchpad}),b.actions.addAction("plugins...",function(){b.showDialog((new PluginsDialog(b)).container,360,170,!0,!1)});f=b.actions.addAction("search",function(){var a=b.sidebar.isEntryVisible("search");b.sidebar.showPalette("search",!a);isLocalStorage&&(mxSettings.settings.search=!a,mxSettings.save())});f.setToggleAction(!0);f.setSelectedCallback(function(){return b.sidebar.isEntryVisible("search")}); -"1"==urlParams.embed&&(b.actions.get("save").funct=function(a){e.isEditing()&&e.stopEditing();var c="0"!=urlParams.pages||null!=b.pages&&1<b.pages.length?b.getFileData(!0):mxUtils.getXml(b.editor.getGraphXml());if("json"==urlParams.proto){var d=b.createLoadMessage("save");d.xml=c;a&&(d.exit=!0);c=JSON.stringify(d)}(window.opener||window.parent).postMessage(c,"*");"0"!=urlParams.modified&&"1"!=urlParams.keepmodified&&(b.editor.modified=!1,b.editor.setStatus(""));null!=b.getCurrentFile()&&b.saveFile()}, -b.actions.addAction("saveAndExit",function(){b.actions.get("save").funct(!0)}),b.actions.addAction("exit",function(){var a=function(){b.editor.modified=!1;var a="json"==urlParams.proto?JSON.stringify({event:"exit",modified:b.editor.modified}):"";(window.opener||window.parent).postMessage(a,"*")};b.editor.modified?b.confirm(mxResources.get("allChangesLost"),null,a,mxResources.get("cancel"),mxResources.get("discardChanges")):a()}));this.put("exportAs",new Menu(mxUtils.bind(this,function(a,c){b.isExportToCanvas()? -(this.addMenuItems(a,["exportPng"],c),b.jpgSupported&&this.addMenuItems(a,["exportJpg"],c)):b.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(a,["exportPng","exportJpg"],c);this.addMenuItems(a,["exportSvg","-"],c);b.isOffline()||b.printPdfExport?this.addMenuItems(a,["exportPdf"],c):b.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(a,["exportPdf"],c);mxClient.IS_IE||"undefined"===typeof VsdxExport&&b.isOffline()||this.addMenuItems(a,["exportVsdx"],c);this.addMenuItems(a, -["-","exportHtml","exportXml","exportUrl"],c);b.isOffline()||(a.addSeparator(c),this.addMenuItem(a,"export",c).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom",new Menu(mxUtils.bind(this,function(a,c){function d(a){a.pickFile(function(c){b.spinner.spin(document.body,mxResources.get("loading"))&&a.getFile(c,function(a){var c="data:image/"==a.getData().substring(0,11)?g(a.getTitle()):"text/xml";/\.svg$/i.test(a.getTitle())&&!b.editor.isDataSvg(a.getData())&& -(a.setData(b.createSvgDataUri(a.getData())),c="image/svg+xml");f(a.getData(),c,a.getTitle())},function(a){b.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null)},a==b.drive)},!0)}var f=mxUtils.bind(this,function(a,c,d){var f=e.view,g=e.getGraphBounds(),k=e.snap(Math.ceil(Math.max(0,g.x/f.scale-f.translate.x)+4*e.gridSize)),l=e.snap(Math.ceil(Math.max(0,(g.y+g.height)/f.scale-f.translate.y)+4*e.gridSize));"data:image/"==a.substring(0,11)?b.loadImage(a,mxUtils.bind(this,function(f){var g= -!0,m=mxUtils.bind(this,function(){b.resizeImage(f,a,mxUtils.bind(this,function(f,m,n){f=g?Math.min(1,Math.min(b.maxImageSize/m,b.maxImageSize/n)):1;b.importFile(a,c,k,l,Math.round(m*f),Math.round(n*f),d,function(a){b.spinner.stop();e.setSelectionCells(a);e.scrollCellToVisible(e.getSelectionCell())})}),g)});a.length>b.resampleThreshold?b.confirmImageResize(function(a){g=a;m()}):m()}),mxUtils.bind(this,function(){b.handleError({message:mxResources.get("cannotOpenFile")})})):b.importFile(a,c,k,l,0,0, -d,function(a){b.spinner.stop();e.setSelectionCells(a);e.scrollCellToVisible(e.getSelectionCell())})}),g=mxUtils.bind(this,function(a){var b="text/xml";/\.png$/i.test(a)?b="image/png":/\.jpe?g$/i.test(a)?b="image/jpg":/\.gif$/i.test(a)?b="image/gif":/\.pdf$/i.test(a)&&(b="application/pdf");return b});"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=b.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){d(b.drive)},c):k&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+ -" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){d(b.oneDrive)},c):n&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){d(b.dropbox)},c):l&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+ -"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){d(b.gitHub)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){d(b.gitLab)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){d(b.trello)},c):u&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&& -"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.importLocalFile(!1)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.importLocalFile(!0)},c);b.isOffline()||(a.addSeparator(c),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(b,"",mxResources.get("import"),function(a){if(null!=a&&0<a.length&&b.spinner.spin(document.body,mxResources.get("loading"))){var c=/(\.png)($|\?)/i.test(a)?"image/png":"text/xml";b.loadUrl(PROXY_URL+ -"?url="+encodeURIComponent(a),function(b){f(b,c,a)},function(){b.spinner.stop();b.handleError(null,mxResources.get("errorLoadingFile"))},"image/png"==c)}},mxResources.get("url"));b.showDialog(a.container,300,80,!0,!0);a.init()},c))}))).isEnabled=g;this.put("theme",new Menu(mxUtils.bind(this,function(a,c){var d=mxSettings.getUi(),e=a.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");mxSettings.save();b.alert(mxResources.get("restartForChangeRequired"))},c);"kennedy"!=d&&"atlas"!= -d&&"dark"!=d&&"min"!=d&&a.addCheckmark(e,Editor.checkmarkImage);a.addSeparator(c);e=a.addItem(mxResources.get("kennedy"),null,function(){mxSettings.setUi("kennedy");mxSettings.save();b.alert(mxResources.get("restartForChangeRequired"))},c);"kennedy"==d&&a.addCheckmark(e,Editor.checkmarkImage);e=a.addItem(mxResources.get("minimal"),null,function(){mxSettings.setUi("min");mxSettings.save();b.alert(mxResources.get("restartForChangeRequired"))},c);"min"==d&&a.addCheckmark(e,Editor.checkmarkImage);e=a.addItem(mxResources.get("atlas"), -null,function(){mxSettings.setUi("atlas");mxSettings.save();b.alert(mxResources.get("restartForChangeRequired"))},c);"atlas"==d&&a.addCheckmark(e,Editor.checkmarkImage);e=a.addItem(mxResources.get("dark"),null,function(){mxSettings.setUi("dark");mxSettings.save();b.alert(mxResources.get("restartForChangeRequired"))},c);"dark"==d&&a.addCheckmark(e,Editor.checkmarkImage)})));f=this.editorUi.actions.addAction("rename...",mxUtils.bind(this,function(){var a=this.editorUi.getCurrentFile();if(null!=a){var c= -null!=a.getTitle()?a.getTitle():this.editorUi.defaultFilename,c=new FilenameDialog(this.editorUi,c,mxResources.get("rename"),mxUtils.bind(this,function(b){null!=b&&0<b.length&&null!=a&&b!=a.getTitle()&&this.editorUi.spinner.spin(document.body,mxResources.get("renaming"))&&a.rename(b,mxUtils.bind(this,function(a){this.editorUi.spinner.stop()}),mxUtils.bind(this,function(a){this.editorUi.handleError(a,null!=a?mxResources.get("errorRenamingFile"):null)}))}),a.constructor==DriveFile||a.constructor==StorageFile? -mxResources.get("diagramName"):null,function(a){if(null!=a&&0<a.length)return!0;b.showError(mxResources.get("error"),mxResources.get("invalidName"),mxResources.get("ok"));return!1},null,null,null,null,b.editor.fileExtensions);this.editorUi.showDialog(c.container,340,90,!0,!0);c.init()}}));f.isEnabled=function(){return this.enabled&&g.apply(this,arguments)};f.visible="1"!=urlParams.embed;b.actions.addAction("makeCopy...",mxUtils.bind(this,function(){var a=b.getCurrentFile();if(null!=a){var c=b.getCopyFilename(a); -a.constructor==DriveFile?(c=new CreateDialog(b,c,mxUtils.bind(this,function(c,d){"download"==d&&(d=App.MODE_GOOGLE);null!=c&&0<c.length&&(d==App.MODE_GOOGLE?b.spinner.spin(document.body,mxResources.get("saving"))&&a.saveAs(c,mxUtils.bind(this,function(c){a.desc=c;a.save(!1,mxUtils.bind(this,function(){b.spinner.stop();a.setModified(!1);a.addAllSavedStatus()}),mxUtils.bind(this,function(a){b.handleError(a)}))}),mxUtils.bind(this,function(a){b.handleError(a)})):b.createFile(c,b.getFileData(!0),null, -d))}),mxUtils.bind(this,function(){b.hideDialog()}),mxResources.get("makeCopy"),mxResources.get("create"),null,null,null,null,!0,null,null,null,null,b.editor.fileExtensions),b.showDialog(c.container,420,380,!0,!0),c.init()):b.editor.editAsNew(this.editorUi.getFileData(!0),c)}}));b.actions.addAction("moveToFolder...",mxUtils.bind(this,function(){var a=b.getCurrentFile();if(a.getMode()==App.MODE_GOOGLE||a.getMode()==App.MODE_ONEDRIVE){var c=!1;if(a.getMode()==App.MODE_GOOGLE&&null!=a.desc.parents)for(var d= -0;d<a.desc.parents.length;d++)if(a.desc.parents[d].isRoot){c=!0;break}b.pickFolder(a.getMode(),mxUtils.bind(this,function(c){b.spinner.spin(document.body,mxResources.get("moving"))&&a.move(c,mxUtils.bind(this,function(a){b.spinner.stop()}),mxUtils.bind(this,function(a){b.handleError(a)}))}),null,!0,c)}}));this.put("publish",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,["publishLink"],b)})));b.actions.put("useOffline",new Action(mxResources.get("useOffline")+"...",function(){b.openLink("https://app.draw.io/")})); -b.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",function(){b.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...",mxUtils.bind(this,function(){try{var a=b.getCurrentFile();null!=a&&b.drive.showPermissions(a.getId())}catch(A){b.handleError(A)}}));this.put("embed",new Menu(mxUtils.bind(this,function(a,c){var d=b.getCurrentFile();null==d||d.getMode()!=App.MODE_GOOGLE&&d.getMode()!=App.MODE_GITHUB||!/(\.png)$/i.test(d.getTitle())||this.addMenuItems(a, -["liveImage","-"],c);this.addMenuItems(a,["embedImage","embedSvg","-","embedHtml"],c);navigator.standalone||b.isOffline()||this.addMenuItems(a,["embedIframe"],c);"1"==urlParams.embed||b.isOffline()||this.addMenuItems(a,"- googleDocs googleSlides googleSheets - microsoftOffice".split(" "),c)})));var z=function(a,c,d,e){("plantUml"!=e||EditorUi.enablePlantUml&&!b.isOffline())&&a.addItem(d,null,mxUtils.bind(this,function(){if("fromText"==e||"formatSql"==e||"plantUml"==e){var a=new ParseDialog(b,d,e); -b.showDialog(a.container,620,420,!0,!1);b.dialog.container.style.overflow="auto"}else a=new CreateGraphDialog(b,d,e),b.showDialog(a.container,620,420,!0,!1);a.init()}),c,null,g())},y=function(a,b,c,d){var f=e.isMouseInsertPoint()?e.getInsertPoint():e.getFreeInsertPoint();a=new mxCell(a,new mxGeometry(f.x,f.y,b,c),d);a.vertex=!0;e.getModel().beginUpdate();try{a=e.addCell(a),e.fireEvent(new mxEventObject("cellsInserted","cells",[a]))}finally{e.getModel().endUpdate()}e.scrollCellToVisible(a);e.setSelectionCell(a); -e.container.focus();e.editAfterInsert&&e.startEditing(a);return a};b.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+"...",function(){b.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this,function(a,c,d,e,f,g,k,l,m,n){a=parseInt(a);!isNaN(a)&&0<a&&b.exportSvg(a/100,c,d,e,f,g,k,!l,m,n)}),!0,null,"svg")}));b.actions.put("insertText",new Action(mxResources.get("text"),function(){e.isEnabled()&& -!e.isCellLocked(e.getDefaultParent())&&e.startEditingAtCell(y("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=g;b.actions.put("insertRectangle",new Action(mxResources.get("rectangle"),function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&y("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=g;b.actions.put("insertEllipse", -new Action(mxResources.get("ellipse"),function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&y("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=g;b.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&y("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=g;var D=mxUtils.bind(this,function(a,b,c){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(b):z(a,b,mxResources.get(c[d])+ -"...",c[d])});this.put("insert",new Menu(mxUtils.bind(this,function(a,c){this.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - createShape insertFreehand - insertImage".split(" "),c);b.insertTemplateEnabled&&!b.isOffline()&&this.addMenuItems(a,["insertTemplate"],c);a.addSeparator(c);this.addSubmenu("insertLayout",a,c,mxResources.get("layout"));this.addSubmenu("insertAdvanced",a,c,mxResources.get("advanced"))})));this.put("insertLayout",new Menu(mxUtils.bind(this, -function(a,b){D(a,b,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(a,c){D(a,c,["fromText","plantUml","-","formatSql"]);a.addItem(mxResources.get("csv")+"...",null,function(){b.showImportCsvDialog()},c,null,g())})));this.put("openRecent",new Menu(function(a,c){var d=b.getRecent();if(null!=d){for(var e=0;e<d.length;e++)(function(d){var e=d.mode;e==App.MODE_GOOGLE?e="googleDrive":e== -App.MODE_ONEDRIVE&&(e="oneDrive");a.addItem(d.title+" ("+mxResources.get(e)+")",null,function(){b.loadFile(d.id)},c)})(d[e]);a.addSeparator(c)}a.addItem(mxResources.get("reset"),null,function(){b.resetRecent()},c)}));this.put("openFrom",new Menu(function(a,c){null!=b.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){b.pickFile(App.MODE_GOOGLE)},c):k&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){}, -c,null,!1);null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){b.pickFile(App.MODE_ONEDRIVE)},c):n&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){b.pickFile(App.MODE_DROPBOX)},c):l&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)", -null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){b.pickFile(App.MODE_GITHUB)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){b.pickFile(App.MODE_GITLAB)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){b.pickFile(App.MODE_TRELLO)},c):u&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){}, -c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.pickFile(App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.pickFile(App.MODE_DEVICE)},c);b.isOffline()||(a.addSeparator(c),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(b,"",mxResources.get("open"),function(a){null!=a&&0<a.length&&(null==b.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(a): -window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(a)))},mxResources.get("url"));b.showDialog(a.container,300,80,!0,!0);a.init()},c))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(a,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=b.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)}, -c):k&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},c):n&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+ -"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},c):l&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){b.showLibraryDialog(null,null,null,null, -App.MODE_GITLAB)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_TRELLO)},c):u&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+ -"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},c)})),this.put("openLibraryFrom",new Menu(function(a,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=b.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){b.pickLibrary(App.MODE_GOOGLE)},c):k&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+ -"...",null,function(){b.pickLibrary(App.MODE_ONEDRIVE)},c):n&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){b.pickLibrary(App.MODE_DROPBOX)},c):l&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&& -a.addItem(mxResources.get("github")+"...",null,function(){b.pickLibrary(App.MODE_GITHUB)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){b.pickLibrary(App.MODE_GITLAB)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){b.pickLibrary(App.MODE_TRELLO)},c):u&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&& -a.addItem(mxResources.get("browser")+"...",null,function(){b.pickLibrary(App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.pickLibrary(App.MODE_DEVICE)},c);b.isOffline()||(a.addSeparator(c),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(b,"",mxResources.get("open"),function(a){if(null!=a&&0<a.length&&b.spinner.spin(document.body,mxResources.get("loading"))){var c=a;b.editor.isCorsEnabledForUrl(a)||(c=PROXY_URL+"?url="+encodeURIComponent(a)); -mxUtils.get(c,function(c){if(200<=c.getStatus()&&299>=c.getStatus()){b.spinner.stop();try{b.loadLibrary(new UrlLibrary(this,c.getText(),a))}catch(G){b.handleError(G,mxResources.get("errorLoadingFile"))}}else b.spinner.stop(),b.handleError(null,mxResources.get("errorLoadingFile"))},function(){b.spinner.stop();b.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));b.showDialog(a.container,300,80,!0,!0);a.init()},c));"1"==urlParams.confLib&&(a.addSeparator(c),a.addItem(mxResources.get("confluenceCloud")+ -"...",null,function(){b.showRemotelyStoredLibrary(mxResources.get("libraries"))},c))})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - find - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));f=b.actions.addAction("comments",mxUtils.bind(this,function(){if(null==this.commentsWindow)this.commentsWindow=new CommentsWindow(b, -document.body.offsetWidth-380,120,300,350),this.commentsWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("comments"));else{var a=!this.commentsWindow.window.isVisible();this.commentsWindow.window.setVisible(a);this.commentsWindow.refreshCommentsTime();a&&this.commentsWindow.hasError&&this.commentsWindow.refreshComments()}})); -f.setToggleAction(!0);f.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.commentsWindow&&this.commentsWindow.window.isVisible()}));b.editor.addListener("fileLoaded",mxUtils.bind(this,function(){null!=this.commentsWindow&&(this.commentsWindow.destroy(),this.commentsWindow=null)}));var f=this.get("viewPanels"),H=f.funct;f.funct=function(a,c){H.apply(this,arguments);b.commentsSupported()&&b.menus.addMenuItems(a,["comments"],c)};this.put("view",new Menu(mxUtils.bind(this,function(a, -c){this.addMenuItems(a,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers"]).concat(b.commentsSupported()?["comments","-"]:["-"]));this.addMenuItems(a,["-","search"],c);if(isLocalStorage||mxClient.IS_CHROMEAPP){var d=this.addMenuItem(a,"scratchpad",c);(!b.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000042367")}this.addMenuItems(a,["shapes","-","pageView","pageScale"]);this.addSubmenu("units", -a,c);this.addMenuItems(a,"- scrollbars tooltips ruler - grid guides".split(" "),c);mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(a,"shadowVisible",c);this.addMenuItems(a,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),c)})));this.put("extras",new Menu(mxUtils.bind(this,function(a,c){"1"!=urlParams.embed&&(this.addSubmenu("theme",a,c),a.addSeparator(c));if("undefined"!==typeof MathJax){var d=this.addMenuItem(a,"mathematicalTypesetting", -c);(!b.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}this.addMenuItems(a,["copyConnect","collapseExpand","-"],c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(a,["showStartScreen"],c);"1"!=urlParams.embed&&this.addMenuItems(a,["autosave"],c);a.addSeparator(c);!b.isOfflineApp()&&isLocalStorage&&this.addMenuItem(a,"plugins",c);this.addMenuItems(a,["tags","-","editDiagram", -"-","drawConfig"],c);a.addSeparator(c);"1"==urlParams.newTempDlg&&(b.actions.addAction("templates",function(){var a=new TemplatesDialog;b.showDialog(a.container,a.width,a.height,!0,!1,null,!1,!0);a.init(b,function(a){console.log(a)},null,null,null,"user",function(a,b){setTimeout(function(){b?a([{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"}, +[{layout:"mxHierarchicalLayout",config:{orientation:"west",intraCellSpacing:30,interRankCellSpacing:100,interHierarchySpacing:60,parallelEdgeSpacing:10}}];b.actions.addAction("runLayout",function(){var a=new TextareaDialog(b,"Run Layouts:",JSON.stringify(b.customLayoutConfig,null,2),function(a){if(0<a.length)try{var c=JSON.parse(a);b.executeLayoutList(c);b.customLayoutConfig=c}catch(A){b.handleError(A),null!=window.console&&console.error(A)}});a.textarea.style.width="600px";a.textarea.style.height= +"380px";b.showDialog(a.container,620,460,!0,!0);a.init()});var f=this.get("layout"),q=f.funct;f.funct=function(a,c){q.apply(this,arguments);a.addSeparator(c);a.addItem(mxResources.get("orgChart")+"...",null,function(){function a(){if("undefined"!==typeof mxOrgChartLayout&&null!=c&&f){var a=b.editor.graph;(new mxOrgChartLayout(a,c,d,e)).execute(a.getDefaultParent());f=!1}}var c=null,d=20,e=20,f=!0,g=document.createElement("div"),k=document.createElement("div");k.style.marginTop="6px";k.style.display= +"inline-block";k.style.width="140px";mxUtils.write(k,mxResources.get("orgChartType")+": ");g.appendChild(k);var l=document.createElement("select");l.style.width="200px";l.style.boxSizing="border-box";for(var k=[mxResources.get("linear"),mxResources.get("hanger2"),mxResources.get("hanger4"),mxResources.get("fishbone1"),mxResources.get("fishbone2"),mxResources.get("1ColumnLeft"),mxResources.get("1ColumnRight"),mxResources.get("smart")],m=0;m<k.length;m++){var n=document.createElement("option");mxUtils.write(n, +k[m]);n.value=m;2==m&&n.setAttribute("selected","selected");l.appendChild(n)}mxEvent.addListener(l,"change",function(){c=l.value});g.appendChild(l);k=document.createElement("div");k.style.marginTop="6px";k.style.display="inline-block";k.style.width="140px";mxUtils.write(k,mxResources.get("parentChildSpacing")+": ");g.appendChild(k);var p=document.createElement("input");p.type="number";p.value=d;p.style.width="200px";p.style.boxSizing="border-box";g.appendChild(p);mxEvent.addListener(p,"change",function(){d= +p.value});k=document.createElement("div");k.style.marginTop="6px";k.style.display="inline-block";k.style.width="140px";mxUtils.write(k,mxResources.get("siblingSpacing")+": ");g.appendChild(k);var q=document.createElement("input");q.type="number";q.value=e;q.style.width="200px";q.style.boxSizing="border-box";g.appendChild(q);mxEvent.addListener(q,"change",function(){e=q.value});g=new CustomDialog(b,g,function(){null==c&&(c=2);a()});b.showDialog(g.container,355,125,!0,!0);g=function(){b.loadingOrgChart= +!1;a()};"undefined"!==typeof mxOrgChartLayout||b.loadingOrgChart||b.isOffline(!0)?g():(b.loadingOrgChart=!0,mxscript("js/orgchart.min.js",g))},c,null,g());a.addSeparator(c);b.menus.addMenuItem(a,"runLayout",c,null,null,mxResources.get("apply")+"...")};this.put("help",new Menu(mxUtils.bind(this,function(a,c){if(!mxClient.IS_CHROMEAPP&&b.isOffline())this.addMenuItems(a,["about"],c);else{var d=a.addItem("Search:",null,null,c,null,null,!1);d.style.backgroundColor="dark"==uiTheme?"#505759":"whiteSmoke"; +d.style.cursor="default";var e=document.createElement("input");e.setAttribute("type","text");e.setAttribute("size","25");e.style.marginLeft="8px";mxEvent.addListener(e,"keydown",mxUtils.bind(this,function(a){var b=mxUtils.trim(e.value);13==a.keyCode&&0<b.length?(this.editorUi.openLink("https://desk.draw.io/support/search/solutions?term="+encodeURIComponent(b)),e.value="",EditorUi.logEvent({category:"SEARCH-HELP",action:"search",label:b}),null!=this.editorUi.menubar&&window.setTimeout(mxUtils.bind(this, +function(){this.editorUi.menubar.hideMenu()}),0)):27==a.keyCode&&(e.value="")}));d.firstChild.nextSibling.appendChild(e);mxEvent.addGestureListeners(e,function(a){document.activeElement!=e&&e.focus();mxEvent.consume(a)},function(a){mxEvent.consume(a)},function(a){mxEvent.consume(a)});window.setTimeout(function(){e.focus()},0);this.addMenuItems(a,["-","keyboardShortcuts","quickStart","userManual","-"],c);EditorUi.isElectronApp||navigator.standalone||"1"==urlParams.embed||this.addMenuItems(a,["downloadDesktop"], +c);mxClient.IS_CHROMEAPP||this.addMenuItems(a,["feedback","support"],c);this.addMenuItems(a,["-","about"],c)}"1"==urlParams.test&&(a.addSeparator(c),this.addSubmenu("testDevelop",a,c))})));"1"==urlParams.test&&(mxResources.parse("testDevelop=Develop"),mxResources.parse("showBoundingBox=Show bounding box"),mxResources.parse("createSidebarEntry=Create Sidebar Entry"),mxResources.parse("testCheckFile=Check File"),mxResources.parse("testDiff=Diff"),mxResources.parse("testInspect=Inspect"),mxResources.parse("testShowConsole=Show Console"), +mxResources.parse("testXmlImageExport=XML Image Export"),mxResources.parse("testDownloadRtModel=Export RT model"),mxResources.parse("testImportRtModel=Import RT model"),b.actions.addAction("createSidebarEntry",mxUtils.bind(this,function(){e.isSelectionEmpty()||b.showTextDialog("Create Sidebar Entry","sb.createVertexTemplateFromData('"+Graph.compress(mxUtils.getXml(e.encodeCells(e.getSelectionCells())))+"', width, height, 'Title');")})),b.actions.addAction("showBoundingBox",mxUtils.bind(this,function(){var a= +e.getGraphBounds(),b=e.view.translate,c=e.view.scale;e.insertVertex(e.getDefaultParent(),null,"",a.x/c-b.x,a.y/c-b.y,a.width/c,a.height/c,"fillColor=none;strokeColor=red;")})),b.actions.addAction("testCheckFile",mxUtils.bind(this,function(){var a=null!=b.pages&&null!=b.getCurrentFile()?b.getCurrentFile().getAnonymizedXmlForPages(b.pages):"",a=new TextareaDialog(b,"Paste Data:",a,function(a){if(0<a.length)try{var c=function(a){function b(a){if(null==n[a]){if(n[a]=!0,null!=e[a]){for(;0<e[a].length;){var d= +e[a].pop();b(d)}delete e[a]}}else mxLog.debug(c+": Visited: "+a)}var c=a.parentNode.id,d=a.childNodes;a={};for(var e={},f=null,g={},k=0;k<d.length;k++){var l=d[k];if(null!=l.id&&0<l.id.length)if(null==a[l.id]){a[l.id]=l.id;var m=l.getAttribute("parent");null==m?null!=f?mxLog.debug(c+": Multiple roots: "+l.id):f=l.id:(null==e[m]&&(e[m]=[]),e[m].push(l.id))}else g[l.id]=l.id}0<Object.keys(g).length?(d=c+": "+Object.keys(g).length+" Duplicates: "+Object.keys(g).join(", "),mxLog.debug(d+" (see console)")): +mxLog.debug(c+": Checked");var n={};null==f?mxLog.debug(c+": No root"):(b(f),Object.keys(n).length!=Object.keys(a).length&&(mxLog.debug(c+": Invalid tree: (see console)"),console.log(c+": Invalid tree",e)))};"<"!=a.charAt(0)&&(a=Graph.decompress(a),mxLog.debug("See console for uncompressed XML"),console.log("xml",a));var d=mxUtils.parseXml(a),e=b.getPagesForNode(d.documentElement,"mxGraphModel");if(null!=e&&0<e.length)try{var f=b.getHashValueForPages(e);mxLog.debug("Checksum: ",f)}catch(J){mxLog.debug("Error: ", +J.message)}else mxLog.debug("No pages found for checksum");var g=d.getElementsByTagName("root");for(a=0;a<g.length;a++)c(g[a]);mxLog.show()}catch(J){b.handleError(J),null!=window.console&&console.error(J)}});a.textarea.style.width="600px";a.textarea.style.height="380px";b.showDialog(a.container,620,460,!0,!0);a.init()})),b.actions.addAction("testDiff",mxUtils.bind(this,function(){if(null!=b.pages){var a=new TextareaDialog(b,"Paste Data:","",function(a){if(0<a.length)try{console.log(JSON.stringify(b.diffPages(b.pages, +b.getPagesForNode(mxUtils.parseXml(a).documentElement)),null,2))}catch(D){b.handleError(D),null!=window.console&&console.error(D)}});a.textarea.style.width="600px";a.textarea.style.height="380px";b.showDialog(a.container,620,460,!0,!0);a.init()}else b.alert("No pages")})),b.actions.addAction("testInspect",mxUtils.bind(this,function(){console.log(b,e.getModel())})),b.actions.addAction("testXmlImageExport",mxUtils.bind(this,function(){var a=new mxImageExport,b=e.getGraphBounds(),c=e.view.scale,d=mxUtils.createXmlDocument(), +f=d.createElement("output");d.appendChild(f);d=new mxXmlCanvas2D(f);d.translate(Math.floor((1-b.x)/c),Math.floor((1-b.y)/c));d.scale(1/c);var g=0,k=d.save;d.save=function(){g++;k.apply(this,arguments)};var l=d.restore;d.restore=function(){g--;l.apply(this,arguments)};var m=a.drawShape;a.drawShape=function(a){mxLog.debug("entering shape",a,g);m.apply(this,arguments);mxLog.debug("leaving shape",a,g)};a.drawState(e.getView().getState(e.model.root),d);mxLog.show();mxLog.debug(mxUtils.getXml(f));mxLog.debug("stateCounter", +g)})),b.actions.addAction("testDownloadRtModel...",mxUtils.bind(this,function(){null==b.drive?b.handleError({message:mxResources.get("serviceUnavailableOrBlocked")}):b.drive.execute(mxUtils.bind(this,function(){var a=prompt("File ID","");if(null!=a&&0<a.length&&b.spinner.spin(document.body,mxResources.get("export"))){var c=new mxXmlRequest("https://www.googleapis.com/drive/v2/files/"+a+"/realtime?supportsTeamDrives=true",null,"GET");c.setRequestHeaders=function(a){mxXmlRequest.prototype.setRequestHeaders.apply(this, +arguments);a.setRequestHeader("authorization","Bearer "+b.drive.token)};c.send(function(c){b.spinner.stop();200<=c.getStatus()&&299>=c.getStatus()?b.saveLocalFile(c.getText(),"json-"+a+".txt","text/plain"):b.handleError({message:mxResources.get("fileNotFound")},mxResources.get("errorLoadingFile"))})}}))})),b.actions.addAction("testShowConsole",function(){mxLog.isVisible()?mxLog.window.fit():mxLog.show();mxLog.window.div.style.zIndex=mxPopupMenu.prototype.zIndex-1}),this.put("testDevelop",new Menu(mxUtils.bind(this, +function(a,c){this.addMenuItems(a,"createSidebarEntry showBoundingBox - testCheckFile testDiff - testInspect - testXmlImageExport - testDownloadRtModel".split(" "),c);a.addItem(mxResources.get("testImportRtModel")+"...",null,function(){var a=document.createElement("input");a.setAttribute("type","file");mxEvent.addListener(a,"change",mxUtils.bind(this,function(){if(null!=a.files){var c=new FileReader;c.onload=mxUtils.bind(this,function(c){try{b.openLocalFile(mxUtils.getXml(b.drive.convertJsonToXml(JSON.parse(c.target.result).data)), +a.files[0].name,!0)}catch(G){b.handleError(G,mxResources.get("errorLoadingFile"))}});c.readAsText(a.files[0])}}));a.click()},c);this.addMenuItems(a,["-","testShowConsole"],c)}))));b.actions.addAction("shapes...",function(){mxClient.IS_CHROMEAPP||!b.isOffline()?b.showDialog((new MoreShapesDialog(b,!0)).container,640,isLocalStorage?mxClient.IS_IOS?480:460:440,!0,!0):b.showDialog((new MoreShapesDialog(b,!1)).container,360,isLocalStorage?mxClient.IS_IOS?300:280:260,!0,!0)});b.actions.put("createShape", +new Action(mxResources.get("shape")+"...",function(a){e.isEnabled()&&(a=new mxCell("",new mxGeometry(0,0,120,120),b.defaultCustomShapeStyle),a.vertex=!0,a=new EditShapeDialog(b,a,mxResources.get("editShape")+":",630,400),b.showDialog(a.container,640,480,!0,!1),a.init())})).isEnabled=g;b.actions.put("embedHtml",new Action(mxResources.get("html")+"...",function(){b.spinner.spin(document.body,mxResources.get("loading"))&&b.getPublicUrl(b.getCurrentFile(),function(a){b.spinner.stop();b.showHtmlDialog(mxResources.get("create"), +"https://desk.draw.io/support/solutions/articles/16000042542",a,function(a,c,d,e,f,g,k,l,m,n){b.createHtml(a,c,d,e,f,g,k,l,m,n,mxUtils.bind(this,function(a,c){var d=new EmbedDialog(b,a+"\n"+c,null,null,function(){var d=window.open(),e=d.document;if(null!=e){"CSS1Compat"===document.compatMode&&e.writeln("<!DOCTYPE html>");e.writeln("<html>");e.writeln("<head><title>"+encodeURIComponent(mxResources.get("preview"))+'</title><meta charset="utf-8"></head>');e.writeln("<body>");e.writeln(a);var f=mxClient.IS_IE|| +mxClient.IS_EDGE||null!=document.documentMode;f&&e.writeln(c);e.writeln("</body>");e.writeln("</html>");e.close();if(!f){var g=d.document.createElement("div");g.marginLeft="26px";g.marginTop="26px";mxUtils.write(g,mxResources.get("updatingDocument"));f=d.document.createElement("img");f.setAttribute("src",window.location.protocol+"//"+window.location.hostname+"/"+IMAGE_PATH+"/spin.gif");f.style.marginLeft="6px";g.appendChild(f);d.document.body.insertBefore(g,d.document.body.firstChild);window.setTimeout(function(){var a= +document.createElement("script");a.type="text/javascript";a.src=/<script.*?src="(.*?)"/.exec(c)[1];e.body.appendChild(a);g.parentNode.removeChild(g)},20)}}else b.handleError({message:mxResources.get("errorUpdatingPreview")})});b.showDialog(d.container,440,240,!0,!0);d.init()}))})})}));b.actions.put("liveImage",new Action("Live image...",function(){var a=b.getCurrentFile();null!=a&&b.spinner.spin(document.body,mxResources.get("loading"))&&b.getPublicUrl(b.getCurrentFile(),function(c){b.spinner.stop(); +null!=c?(c=new EmbedDialog(b,'<img src="'+(a.constructor!=DriveFile?c:"https://drive.google.com/uc?id="+a.getId())+'"/>'),b.showDialog(c.container,440,240,!0,!0),c.init()):b.handleError({message:mxResources.get("invalidPublicUrl")})})}));b.actions.put("embedImage",new Action(mxResources.get("image")+"...",function(){b.showEmbedImageDialog(function(a,c,d,e,f,g){b.spinner.spin(document.body,mxResources.get("loading"))&&b.createEmbedImage(a,c,d,e,f,g,function(a){b.spinner.stop();a=new EmbedDialog(b, +a);b.showDialog(a.container,440,240,!0,!0);a.init()},function(a){b.spinner.stop();b.handleError(a)})},mxResources.get("image"),mxResources.get("retina"),b.isExportToCanvas())}));b.actions.put("embedSvg",new Action(mxResources.get("formatSvg")+"...",function(){b.showEmbedImageDialog(function(a,c,d,e,f,g){b.spinner.spin(document.body,mxResources.get("loading"))&&b.createEmbedSvg(a,c,d,e,f,g,function(a){b.spinner.stop();a=new EmbedDialog(b,a);b.showDialog(a.container,440,240,!0,!0);a.init()},function(a){b.spinner.stop(); +b.handleError(a)})},mxResources.get("formatSvg"),mxResources.get("image"),!0,"https://desk.draw.io/support/solutions/articles/16000042548")}));b.actions.put("embedIframe",new Action(mxResources.get("iframe")+"...",function(){var a=e.getGraphBounds();b.showPublishLinkDialog(mxResources.get("iframe"),null,"100%",Math.ceil((a.y+a.height-e.view.translate.y)/e.view.scale)+2,function(a,c,d,e,f,g,k,l){b.spinner.spin(document.body,mxResources.get("loading"))&&b.getPublicUrl(b.getCurrentFile(),function(m){b.spinner.stop(); +m=new EmbedDialog(b,'<iframe frameborder="0" style="width:'+k+";height:"+l+';" src="'+b.createLink(a,c,d,e,f,g,m)+'"></iframe>');b.showDialog(m.container,440,240,!0,!0);m.init()})},!0)}));b.actions.put("publishLink",new Action(mxResources.get("link")+"...",function(){b.showPublishLinkDialog(null,null,null,null,function(a,c,d,e,f,g){b.spinner.spin(document.body,mxResources.get("loading"))&&b.getPublicUrl(b.getCurrentFile(),function(k){b.spinner.stop();k=new EmbedDialog(b,b.createLink(a,c,d,e,f,g,k)); +b.showDialog(k.container,440,240,!0,!0);k.init()})})}));b.actions.addAction("microsoftOffice...",function(){b.openLink("https://office.draw.io")});b.actions.addAction("googleDocs...",function(){b.openLink("http://docsaddon.draw.io")});b.actions.addAction("googleSlides...",function(){b.openLink("https://slidesaddon.draw.io")});b.actions.addAction("googleSheets...",function(){b.openLink("https://sheetsaddon.draw.io")});b.actions.addAction("googleSites...",function(){b.spinner.spin(document.body,mxResources.get("loading"))&& +b.getPublicUrl(b.getCurrentFile(),function(a){b.spinner.stop();a=new GoogleSitesDialog(b,a);b.showDialog(a.container,420,256,!0,!0);a.init()})});if(isLocalStorage||mxClient.IS_CHROMEAPP)f=b.actions.addAction("scratchpad",function(){b.toggleScratchpad()}),f.setToggleAction(!0),f.setSelectedCallback(function(){return null!=b.scratchpad}),b.actions.addAction("plugins...",function(){b.showDialog((new PluginsDialog(b)).container,360,170,!0,!1)});f=b.actions.addAction("search",function(){var a=b.sidebar.isEntryVisible("search"); +b.sidebar.showPalette("search",!a);isLocalStorage&&(mxSettings.settings.search=!a,mxSettings.save())});f.setToggleAction(!0);f.setSelectedCallback(function(){return b.sidebar.isEntryVisible("search")});"1"==urlParams.embed&&(b.actions.get("save").funct=function(a){e.isEditing()&&e.stopEditing();var c="0"!=urlParams.pages||null!=b.pages&&1<b.pages.length?b.getFileData(!0):mxUtils.getXml(b.editor.getGraphXml());if("json"==urlParams.proto){var d=b.createLoadMessage("save");d.xml=c;a&&(d.exit=!0);c=JSON.stringify(d)}(window.opener|| +window.parent).postMessage(c,"*");"0"!=urlParams.modified&&"1"!=urlParams.keepmodified&&(b.editor.modified=!1,b.editor.setStatus(""));null!=b.getCurrentFile()&&b.saveFile()},b.actions.addAction("saveAndExit",function(){b.actions.get("save").funct(!0)}),b.actions.addAction("exit",function(){var a=function(){b.editor.modified=!1;var a="json"==urlParams.proto?JSON.stringify({event:"exit",modified:b.editor.modified}):"";(window.opener||window.parent).postMessage(a,"*")};b.editor.modified?b.confirm(mxResources.get("allChangesLost"), +null,a,mxResources.get("cancel"),mxResources.get("discardChanges")):a()}));this.put("exportAs",new Menu(mxUtils.bind(this,function(a,c){b.isExportToCanvas()?(this.addMenuItems(a,["exportPng"],c),b.jpgSupported&&this.addMenuItems(a,["exportJpg"],c)):b.isOffline()||mxClient.IS_IOS&&navigator.standalone||this.addMenuItems(a,["exportPng","exportJpg"],c);this.addMenuItems(a,["exportSvg","-"],c);b.isOffline()||b.printPdfExport?this.addMenuItems(a,["exportPdf"],c):b.isOffline()||mxClient.IS_IOS&&navigator.standalone|| +this.addMenuItems(a,["exportPdf"],c);mxClient.IS_IE||"undefined"===typeof VsdxExport&&b.isOffline()||this.addMenuItems(a,["exportVsdx"],c);this.addMenuItems(a,["-","exportHtml","exportXml","exportUrl"],c);b.isOffline()||(a.addSeparator(c),this.addMenuItem(a,"export",c).firstChild.nextSibling.innerHTML=mxResources.get("advanced")+"...")})));this.put("importFrom",new Menu(mxUtils.bind(this,function(a,c){function d(a){a.pickFile(function(c){b.spinner.spin(document.body,mxResources.get("loading"))&&a.getFile(c, +function(a){var c="data:image/"==a.getData().substring(0,11)?g(a.getTitle()):"text/xml";/\.svg$/i.test(a.getTitle())&&!b.editor.isDataSvg(a.getData())&&(a.setData(b.createSvgDataUri(a.getData())),c="image/svg+xml");f(a.getData(),c,a.getTitle())},function(a){b.handleError(a,null!=a?mxResources.get("errorLoadingFile"):null)},a==b.drive)},!0)}var f=mxUtils.bind(this,function(a,c,d){var f=e.view,g=e.getGraphBounds(),k=e.snap(Math.ceil(Math.max(0,g.x/f.scale-f.translate.x)+4*e.gridSize)),l=e.snap(Math.ceil(Math.max(0, +(g.y+g.height)/f.scale-f.translate.y)+4*e.gridSize));"data:image/"==a.substring(0,11)?b.loadImage(a,mxUtils.bind(this,function(f){var g=!0,m=mxUtils.bind(this,function(){b.resizeImage(f,a,mxUtils.bind(this,function(f,m,n){f=g?Math.min(1,Math.min(b.maxImageSize/m,b.maxImageSize/n)):1;b.importFile(a,c,k,l,Math.round(m*f),Math.round(n*f),d,function(a){b.spinner.stop();e.setSelectionCells(a);e.scrollCellToVisible(e.getSelectionCell())})}),g)});a.length>b.resampleThreshold?b.confirmImageResize(function(a){g= +a;m()}):m()}),mxUtils.bind(this,function(){b.handleError({message:mxResources.get("cannotOpenFile")})})):b.importFile(a,c,k,l,0,0,d,function(a){b.spinner.stop();e.setSelectionCells(a);e.scrollCellToVisible(e.getSelectionCell())})}),g=mxUtils.bind(this,function(a){var b="text/xml";/\.png$/i.test(a)?b="image/png":/\.jpe?g$/i.test(a)?b="image/jpg":/\.gif$/i.test(a)?b="image/gif":/\.pdf$/i.test(a)&&(b="application/pdf");return b});"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!= +b.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){d(b.drive)},c):k&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){d(b.oneDrive)},c):n&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox? +a.addItem(mxResources.get("dropbox")+"...",null,function(){d(b.dropbox)},c):l&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){d(b.gitHub)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){d(b.gitLab)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){d(b.trello)}, +c):t&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.importLocalFile(!1)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.importLocalFile(!0)},c);b.isOffline()||(a.addSeparator(c),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(b,"",mxResources.get("import"), +function(a){if(null!=a&&0<a.length&&b.spinner.spin(document.body,mxResources.get("loading"))){var c=/(\.png)($|\?)/i.test(a)?"image/png":"text/xml";b.loadUrl(PROXY_URL+"?url="+encodeURIComponent(a),function(b){f(b,c,a)},function(){b.spinner.stop();b.handleError(null,mxResources.get("errorLoadingFile"))},"image/png"==c)}},mxResources.get("url"));b.showDialog(a.container,300,80,!0,!0);a.init()},c))}))).isEnabled=g;this.put("theme",new Menu(mxUtils.bind(this,function(a,c){var d=mxSettings.getUi(),e= +a.addItem(mxResources.get("automatic"),null,function(){mxSettings.setUi("");mxSettings.save();b.alert(mxResources.get("restartForChangeRequired"))},c);"kennedy"!=d&&"atlas"!=d&&"dark"!=d&&"min"!=d&&a.addCheckmark(e,Editor.checkmarkImage);a.addSeparator(c);e=a.addItem(mxResources.get("kennedy"),null,function(){mxSettings.setUi("kennedy");mxSettings.save();b.alert(mxResources.get("restartForChangeRequired"))},c);"kennedy"==d&&a.addCheckmark(e,Editor.checkmarkImage);e=a.addItem(mxResources.get("minimal"), +null,function(){mxSettings.setUi("min");mxSettings.save();b.alert(mxResources.get("restartForChangeRequired"))},c);"min"==d&&a.addCheckmark(e,Editor.checkmarkImage);e=a.addItem(mxResources.get("atlas"),null,function(){mxSettings.setUi("atlas");mxSettings.save();b.alert(mxResources.get("restartForChangeRequired"))},c);"atlas"==d&&a.addCheckmark(e,Editor.checkmarkImage);e=a.addItem(mxResources.get("dark"),null,function(){mxSettings.setUi("dark");mxSettings.save();b.alert(mxResources.get("restartForChangeRequired"))}, +c);"dark"==d&&a.addCheckmark(e,Editor.checkmarkImage)})));f=this.editorUi.actions.addAction("rename...",mxUtils.bind(this,function(){var a=this.editorUi.getCurrentFile();if(null!=a){var c=null!=a.getTitle()?a.getTitle():this.editorUi.defaultFilename,c=new FilenameDialog(this.editorUi,c,mxResources.get("rename"),mxUtils.bind(this,function(b){null!=b&&0<b.length&&null!=a&&b!=a.getTitle()&&this.editorUi.spinner.spin(document.body,mxResources.get("renaming"))&&a.rename(b,mxUtils.bind(this,function(a){this.editorUi.spinner.stop()}), +mxUtils.bind(this,function(a){this.editorUi.handleError(a,null!=a?mxResources.get("errorRenamingFile"):null)}))}),a.constructor==DriveFile||a.constructor==StorageFile?mxResources.get("diagramName"):null,function(a){if(null!=a&&0<a.length)return!0;b.showError(mxResources.get("error"),mxResources.get("invalidName"),mxResources.get("ok"));return!1},null,null,null,null,b.editor.fileExtensions);this.editorUi.showDialog(c.container,340,90,!0,!0);c.init()}}));f.isEnabled=function(){return this.enabled&& +g.apply(this,arguments)};f.visible="1"!=urlParams.embed;b.actions.addAction("makeCopy...",mxUtils.bind(this,function(){var a=b.getCurrentFile();if(null!=a){var c=b.getCopyFilename(a);a.constructor==DriveFile?(c=new CreateDialog(b,c,mxUtils.bind(this,function(c,d){"download"==d&&(d=App.MODE_GOOGLE);null!=c&&0<c.length&&(d==App.MODE_GOOGLE?b.spinner.spin(document.body,mxResources.get("saving"))&&a.saveAs(c,mxUtils.bind(this,function(c){a.desc=c;a.save(!1,mxUtils.bind(this,function(){b.spinner.stop(); +a.setModified(!1);a.addAllSavedStatus()}),mxUtils.bind(this,function(a){b.handleError(a)}))}),mxUtils.bind(this,function(a){b.handleError(a)})):b.createFile(c,b.getFileData(!0),null,d))}),mxUtils.bind(this,function(){b.hideDialog()}),mxResources.get("makeCopy"),mxResources.get("create"),null,null,null,null,!0,null,null,null,null,b.editor.fileExtensions),b.showDialog(c.container,420,380,!0,!0),c.init()):b.editor.editAsNew(this.editorUi.getFileData(!0),c)}}));b.actions.addAction("moveToFolder...",mxUtils.bind(this, +function(){var a=b.getCurrentFile();if(a.getMode()==App.MODE_GOOGLE||a.getMode()==App.MODE_ONEDRIVE){var c=!1;if(a.getMode()==App.MODE_GOOGLE&&null!=a.desc.parents)for(var d=0;d<a.desc.parents.length;d++)if(a.desc.parents[d].isRoot){c=!0;break}b.pickFolder(a.getMode(),mxUtils.bind(this,function(c){b.spinner.spin(document.body,mxResources.get("moving"))&&a.move(c,mxUtils.bind(this,function(a){b.spinner.stop()}),mxUtils.bind(this,function(a){b.handleError(a)}))}),null,!0,c)}}));this.put("publish",new Menu(mxUtils.bind(this, +function(a,b){this.addMenuItems(a,["publishLink"],b)})));b.actions.put("useOffline",new Action(mxResources.get("useOffline")+"...",function(){b.openLink("https://app.draw.io/")}));b.actions.put("downloadDesktop",new Action(mxResources.get("downloadDesktop")+"...",function(){b.openLink("https://get.draw.io/")}));this.editorUi.actions.addAction("share...",mxUtils.bind(this,function(){try{var a=b.getCurrentFile();null!=a&&b.drive.showPermissions(a.getId())}catch(B){b.handleError(B)}}));this.put("embed", +new Menu(mxUtils.bind(this,function(a,c){var d=b.getCurrentFile();null==d||d.getMode()!=App.MODE_GOOGLE&&d.getMode()!=App.MODE_GITHUB||!/(\.png)$/i.test(d.getTitle())||this.addMenuItems(a,["liveImage","-"],c);this.addMenuItems(a,["embedImage","embedSvg","-","embedHtml"],c);navigator.standalone||b.isOffline()||this.addMenuItems(a,["embedIframe"],c);"1"==urlParams.embed||b.isOffline()||this.addMenuItems(a,"- googleDocs googleSlides googleSheets - microsoftOffice".split(" "),c)})));var z=function(a, +c,d,e){("plantUml"!=e||EditorUi.enablePlantUml&&!b.isOffline())&&a.addItem(d,null,mxUtils.bind(this,function(){if("fromText"==e||"formatSql"==e||"plantUml"==e){var a=new ParseDialog(b,d,e);b.showDialog(a.container,620,420,!0,!1);b.dialog.container.style.overflow="auto"}else a=new CreateGraphDialog(b,d,e),b.showDialog(a.container,620,420,!0,!1);a.init()}),c,null,g())},x=function(a,b,c,d){var f=e.isMouseInsertPoint()?e.getInsertPoint():e.getFreeInsertPoint();a=new mxCell(a,new mxGeometry(f.x,f.y,b, +c),d);a.vertex=!0;e.getModel().beginUpdate();try{a=e.addCell(a),e.fireEvent(new mxEventObject("cellsInserted","cells",[a]))}finally{e.getModel().endUpdate()}e.scrollCellToVisible(a);e.setSelectionCell(a);e.container.focus();e.editAfterInsert&&e.startEditing(a);return a};b.actions.put("exportSvg",new Action(mxResources.get("formatSvg")+"...",function(){b.showExportDialog(mxResources.get("formatSvg"),!0,mxResources.get("export"),"https://support.draw.io/display/DO/Exporting+Files",mxUtils.bind(this, +function(a,c,d,e,f,g,k,l,m,n){a=parseInt(a);!isNaN(a)&&0<a&&b.exportSvg(a/100,c,d,e,f,g,k,!l,m,n)}),!0,null,"svg")}));b.actions.put("insertText",new Action(mxResources.get("text"),function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&e.startEditingAtCell(x("Text",40,20,"text;html=1;resizable=0;autosize=1;align=center;verticalAlign=middle;points=[];fillColor=none;strokeColor=none;rounded=0;"))}),null,null,Editor.ctrlKey+"+Shift+X").isEnabled=g;b.actions.put("insertRectangle",new Action(mxResources.get("rectangle"), +function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&x("",120,60,"whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+K").isEnabled=g;b.actions.put("insertEllipse",new Action(mxResources.get("ellipse"),function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&&x("",80,80,"ellipse;whiteSpace=wrap;html=1;")}),null,null,Editor.ctrlKey+"+Shift+K").isEnabled=g;b.actions.put("insertRhombus",new Action(mxResources.get("rhombus"),function(){e.isEnabled()&&!e.isCellLocked(e.getDefaultParent())&& +x("",80,80,"rhombus;whiteSpace=wrap;html=1;")})).isEnabled=g;var C=mxUtils.bind(this,function(a,b,c){for(var d=0;d<c.length;d++)"-"==c[d]?a.addSeparator(b):z(a,b,mxResources.get(c[d])+"...",c[d])});this.put("insert",new Menu(mxUtils.bind(this,function(a,c){this.addMenuItems(a,"insertRectangle insertEllipse insertRhombus - insertText insertLink - createShape insertFreehand - insertImage".split(" "),c);b.insertTemplateEnabled&&!b.isOffline()&&this.addMenuItems(a,["insertTemplate"],c);a.addSeparator(c); +this.addSubmenu("insertLayout",a,c,mxResources.get("layout"));this.addSubmenu("insertAdvanced",a,c,mxResources.get("advanced"))})));this.put("insertLayout",new Menu(mxUtils.bind(this,function(a,b){C(a,b,"horizontalFlow verticalFlow - horizontalTree verticalTree radialTree - organic circle".split(" "))})));this.put("insertAdvanced",new Menu(mxUtils.bind(this,function(a,c){C(a,c,["fromText","plantUml","-","formatSql"]);a.addItem(mxResources.get("csv")+"...",null,function(){b.showImportCsvDialog()}, +c,null,g())})));this.put("openRecent",new Menu(function(a,c){var d=b.getRecent();if(null!=d){for(var e=0;e<d.length;e++)(function(d){var e=d.mode;e==App.MODE_GOOGLE?e="googleDrive":e==App.MODE_ONEDRIVE&&(e="oneDrive");a.addItem(d.title+" ("+mxResources.get(e)+")",null,function(){b.loadFile(d.id)},c)})(d[e]);a.addSeparator(c)}a.addItem(mxResources.get("reset"),null,function(){b.resetRecent()},c)}));this.put("openFrom",new Menu(function(a,c){null!=b.drive?a.addItem(mxResources.get("googleDrive")+"...", +null,function(){b.pickFile(App.MODE_GOOGLE)},c):k&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){b.pickFile(App.MODE_ONEDRIVE)},c):n&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+ +"...",null,function(){b.pickFile(App.MODE_DROPBOX)},c):l&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){b.pickFile(App.MODE_GITHUB)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){b.pickFile(App.MODE_GITLAB)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){b.pickFile(App.MODE_TRELLO)}, +c):t&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.pickFile(App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.pickFile(App.MODE_DEVICE)},c);b.isOffline()||(a.addSeparator(c),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(b, +"",mxResources.get("open"),function(a){null!=a&&0<a.length&&(null==b.getCurrentFile()?window.location.hash="#U"+encodeURIComponent(a):window.openWindow((mxClient.IS_CHROMEAPP?"https://www.draw.io/":"https://"+location.host+"/")+window.location.search+"#U"+encodeURIComponent(a)))},mxResources.get("url"));b.showDialog(a.container,300,80,!0,!0);a.init()},c))}));Editor.enableCustomLibraries&&(this.put("newLibrary",new Menu(function(a,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!= +b.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_GOOGLE)},c):k&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_ONEDRIVE)},c):n&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+ +" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_DROPBOX)},c):l&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_GITHUB)}, +c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_GITLAB)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_TRELLO)},c):t&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+ +"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.showLibraryDialog(null,null,null,null,App.MODE_DEVICE)},c)})),this.put("openLibraryFrom",new Menu(function(a,c){"undefined"!=typeof google&&"undefined"!=typeof google.picker&&(null!=b.drive?a.addItem(mxResources.get("googleDrive")+"...",null,function(){b.pickLibrary(App.MODE_GOOGLE)},c):k&&"function"===typeof window.DriveClient&&a.addItem(mxResources.get("googleDrive")+ +" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1));null!=b.oneDrive?a.addItem(mxResources.get("oneDrive")+"...",null,function(){b.pickLibrary(App.MODE_ONEDRIVE)},c):n&&"function"===typeof window.OneDriveClient&&a.addItem(mxResources.get("oneDrive")+" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);null!=b.dropbox?a.addItem(mxResources.get("dropbox")+"...",null,function(){b.pickLibrary(App.MODE_DROPBOX)},c):l&&"function"===typeof window.DropboxClient&&a.addItem(mxResources.get("dropbox")+ +" ("+mxResources.get("loading")+"...)",null,function(){},c,null,!1);a.addSeparator(c);null!=b.gitHub&&a.addItem(mxResources.get("github")+"...",null,function(){b.pickLibrary(App.MODE_GITHUB)},c);null!=b.gitLab&&a.addItem(mxResources.get("gitlab")+"...",null,function(){b.pickLibrary(App.MODE_GITLAB)},c);null!=b.trello?a.addItem(mxResources.get("trello")+"...",null,function(){b.pickLibrary(App.MODE_TRELLO)},c):t&&"function"===typeof window.TrelloClient&&a.addItem(mxResources.get("trello")+" ("+mxResources.get("loading")+ +"...)",null,function(){},c,null,!1);a.addSeparator(c);isLocalStorage&&"0"!=urlParams.browser&&a.addItem(mxResources.get("browser")+"...",null,function(){b.pickLibrary(App.MODE_BROWSER)},c);a.addItem(mxResources.get("device")+"...",null,function(){b.pickLibrary(App.MODE_DEVICE)},c);b.isOffline()||(a.addSeparator(c),a.addItem(mxResources.get("url")+"...",null,function(){var a=new FilenameDialog(b,"",mxResources.get("open"),function(a){if(null!=a&&0<a.length&&b.spinner.spin(document.body,mxResources.get("loading"))){var c= +a;b.editor.isCorsEnabledForUrl(a)||(c=PROXY_URL+"?url="+encodeURIComponent(a));mxUtils.get(c,function(c){if(200<=c.getStatus()&&299>=c.getStatus()){b.spinner.stop();try{b.loadLibrary(new UrlLibrary(this,c.getText(),a))}catch(I){b.handleError(I,mxResources.get("errorLoadingFile"))}}else b.spinner.stop(),b.handleError(null,mxResources.get("errorLoadingFile"))},function(){b.spinner.stop();b.handleError(null,mxResources.get("errorLoadingFile"))})}},mxResources.get("url"));b.showDialog(a.container,300, +80,!0,!0);a.init()},c));"1"==urlParams.confLib&&(a.addSeparator(c),a.addItem(mxResources.get("confluenceCloud")+"...",null,function(){b.showRemotelyStoredLibrary(mxResources.get("libraries"))},c))})));this.put("edit",new Menu(mxUtils.bind(this,function(a,b){this.addMenuItems(a,"undo redo - cut copy paste delete - duplicate - find - editData editTooltip - editStyle editGeometry - edit - editLink openLink - selectVertices selectEdges selectAll selectNone - lockUnlock".split(" "))})));f=b.actions.addAction("comments", +mxUtils.bind(this,function(){if(null==this.commentsWindow)this.commentsWindow=new CommentsWindow(b,document.body.offsetWidth-380,120,300,350),this.commentsWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("comments"))}),this.commentsWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("comments"));else{var a=!this.commentsWindow.window.isVisible();this.commentsWindow.window.setVisible(a); +this.commentsWindow.refreshCommentsTime();a&&this.commentsWindow.hasError&&this.commentsWindow.refreshComments()}}));f.setToggleAction(!0);f.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.commentsWindow&&this.commentsWindow.window.isVisible()}));b.editor.addListener("fileLoaded",mxUtils.bind(this,function(){null!=this.commentsWindow&&(this.commentsWindow.destroy(),this.commentsWindow=null)}));var f=this.get("viewPanels"),H=f.funct;f.funct=function(a,c){H.apply(this,arguments); +b.commentsSupported()&&b.menus.addMenuItems(a,["comments"],c)};this.put("view",new Menu(mxUtils.bind(this,function(a,c){this.addMenuItems(a,(null!=this.editorUi.format?["formatPanel"]:[]).concat(["outline","layers"]).concat(b.commentsSupported()?["comments","-"]:["-"]));this.addMenuItems(a,["-","search"],c);if(isLocalStorage||mxClient.IS_CHROMEAPP){var d=this.addMenuItem(a,"scratchpad",c);(!b.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000042367")}this.addMenuItems(a, +["shapes","-","pageView","pageScale"]);this.addSubmenu("units",a,c);this.addMenuItems(a,"- scrollbars tooltips ruler - grid guides".split(" "),c);mxClient.IS_SVG&&(null==document.documentMode||9<document.documentMode)&&this.addMenuItem(a,"shadowVisible",c);this.addMenuItems(a,"- connectionArrows connectionPoints - resetView zoomIn zoomOut".split(" "),c)})));this.put("extras",new Menu(mxUtils.bind(this,function(a,c){"1"!=urlParams.embed&&(this.addSubmenu("theme",a,c),a.addSeparator(c));if("undefined"!== +typeof MathJax){var d=this.addMenuItem(a,"mathematicalTypesetting",c);(!b.isOffline()||mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)&&this.addLinkToItem(d,"https://desk.draw.io/support/solutions/articles/16000032875")}this.addMenuItems(a,["copyConnect","collapseExpand","-"],c);"1"!=urlParams.embed&&(isLocalStorage||mxClient.IS_CHROMEAPP)&&this.addMenuItems(a,["showStartScreen"],c);"1"!=urlParams.embed&&this.addMenuItems(a,["autosave"],c);a.addSeparator(c);!b.isOfflineApp()&&isLocalStorage&&this.addMenuItem(a, +"plugins",c);this.addMenuItems(a,["tags","-","editDiagram","-","drawConfig"],c);a.addSeparator(c);"1"==urlParams.newTempDlg&&(b.actions.addAction("templates",function(){var a=new TemplatesDialog;b.showDialog(a.container,a.width,a.height,!0,!1,null,!1,!0);a.init(b,function(a){console.log(a)},null,null,null,"user",function(a,b){setTimeout(function(){b?a([{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"}, {url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"},{url:"123",title:"Test 4"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"}]):a([{url:"123",title:"Test 4",imgUrl:"https://images.pexels.com/photos/459225/pexels-photo-459225.jpeg"},{url:"123",title:"Test 5"},{url:"123",title:"Test 6"},{url:"123",title:"Test 1Test 1Test 1Test 1Test 1Test 1Test 11Test 1Test 11Test 1Test 1dgdsgdfg fdg dfgdfg dfg dfg"},{url:"123",title:"Test 2",imgUrl:"https://www.google.com.eg/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"}, {url:"123",title:"Test 3",changedBy:"Ashraf Teleb",lastModifiedOn:"Yesterday"}]);console.log(b)},1E3)},function(a,b,c){setTimeout(function(){b(c?[{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"},{url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"},{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"}]:[{url:"123",title:a+"Test 5"},{url:"123",title:a+"Test 6"},{url:"123",title:a+"Test 1Test 1Test 1Test 1Test 1Test 1Test 1"},{url:"123",title:a+"Test 2"}, {url:"123",title:a+"Test 3"},{url:"123",title:a+"Test 4"}])},2E3)},null)}),this.addMenuItem(a,"templates",c))})));this.put("file",new Menu(mxUtils.bind(this,function(a,c){if("1"==urlParams.embed)this.addSubmenu("importFrom",a,c),this.addSubmenu("exportAs",a,c),this.addSubmenu("embed",a,c),"1"==urlParams.libraries&&(this.addMenuItems(a,["-"],c),this.addSubmenu("newLibrary",a,c),this.addSubmenu("openLibraryFrom",a,c)),b.isRevisionHistorySupported()&&this.addMenuItems(a,["-","revisionHistory"],c),this.addMenuItems(a, @@ -9877,39 +9881,39 @@ null,null,!0,!0))}),b))})};(function(){var a=EditorUi.prototype.refresh;EditorUi (function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),c="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,b,e){e.setAttribute("relatedPage",b.relatedPage.getId());null==b.index&&(e.setAttribute("name",b.relatedPage.getName()),null!=b.relatedPage.viewState&&e.setAttribute("viewState",JSON.stringify(b.relatedPage.viewState,function(a,b){return 0>mxUtils.indexOf(c, a)?b:void 0})),null!=b.relatedPage.root&&a.encodeCell(b.relatedPage.root,e));return e};a.beforeDecode=function(a,b,c){c.ui=a.ui;c.relatedPage=c.ui.getPageById(b.getAttribute("relatedPage"));if(null==c.relatedPage){var d=b.ownerDocument.createElement("diagram");d.setAttribute("id",b.getAttribute("relatedPage"));d.setAttribute("name",b.getAttribute("name"));c.relatedPage=new DiagramPage(d);d=b.getAttribute("viewState");null!=d&&(c.relatedPage.viewState=JSON.parse(d),b.removeAttribute("viewState")); b=b.cloneNode(!0);d=b.firstChild;if(null!=d)for(c.relatedPage.root=a.decodeCell(d,!1),c=d.nextSibling,d.parentNode.removeChild(d),d=c;null!=d;){c=d.nextSibling;if(d.nodeType==mxConstants.NODETYPE_ELEMENT){var e=d.getAttribute("id");null==a.lookup(e)&&a.decodeCell(d)}d.parentNode.removeChild(d);d=c}}return b};a.afterDecode=function(a,b,c){c.index=c.previousIndex;return c};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]= -"selectDescendants";var c=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,b,d,l,n){b=null!=b?b:!1;null==d&&(d=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var e=d.slice(),f=[],g=0;g<d.length;g++){var k=this.view.getState(d[g]),t=null!=k?k.style:this.getCellStyle(d[g]);"1"==mxUtils.getValue(t,"treeFolding","0")&&(this.traverse(d[g],!0,mxUtils.bind(this,function(a,b){null!=b&&f.push(b);a!=d[g]&&f.push(a);return a==d[g]||!this.model.isCollapsed(a)})), +"selectDescendants";var c=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,b,d,l,n){b=null!=b?b:!1;null==d&&(d=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var e=d.slice(),f=[],g=0;g<d.length;g++){var k=this.view.getState(d[g]),u=null!=k?k.style:this.getCellStyle(d[g]);"1"==mxUtils.getValue(u,"treeFolding","0")&&(this.traverse(d[g],!0,mxUtils.bind(this,function(a,b){null!=b&&f.push(b);a!=d[g]&&f.push(a);return a==d[g]||!this.model.isCollapsed(a)})), this.model.setCollapsed(d[g],a))}for(g=0;g<f.length;g++)this.model.setVisible(f[g],!a);d=e;d=c.apply(this,arguments)}finally{this.model.endUpdate()}return d};var d=EditorUi.prototype.init;EditorUi.prototype.init=function(){d.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return z.isVertex(a)&&d(a)}function c(a){var b=!1;null!=a&&(b=q.view.getState(a),b="1"==(null!=b?b.style:q.getCellStyle(a)).treeMoving); return b}function d(a){var b=!1;null!=a&&(a=z.getParent(a),b=q.view.getState(a),b="tree"==(null!=b?b.style:q.getCellStyle(a)).containerType);return b}function l(a){var b=!1;null!=a&&(a=z.getParent(a),b=q.view.getState(a),q.view.getState(a),b=null!=(null!=b?b.style:q.getCellStyle(a)).childLayout);return b}function n(a){a=q.view.getState(a);if(null!=a){var b=q.getIncomingEdges(a.cell);if(0<b.length&&(b=q.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y== -a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function u(a,b){b=null!=b?b:!0;q.model.beginUpdate();try{var c=q.model.getParent(a),d=q.getIncomingEdges(a),e=q.cloneCells([d[0],a]);q.model.setTerminal(e[0],q.model.getTerminal(d[0],!0),!0);var f=n(a),g=c.geometry;f==mxConstants.DIRECTION_SOUTH|| +a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function t(a,b){b=null!=b?b:!0;q.model.beginUpdate();try{var c=q.model.getParent(a),d=q.getIncomingEdges(a),e=q.cloneCells([d[0],a]);q.model.setTerminal(e[0],q.model.getTerminal(d[0],!0),!0);var f=n(a),g=c.geometry;f==mxConstants.DIRECTION_SOUTH|| f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width-10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;q.view.currentRoot!=c&&(e[1].geometry.x-=g.x,e[1].geometry.y-=g.y);var k=q.view.getState(a),l=q.view.scale;if(null!=k){var m=mxRectangle.fromRectangle(k);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?m.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*l:m.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*l;var p=q.getOutgoingEdges(q.model.getTerminal(d[0], -!0));if(null!=p){for(var t=f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH,u=g=d=0;u<p.length;u++){var x=q.model.getTerminal(p[u],!1);if(f==n(x)){var v=q.view.getState(x);x!=a&&null!=v&&(t&&b!=v.getCenterX()<k.getCenterX()||!t&&b!=v.getCenterY()<k.getCenterY())&&mxUtils.intersects(m,v)&&(d=10+Math.max(d,(Math.min(m.x+m.width,v.x+v.width)-Math.max(m.x,v.x))/l),g=10+Math.max(g,(Math.min(m.y+m.height,v.y+v.height)-Math.max(m.y,v.y))/l))}}t?g=0:d=0;for(u=0;u<p.length;u++)if(x=q.model.getTerminal(p[u], -!1),f==n(x)&&(v=q.view.getState(x),x!=a&&null!=v&&(t&&b!=v.getCenterX()<k.getCenterX()||!t&&b!=v.getCenterY()<k.getCenterY()))){var y=[];q.traverse(v.cell,!0,function(a,b){null!=b&&y.push(b);y.push(a);return!0});q.moveCells(y,(b?1:-1)*d,(b?1:-1)*g)}}}return q.addCells(e,c)}finally{q.model.endUpdate()}}function f(a){q.model.beginUpdate();try{var b=n(a),c=q.getIncomingEdges(a),d=q.cloneCells([c[0],a]);q.model.setTerminal(c[0],d[1],!1);q.model.setTerminal(d[0],d[1],!0);q.model.setTerminal(d[0],a,!1); +!0));if(null!=p){for(var t=f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH,u=g=d=0;u<p.length;u++){var y=q.model.getTerminal(p[u],!1);if(f==n(y)){var v=q.view.getState(y);y!=a&&null!=v&&(t&&b!=v.getCenterX()<k.getCenterX()||!t&&b!=v.getCenterY()<k.getCenterY())&&mxUtils.intersects(m,v)&&(d=10+Math.max(d,(Math.min(m.x+m.width,v.x+v.width)-Math.max(m.x,v.x))/l),g=10+Math.max(g,(Math.min(m.y+m.height,v.y+v.height)-Math.max(m.y,v.y))/l))}}t?g=0:d=0;for(u=0;u<p.length;u++)if(y=q.model.getTerminal(p[u], +!1),f==n(y)&&(v=q.view.getState(y),y!=a&&null!=v&&(t&&b!=v.getCenterX()<k.getCenterX()||!t&&b!=v.getCenterY()<k.getCenterY()))){var x=[];q.traverse(v.cell,!0,function(a,b){null!=b&&x.push(b);x.push(a);return!0});q.moveCells(x,(b?1:-1)*d,(b?1:-1)*g)}}}return q.addCells(e,c)}finally{q.model.endUpdate()}}function f(a){q.model.beginUpdate();try{var b=n(a),c=q.getIncomingEdges(a),d=q.cloneCells([c[0],a]);q.model.setTerminal(c[0],d[1],!1);q.model.setTerminal(d[0],d[1],!0);q.model.setTerminal(d[0],a,!1); var e=q.model.getParent(a),f=e.geometry,g=[];q.view.currentRoot!=e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);q.traverse(a,!0,function(a,b){null!=b&&g.push(b);g.push(a);return!0});var k=a.geometry.width+40,l=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?k=0:b==mxConstants.DIRECTION_NORTH?(k=0,l=-l):b==mxConstants.DIRECTION_WEST?(k=-k,l=0):b==mxConstants.DIRECTION_EAST&&(l=0);q.moveCells(g,k,l);return q.addCells(d,e)}finally{q.model.endUpdate()}}function m(a){q.model.beginUpdate();try{var b= q.model.getParent(a),c=q.getIncomingEdges(a),d=q.cloneCells([c[0],a]);q.model.setTerminal(d[0],a,!0);var c=q.getOutgoingEdges(a),e=b.geometry,f=[];q.view.currentRoot==b&&(e=new mxRectangle);for(var g=0;g<c.length;g++){var k=q.model.getTerminal(c[g],!1);null!=k&&f.push(k)}var l=q.view.getBounds(f),m=n(a),p=q.view.translate,t=q.view.scale;m==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/t-p.x-e.x+10,d[1].geometry.y+=d[1].geometry.height- e.y+40):m==mxConstants.DIRECTION_NORTH?(d[1].geometry.x=null==l?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(l.x+l.width)/t-p.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height+e.y+40):(d[1].geometry.x=m==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width+e.x+40):d[1].geometry.x+(d[1].geometry.width-e.x+40),d[1].geometry.y=null==l?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(l.y+l.height)/t-p.y+-e.y+10);return q.addCells(d,b)}finally{q.model.endUpdate()}}function p(a, -b,c){a=q.getOutgoingEdges(a);c=q.view.getState(c);var d=[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=q.view.getState(q.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function t(a,b){var c=n(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST|| -c==mxConstants.DIRECTION_WEST)==d&&c!=b?v.actions.get("selectParent").funct():c==b?(d=q.getOutgoingEdges(a),null!=d&&0<d.length&&q.setSelectionCell(q.model.getTerminal(d[0],!1))):(c=q.getIncomingEdges(a),null!=c&&0<c.length&&(d=p(q.model.getTerminal(c[0],!0),d,a),c=q.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&q.setSelectionCell(d[c].cell)))))}var v=this,q=v.editor.graph,z=q.getModel(),y=v.menus.createPopupMenu; -v.menus.createPopupMenu=function(a,c,d){y.apply(this,arguments);if(1==q.getSelectionCount()){c=q.getSelectionCell();var e=q.getOutgoingEdges(c);a.addSeparator();null!=e&&0<e.length&&(b(q.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(q.getSelectionCell())&&(a.addSeparator(),0<q.getIncomingEdges(c).length&&this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};v.actions.addAction("selectChildren",function(){if(q.isEnabled()&& +b,c){a=q.getOutgoingEdges(a);c=q.view.getState(c);var d=[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=q.view.getState(q.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function u(a,b){var c=n(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST|| +c==mxConstants.DIRECTION_WEST)==d&&c!=b?v.actions.get("selectParent").funct():c==b?(d=q.getOutgoingEdges(a),null!=d&&0<d.length&&q.setSelectionCell(q.model.getTerminal(d[0],!1))):(c=q.getIncomingEdges(a),null!=c&&0<c.length&&(d=p(q.model.getTerminal(c[0],!0),d,a),c=q.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&q.setSelectionCell(d[c].cell)))))}var v=this,q=v.editor.graph,z=q.getModel(),x=v.menus.createPopupMenu; +v.menus.createPopupMenu=function(a,c,d){x.apply(this,arguments);if(1==q.getSelectionCount()){c=q.getSelectionCell();var e=q.getOutgoingEdges(c);a.addSeparator();null!=e&&0<e.length&&(b(q.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(q.getSelectionCell())&&(a.addSeparator(),0<q.getIncomingEdges(c).length&&this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};v.actions.addAction("selectChildren",function(){if(q.isEnabled()&& 1==q.getSelectionCount()){var a=q.getSelectionCell(),a=q.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(q.model.getTerminal(a[c],!1));q.setSelectionCells(b)}}},null,null,"Alt+Shift+X");v.actions.addAction("selectSiblings",function(){if(q.isEnabled()&&1==q.getSelectionCount()){var a=q.getSelectionCell(),a=q.getIncomingEdges(a);if(null!=a&&0<a.length&&(a=q.getOutgoingEdges(q.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(q.model.getTerminal(a[c], !1));q.setSelectionCells(b)}}},null,null,"Alt+Shift+S");v.actions.addAction("selectParent",function(){if(q.isEnabled()&&1==q.getSelectionCount()){var a=q.getSelectionCell(),a=q.getIncomingEdges(a);null!=a&&0<a.length&&q.setSelectionCell(q.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");v.actions.addAction("selectDescendants",function(){if(q.isEnabled()&&1==q.getSelectionCount()){var a=q.getSelectionCell(),b=[];q.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});q.setSelectionCells(b)}}, -null,null,"Alt+Shift+D");var D=q.removeCells;q.removeCells=function(a,c){c=null!=c?c:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));c&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var e=[],f=0;f<a.length;f++){var g=a[f];z.isEdge(g)&&d(g)&&(e.push(g),g=z.getTerminal(g,!1));b(g)?(q.traverse(g,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),g=q.getIncomingEdges(a[f]),a=a.concat(g)):e.push(a[f])}a=e;return D.apply(this,arguments)};v.hoverIcons.getStateAt=function(a,c, +null,null,"Alt+Shift+D");var C=q.removeCells;q.removeCells=function(a,c){c=null!=c?c:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));c&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var e=[],f=0;f<a.length;f++){var g=a[f];z.isEdge(g)&&d(g)&&(e.push(g),g=z.getTerminal(g,!1));b(g)?(q.traverse(g,!0,function(a,b){null!=b&&e.push(b);e.push(a);return!0}),g=q.getIncomingEdges(a[f]),a=a.concat(g)):e.push(a[f])}a=e;return C.apply(this,arguments)};v.hoverIcons.getStateAt=function(a,c, d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var H=q.duplicateCells;q.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),e=0;e<d.length;e++){var f=q.view.getState(d[e]);if(null!=f&&b(f.cell))for(var g=q.getIncomingEdges(f.cell),f=0;f<g.length;f++)mxUtils.remove(g[f],a)}this.model.beginUpdate();try{var k=H.call(this,a,c);if(k.length==a.length)for(e=0;e<a.length;e++)if(b(a[e])){var l=q.getIncomingEdges(k[e]),g=q.getIncomingEdges(a[e]); -if(0==l.length&&0<g.length){var m=this.cloneCell(g[0]);this.addEdge(m,q.getDefaultParent(),this.model.getTerminal(g[0],!0),k[e])}}}finally{this.model.endUpdate()}return k};var x=q.moveCells;q.moveCells=function(a,c,d,e,f,g,k){var l=null;this.model.beginUpdate();try{var m=f,n=this.view.getState(f),p=null!=n?n.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var t=0;t<a.length;t++)if(b(a[t])||q.model.isEdge(a[t])&&null==q.model.getTerminal(a[t],!0)){f=q.model.getParent(a[t]); -break}if(null!=m&&f!=m&&null!=this.view.getState(a[0])){var u=q.getIncomingEdges(a[0]);if(0<u.length){var v=q.view.getState(q.model.getTerminal(u[0],!0));if(null!=v){var y=q.view.getState(m);null!=y&&(c=(y.getCenterX()-v.getCenterX())/q.view.scale,d=(y.getCenterY()-v.getCenterY())/q.view.scale)}}}}l=x.apply(this,arguments);if(null!=l&&null!=a&&l.length==a.length)for(t=0;t<l.length;t++)if(this.model.isEdge(l[t]))b(m)&&0>mxUtils.indexOf(l,this.model.getTerminal(l[t],!0))&&this.model.setTerminal(l[t], -m,!0);else if(b(a[t])&&(u=q.getIncomingEdges(a[t]),0<u.length))if(!e)b(m)&&0>mxUtils.indexOf(a,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],m,!0);else if(0==q.getIncomingEdges(l[t]).length){n=m;if(null==n||n==q.model.getParent(a[t]))n=q.model.getTerminal(u[0],!0);e=this.cloneCell(u[0]);this.addEdge(e,q.getDefaultParent(),n,l[t])}}finally{this.model.endUpdate()}return l};if(null!=v.sidebar){var A=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=function(a,c,d,e){var f=q.model,g=null; -f.beginUpdate();try{if(g=A.apply(this,arguments),b(a))for(var k=0;k<g.length;k++)if(f.isEdge(g[k])&&null==f.getTerminal(g[k],!0)){f.setTerminal(g[k],a,!0);var l=q.getCellGeometry(g[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var C={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},B=v.onKeyDown;v.onKeyDown=function(a){try{if(q.isEnabled()&&!q.isEditing()&& -b(q.getSelectionCell())&&1==q.getSelectionCount()){var c=null;0<q.getIncomingEdges(q.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?f(q.getSelectionCell()):m(q.getSelectionCell()):13==a.which&&(c=u(q.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&q.model.isEdge(c[0])?q.setSelectionCell(q.model.getTerminal(c[0],!1)):q.setSelectionCell(c[c.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(q.view.getState(q.getSelectionCell())),q.startEditingAtCell(q.getSelectionCell()), -mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var d=C[a.keyCode];null!=d&&(d.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(t(q.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(t(q.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(t(q.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(t(q.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(a))}}catch(X){console.log("error", -X)}mxEvent.isConsumed(a)||B.apply(this,arguments)};var I=q.connectVertex;q.connectVertex=function(a,c,d,e,g,k){var l=q.getIncomingEdges(a);return b(a)&&0<l.length?(d=n(a),e=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,g=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,d==c?m(a):e==g?f(a):u(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):I.call(this,a,c,d,e,g,k)};q.getSubtree=function(a){var d=[a];!c(a)&&!b(a)||l(a)||q.traverse(a,!0,function(a,b){null!= -b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);return!0});return d};var F=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){F.apply(this,arguments);(c(this.state.cell)||b(this.state.cell))&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="18px", -this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;v.hoverIcons.reset();mxEvent.consume(a)})))};var G=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles= -function(){G.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var J=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(a){J.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=a?"":"none")};var E=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy= +if(0==l.length&&0<g.length){var m=this.cloneCell(g[0]);this.addEdge(m,q.getDefaultParent(),this.model.getTerminal(g[0],!0),k[e])}}}finally{this.model.endUpdate()}return k};var y=q.moveCells;q.moveCells=function(a,c,d,e,f,g,k){var l=null;this.model.beginUpdate();try{var m=f,n=this.view.getState(f),p=null!=n?n.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(p,"treeFolding","0")){for(var t=0;t<a.length;t++)if(b(a[t])||q.model.isEdge(a[t])&&null==q.model.getTerminal(a[t],!0)){f=q.model.getParent(a[t]); +break}if(null!=m&&f!=m&&null!=this.view.getState(a[0])){var u=q.getIncomingEdges(a[0]);if(0<u.length){var v=q.view.getState(q.model.getTerminal(u[0],!0));if(null!=v){var x=q.view.getState(m);null!=x&&(c=(x.getCenterX()-v.getCenterX())/q.view.scale,d=(x.getCenterY()-v.getCenterY())/q.view.scale)}}}}l=y.apply(this,arguments);if(null!=l&&null!=a&&l.length==a.length)for(t=0;t<l.length;t++)if(this.model.isEdge(l[t]))b(m)&&0>mxUtils.indexOf(l,this.model.getTerminal(l[t],!0))&&this.model.setTerminal(l[t], +m,!0);else if(b(a[t])&&(u=q.getIncomingEdges(a[t]),0<u.length))if(!e)b(m)&&0>mxUtils.indexOf(a,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],m,!0);else if(0==q.getIncomingEdges(l[t]).length){n=m;if(null==n||n==q.model.getParent(a[t]))n=q.model.getTerminal(u[0],!0);e=this.cloneCell(u[0]);this.addEdge(e,q.getDefaultParent(),n,l[t])}}finally{this.model.endUpdate()}return l};if(null!=v.sidebar){var B=v.sidebar.dropAndConnect;v.sidebar.dropAndConnect=function(a,c,d,e){var f=q.model,g=null; +f.beginUpdate();try{if(g=B.apply(this,arguments),b(a))for(var k=0;k<g.length;k++)if(f.isEdge(g[k])&&null==f.getTerminal(g[k],!0)){f.setTerminal(g[k],a,!0);var l=q.getCellGeometry(g[k]);l.points=null;null!=l.getTerminalPoint(!0)&&l.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return g}}var D={88:v.actions.get("selectChildren"),84:v.actions.get("selectSubtree"),80:v.actions.get("selectParent"),83:v.actions.get("selectSiblings")},A=v.onKeyDown;v.onKeyDown=function(a){try{if(q.isEnabled()&&!q.isEditing()&& +b(q.getSelectionCell())&&1==q.getSelectionCount()){var c=null;0<q.getIncomingEdges(q.getSelectionCell()).length&&(9==a.which?c=mxEvent.isShiftDown(a)?f(q.getSelectionCell()):m(q.getSelectionCell()):13==a.which&&(c=t(q.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=c&&0<c.length)1==c.length&&q.model.isEdge(c[0])?q.setSelectionCell(q.model.getTerminal(c[0],!1)):q.setSelectionCell(c[c.length-1]),null!=v.hoverIcons&&v.hoverIcons.update(q.view.getState(q.getSelectionCell())),q.startEditingAtCell(q.getSelectionCell()), +mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var d=D[a.keyCode];null!=d&&(d.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(u(q.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(u(q.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(u(q.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(u(q.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(a))}}catch(X){console.log("error", +X)}mxEvent.isConsumed(a)||A.apply(this,arguments)};var F=q.connectVertex;q.connectVertex=function(a,c,d,e,g,k){var l=q.getIncomingEdges(a);return b(a)&&0<l.length?(d=n(a),e=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,g=c==mxConstants.DIRECTION_EAST||c==mxConstants.DIRECTION_WEST,d==c?m(a):e==g?f(a):t(a,c!=mxConstants.DIRECTION_NORTH&&c!=mxConstants.DIRECTION_WEST)):F.call(this,a,c,d,e,g,k)};q.getSubtree=function(a){var d=[a];!c(a)&&!b(a)||l(a)||q.traverse(a,!0,function(a,b){null!= +b&&0>mxUtils.indexOf(d,b)&&d.push(b);0>mxUtils.indexOf(d,a)&&d.push(a);return!0});return d};var G=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){G.apply(this,arguments);(c(this.state.cell)||b(this.state.cell))&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="18px", +this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;v.hoverIcons.reset();mxEvent.consume(a)})))};var I=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles= +function(){I.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var J=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(a){J.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=a?"":"none")};var E=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy= function(a,b){E.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var b=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=b.apply(this,arguments),c=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex= !0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");b.vertex=!0;var c=new mxCell("Topic", new mxGeometry(320,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;");c.vertex=!0;var d=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");d.geometry.relative=!0;d.edge=!0;b.insertEdge(d,!0);c.insertEdge(d,!1);var e=new mxCell("Branch",new mxGeometry(320,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;"); -e.vertex=!0;var g=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");g.geometry.relative=!0;g.edge=!0;b.insertEdge(g,!0);e.insertEdge(g,!1);var p=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;");p.vertex=!0;var t=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); -t.geometry.relative=!0;t.edge=!0;b.insertEdge(t,!0);p.insertEdge(t,!1);var v=new mxCell("Branch",new mxGeometry(20,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;");v.vertex=!0;var q=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); -q.geometry.relative=!0;q.edge=!0;b.insertEdge(q,!0);v.insertEdge(q,!1);a.insert(d);a.insert(g);a.insert(t);a.insert(q);a.insert(b);a.insert(c);a.insert(e);a.insert(p);a.insert(v);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");a.vertex= +e.vertex=!0;var g=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");g.geometry.relative=!0;g.edge=!0;b.insertEdge(g,!0);e.insertEdge(g,!1);var p=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;");p.vertex=!0;var u=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); +u.geometry.relative=!0;u.edge=!0;b.insertEdge(u,!0);p.insertEdge(u,!1);var v=new mxCell("Branch",new mxGeometry(20,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;");v.vertex=!0;var q=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); +q.geometry.relative=!0;q.edge=!0;b.insertEdge(q,!0);v.insertEdge(q,!1);a.insert(d);a.insert(g);a.insert(u);a.insert(q);a.insert(b);a.insert(c);a.insert(e);a.insert(p);a.insert(v);return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea",function(){var a=new mxCell("Central Idea",new mxGeometry(0,0,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");a.vertex= !0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps branch",function(){var a=new mxCell("Branch",new mxGeometry(0,0,80,20),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;");a.vertex=!0;var b=new mxCell("", new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps sub topic",function(){var a=new mxCell("Sub Topic",new mxGeometry(0,0,72,26),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;"); a.vertex=!0;var b=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");b.geometry.setTerminalPoint(new mxPoint(-40,40),!0);b.geometry.relative=!0;b.edge=!0;a.insertEdge(b,!1);return sb.createVertexTemplateFromCells([a,b],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree orgchart organization division",function(){var a=new mxCell("Orgchart",new mxGeometry(0,0,280,220),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;"); @@ -9935,7 +9939,7 @@ mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 "#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50;HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!mxClient.IS_IOS&&!mxClient.IS_ANDROID;Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var g=EditorUi.prototype.updateTabContainer; EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom=this.tabContainerHeight+"px");g.apply(this,arguments)};var k=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){k.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var l=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(a,b){null!=b.shortcut&&900> d&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title",b.shortcut):l.apply(this,arguments)};var n=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){n.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+a.style.display;a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat= -"no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"));"none"!=a.style.display&&(a.style.display="inline-block")}};var u=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){u.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;"; +"no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"));"none"!=a.style.display&&(a.style.display="inline-block")}};var t=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){t.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;"; a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px"}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a=document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="8px";a.style.marginRight="4px";var b=document.createElement("a"); b.className="geMenuItem gePrimaryBtn";b.style.marginLeft="8px";b.style.padding="6px";"1"==urlParams.noSaveBtn?(mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)):(mxUtils.write(b,mxResources.get("save")),b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})), a.appendChild(b),"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),b.className="geMenuItem",b.style.marginLeft="6px",b.style.padding="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className= @@ -9944,7 +9948,7 @@ a.appendChild(b),"1"==urlParams.saveAndExit&&(b=document.createElement("a"),mxUt "lockUnlock","enterGroup"],null,c),a.addSeparator(),this.addSubmenu("layout",a)):d.isSelectionEmpty()&&d.isEnabled()?(a.addSeparator(),this.addMenuItems(a,["editData"],null,c),a.addSeparator(),this.addSubmenu("layout",a),this.addSubmenu("view",a,null,mxResources.get("options")),a.addSeparator(),this.addSubmenu("insert",a),this.addMenuItems(a,["-","exitGroup"],null,c)):d.isEnabled()&&this.addMenuItems(a,["-","lockUnlock"],null,c)};EditorUi.prototype.toggleFormatPanel=function(b){null!=this.formatWindow? this.formatWindow.window.setVisible(b?!1:!this.formatWindow.window.isVisible()):a(this)};DiagramFormatPanel.prototype.isMathOptionVisible=function(){return!0};var m=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.sidebarWindow&&(this.sidebarWindow.window.setVisible(!1),this.sidebarWindow.window.destroy(),this.sidebarWindow=null);null!=this.formatWindow&&(this.formatWindow.window.setVisible(!1),this.formatWindow.window.destroy(),this.formatWindow=null);null!=this.actions.outlineWindow&& (this.actions.outlineWindow.window.setVisible(!1),this.actions.outlineWindow.window.destroy(),this.actions.outlineWindow=null);null!=this.actions.layersWindow&&(this.actions.layersWindow.window.setVisible(!1),this.actions.layersWindow.window.destroy(),this.actions.layersWindow=null);null!=this.menus.tagsWindow&&(this.menus.tagsWindow.window.setVisible(!1),this.menus.tagsWindow.window.destroy(),this.menus.tagsWindow=null);null!=this.menus.findWindow&&(this.menus.findWindow.window.setVisible(!1),this.menus.findWindow.window.destroy(), -this.menus.findWindow=null);m.apply(this,arguments)};var p=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){p.apply(this,arguments);a||(null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var t=Menus.prototype.init;Menus.prototype.init=function(){t.apply(this,arguments);var b=this.editorUi,d=b.editor.graph;b.actions.get("editDiagram").label= +this.menus.findWindow=null);m.apply(this,arguments)};var p=EditorUi.prototype.setGraphEnabled;EditorUi.prototype.setGraphEnabled=function(a){p.apply(this,arguments);a||(null!=this.sidebarWindow&&this.sidebarWindow.window.setVisible(!1),null!=this.formatWindow&&this.formatWindow.window.setVisible(!1))};EditorUi.prototype.chromelessWindowResize=function(){};var u=Menus.prototype.init;Menus.prototype.init=function(){u.apply(this,arguments);var b=this.editorUi,d=b.editor.graph;b.actions.get("editDiagram").label= mxResources.get("formatXml")+"...";b.actions.get("createShape").label=mxResources.get("shape")+"...";b.actions.get("outline").label=mxResources.get("outline")+"...";b.actions.get("layers").label=mxResources.get("layers")+"...";b.actions.put("importCsv",new Action(mxResources.get("csv")+"...",function(){d.popupMenuHandler.hideMenu();b.showImportCsvDialog()}));b.actions.put("importText",new Action(mxResources.get("text")+"...",function(){var a=new ParseDialog(b,"Insert from Text");b.showDialog(a.container, 620,420,!0,!1);a.init()}));b.actions.put("formatSql",new Action(mxResources.get("formatSql")+"...",function(){var a=new ParseDialog(b,"Insert from Text","formatSql");b.showDialog(a.container,620,420,!0,!1);a.init()}));b.actions.put("toggleShapes",new Action(mxResources.get("shapes")+"...",function(){c(b)}));b.actions.put("toggleFormat",new Action(mxResources.get("format")+"...",function(){a(b)}));EditorUi.enablePlantUml&&!b.isOffline()&&b.actions.put("plantUml",new Action(mxResources.get("plantUml")+ "...",function(){var a=new ParseDialog(b,"Insert from Text","plantUml");b.showDialog(a.container,620,420,!0,!1);a.init()}));this.put("diagram",new Menu(mxUtils.bind(this,function(a,c){var d=b.getCurrentFile();b.menus.addSubmenu("extras",a,c,mxResources.get("preferences"));a.addSeparator(c);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp?(b.menus.addMenuItems(a,["new","open","-"],c),EditorUi.isElectronApp&&b.menus.addMenuItems(a,["synchronize","-"],c),b.menus.addMenuItems(a,["save","saveAs","-"],c)): @@ -9978,25 +9982,25 @@ if(null!=J){this.tabContainer.style.right="70px";var E=p.addMenu("100%",J.funct) E.style.right="0px";E.style.bottom="0px";E.style.overflow="hidden";E.style.visibility="hidden";E.style.textAlign="center";E.style.color="#000";E.style.fontSize="12px";E.style.color="#707070";E.style.width="59px";E.style.cursor="pointer";E.style.borderTop="1px solid lightgray";E.style.borderLeft="1px solid lightgray";E.style.height=parseInt(k.tabContainerHeight)-1+"px";E.style.lineHeight=parseInt(k.tabContainerHeight)+1+"px";u.appendChild(E);J=mxUtils.bind(this,function(){E.innerHTML=Math.round(100* k.editor.graph.view.scale)+"%"});k.editor.graph.view.addListener(mxEvent.EVENT_SCALE,J);k.editor.addListener("resetGraphView",J);k.editor.addListener("pageSelected",J);var K=k.setGraphEnabled;k.setGraphEnabled=function(){K.apply(this,arguments);null!=this.tabContainer&&(E.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}u.appendChild(k.tabContainer);u.appendChild(m);u.appendChild(k.diagramContainer); g.appendChild(u);k.updateTabContainer();var O=null;f();mxEvent.addListener(window,"resize",function(){f();null!=k.sidebarWindow&&k.sidebarWindow.window.fit();null!=k.formatWindow&&k.formatWindow.window.fit();null!=k.actions.outlineWindow&&k.actions.outlineWindow.window.fit();null!=k.actions.layersWindow&&k.actions.layersWindow.window.fit();null!=k.menus.tagsWindow&&k.menus.tagsWindow.window.fit();null!=k.menus.findWindow&&k.menus.findWindow.window.fit()})}}}; -(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();(function(){var a=mxGuide.prototype.move;mxGuide.prototype.move=function(b,c,d,k){var e=c.y,g=c.x,u=!1,f=!1;if(null!=this.states&&null!=b&&null!=c){var m=this,p=new mxCellState,t=this.graph.getView().scale,v=Math.max(2,this.getGuideTolerance()/2);p.x=b.x+g;p.y=b.y+e;p.width=b.width;p.height=b.height;for(var q=[],z=[],y=0;y<this.states.length;y++){var D=this.states[y];D instanceof mxCellState&&(k||!this.graph.isCellSelected(D.cell))&&((p.x>=D.x&&p.x<=D.x+D.width||D.x>=p.x&&D.x<=p.x+p.width)&&(p.y> -D.y+D.height+4||p.y+p.height+4<D.y)?q.push(D):(p.y>=D.y&&p.y<=D.y+D.height||D.y>=p.y&&D.y<=p.y+p.height)&&(p.x>D.x+D.width+4||p.x+p.width+4<D.x)&&z.push(D))}var H=0,x=0,A=D=0,C=0,B=0,I=0,F=0,G=5*t;if(1<q.length){q.push(p);q.sort(function(a,b){return a.y-b.y});var J=!1,y=p==q[0],t=p==q[q.length-1];if(!y&&!t)for(y=1;y<q.length-1;y++)if(p==q[y]){t=q[y-1];y=q[y+1];D=x=A=(y.y-t.y-t.height-p.height)/2;break}for(y=0;y<q.length-1;y++){var t=q[y],E=q[y+1],K=p==t||p==E,E=E.y-t.y-t.height,J=J|p==t;if(0==x&& -0==H)x=E,H=1;else if(Math.abs(x-E)<=(K||1==y&&J?v:0))H+=1;else if(1<H&&J){q=q.slice(0,y+1);break}else if(3<=q.length-y&&!J)H=0,D=x=0!=A?A:0,q.splice(0,0==y?1:y),y=-1;else break;0!=D||K||(x=D=E)}3==q.length&&q[1]==p&&(D=0)}if(1<z.length){z.push(p);z.sort(function(a,b){return a.x-b.x});J=!1;y=p==z[0];t=p==z[z.length-1];if(!y&&!t)for(y=1;y<z.length-1;y++)if(p==z[y]){t=z[y-1];y=z[y+1];I=B=F=(y.x-t.x-t.width-p.width)/2;break}for(y=0;y<z.length-1;y++){t=z[y];E=z[y+1];K=p==t||p==E;E=E.x-t.x-t.width;J|=p== -t;if(0==B&&0==C)B=E,C=1;else if(Math.abs(B-E)<=(K||1==y&&J?v:0))C+=1;else if(1<C&&J){z=z.slice(0,y+1);break}else if(3<=z.length-y&&!J)C=0,I=B=0!=F?F:0,z.splice(0,0==y?1:y),y=-1;else break;0!=I||K||(B=I=E)}3==z.length&&z[1]==p&&(I=0)}v=function(a,b,c,d){var e=[],f;d?(d=G,f=0):(d=0,f=G);e.push(new mxPoint(a.x-d,a.y-f));e.push(new mxPoint(a.x+d,a.y+f));e.push(a);e.push(b);e.push(new mxPoint(b.x-d,b.y-f));e.push(new mxPoint(b.x+d,b.y+f));if(null!=c)return c.points=e,c;a=new mxPolyline(e,mxConstants.GUIDE_COLOR, -mxConstants.GUIDE_STROKEWIDTH);a.dialect=mxConstants.DIALECT_SVG;a.pointerEvents=!1;a.init(m.graph.getView().getOverlayPane());return a};B=function(a,b){if(a&&null!=m.guidesArrHor)for(var c=0;c<m.guidesArrHor.length;c++)m.guidesArrHor[c].node.style.visibility="hidden";if(b&&null!=m.guidesArrVer)for(c=0;c<m.guidesArrVer.length;c++)m.guidesArrVer[c].node.style.visibility="hidden"};if(1<C&&C==z.length-1){C=[];F=m.guidesArrHor;u=[];g=0;y=z[0]==p?1:0;J=z[y].y+z[y].height;if(0<I)for(y=0;y<z.length-1;y++)t= -z[y],E=z[y+1],p==t?(g=E.x-t.width-I,u.push(new mxPoint(g+t.width+G,J)),u.push(new mxPoint(E.x-G,J))):p==E?(u.push(new mxPoint(t.x+t.width+G,J)),g=t.x+t.width+I,u.push(new mxPoint(g-G,J))):(u.push(new mxPoint(t.x+t.width+G,J)),u.push(new mxPoint(E.x-G,J)));else t=z[0],y=z[2],g=t.x+t.width+(y.x-t.x-t.width-p.width)/2,u.push(new mxPoint(t.x+t.width+G,J)),u.push(new mxPoint(g-G,J)),u.push(new mxPoint(g+p.width+G,J)),u.push(new mxPoint(y.x-G,J));for(y=0;y<u.length;y+=2)z=u[y],I=u[y+1],z=v(z,I,null!=F? -F[y/2]:null),z.node.style.visibility="visible",z.redraw(),C.push(z);for(y=u.length/2;null!=F&&y<F.length;y++)F[y].destroy();m.guidesArrHor=C;g-=b.x;u=!0}else B(!0);if(1<H&&H==q.length-1){C=[];F=m.guidesArrVer;f=[];e=0;y=q[0]==p?1:0;H=q[y].x+q[y].width;if(0<D)for(y=0;y<q.length-1;y++)t=q[y],E=q[y+1],p==t?(e=E.y-t.height-D,f.push(new mxPoint(H,e+t.height+G)),f.push(new mxPoint(H,E.y-G))):p==E?(f.push(new mxPoint(H,t.y+t.height+G)),e=t.y+t.height+D,f.push(new mxPoint(H,e-G))):(f.push(new mxPoint(H,t.y+ -t.height+G)),f.push(new mxPoint(H,E.y-G)));else t=q[0],y=q[2],e=t.y+t.height+(y.y-t.y-t.height-p.height)/2,f.push(new mxPoint(H,t.y+t.height+G)),f.push(new mxPoint(H,e-G)),f.push(new mxPoint(H,e+p.height+G)),f.push(new mxPoint(H,y.y-G));for(y=0;y<f.length;y+=2)z=f[y],I=f[y+1],z=v(z,I,null!=F?F[y/2]:null,!0),z.node.style.visibility="visible",z.redraw(),C.push(z);for(y=f.length/2;null!=F&&y<F.length;y++)F[y].destroy();m.guidesArrVer=C;e-=b.y;f=!0}else B(!1,!0)}if(u||f)return p=new mxPoint(g,e),q=a.call(this, -b,p,d,k),u&&!f?p.y=q.y:f&&!u&&(p.x=q.x),q.y!=p.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),q.x!=p.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),p;B(!0,!0);return a.apply(this,arguments)};var c=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(a){c.call(this,a);var b=this.guidesArrVer,d=this.guidesArrHor;if(null!=b)for(var k=0;k<b.length;k++)b[k].node.style.visibility=a?"visible":"hidden";if(null!= -d)for(k=0;k<d.length;k++)d[k].node.style.visibility=a?"visible":"hidden"};var d=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){d.call(this);var a=this.guidesArrVer,c=this.guidesArrHor;if(null!=a){for(var g=0;g<a.length;g++)a[g].destroy();this.guidesArrVer=null}if(null!=c){for(g=0;g<c.length;g++)c[g].destroy();this.guidesArrHor=null}}})();function mxRuler(a,c,d,b){function e(){var b=a.diagramContainer;u.style.top=b.offsetTop-k+"px";u.style.left=b.offsetLeft-k+"px";u.style.width=(d?0:b.offsetWidth)+k+"px";u.style.height=(d?b.offsetHeight:0)+k+"px"}function g(a,b,c){var d;return function(){var e=this,f=arguments,g=c&&!d;clearTimeout(d);d=setTimeout(function(){d=null;c||a.apply(e,f)},b);g&&a.apply(e,f)}}var k=this.RULER_THICKNESS,l=this;this.unit=c;var n="dark"!=window.uiTheme?{bkgClr:"#ffffff",outBkgClr:"#e8e9ed",cornerClr:"#fbfbfb", -strokeClr:"#dadce0",fontClr:"#BBBBBB",guideClr:"#0000BB"}:{bkgClr:"#202020",outBkgClr:"#2a2a2a",cornerClr:"#2a2a2a",strokeClr:"#505759",fontClr:"#BBBBBB",guideClr:"#0088cf"},u=document.createElement("div");u.style.position="absolute";u.style.background=n.bkgClr;u.style[d?"borderRight":"borderBottom"]="0.5px solid "+n.strokeClr;u.style.borderLeft="0.5px solid "+n.strokeClr;document.body.appendChild(u);mxEvent.disableContextMenu(u);this.editorUiRefresh=a.refresh;a.refresh=function(b){l.editorUiRefresh.apply(a, -arguments);e()};e();var f=document.createElement("canvas");f.width=u.offsetWidth;f.height=u.offsetHeight;u.style.overflow="hidden";f.style.position="relative";u.appendChild(f);var m=f.getContext("2d");this.ui=a;var p=a.editor.graph;this.graph=p;this.container=u;this.canvas=f;var t=function(a,b,c,e,f){a=Math.round(a);b=Math.round(b);c=Math.round(c);e=Math.round(e);m.beginPath();m.moveTo(a+.5,b+.5);m.lineTo(c+.5,e+.5);m.stroke();f&&(d?(m.save(),m.translate(a,b),m.rotate(-Math.PI/2),m.fillText(f,0,0), -m.restore()):m.fillText(f,a,b))},v=function(){m.clearRect(0,0,f.width,f.height);m.beginPath();m.lineWidth=.7;m.strokeStyle=n.strokeClr;m.setLineDash([]);m.font="9px Arial";m.textAlign="center";var a=p.view.scale,b=p.view.getBackgroundPageBounds(),c=p.view.translate,e=p.view.getGraphBounds(),g=p.pageVisible,u=g?k+(d?b.y-p.container.scrollTop:b.x-p.container.scrollLeft):k+(d?c.y-p.container.scrollTop:c.x-p.container.scrollLeft),v=0;g&&(v=d?Math.floor(((e.y+1)/a-c.y)/p.pageFormat.height)*p.pageFormat.height* -a:Math.floor(((e.x+1)/a-c.x)/p.pageFormat.width)*p.pageFormat.width*a);var C,B,I;switch(l.unit){case mxConstants.POINTS:C=I=10;B=[3,5,5,5,5,10,5,5,5,5];break;case mxConstants.MILLIMETERS:I=10;C=mxConstants.PIXELS_PER_MM;B=[5,3,3,3,3,6,3,3,3,3];break;case mxConstants.INCHES:I=.5>=a||4<=a?8:16,C=mxConstants.PIXELS_PER_INCH/I,B=[5,3,5,3,7,3,5,3,7,3,5,3,7,3,5,3]}c=C;2<=a?c=C/(2*Math.floor(a/2)):.5>=a&&(c=C*Math.floor(1/a/2)*(l.unit==mxConstants.MILLIMETERS?2:1));C=null;b=g?Math.min(u+(d?b.height:b.width), -d?f.height:f.width):d?f.height:f.width;g&&(m.fillStyle=n.outBkgClr,d?(m.fillRect(0,k,k,u-k),m.fillRect(0,b,k,f.height)):(m.fillRect(k,0,u-k,k),m.fillRect(b,0,f.width,k)));m.fillStyle=n.fontClr;for(g=g?u:u%(c*a);g<=b;g+=c*a)if(e=Math.round((g-u)/a/c),!(g<k||e==C)){C=e;var F=null;0==e%I&&(F=l.formatText(v+e*c)+"");d?t(k-B[Math.abs(e)%I],g,k,g,F):t(g,k-B[Math.abs(e)%I],g,k,F)}m.lineWidth=1;t(d?0:k,d?k:0,k,k);m.fillStyle=n.cornerClr;m.fillRect(0,0,k,k)};this.drawRuler=v;this.sizeListener=c=g(function(){var a= -p.container;d?(a=a.offsetHeight+k,f.height!=a&&(f.height=a,u.style.height=a+"px",v())):(a=a.offsetWidth+k,f.width!=a&&(f.width=a,u.style.width=a+"px",v()))},10);this.pageListener=function(){v()};this.scrollListener=b=g(function(){var a=d?p.container.scrollTop:p.container.scrollLeft;l.lastScroll!=a&&(l.lastScroll=a,v())},10);this.unitListener=function(a,b){l.setUnit(b.getProperty("unit"))};p.addListener(mxEvent.SIZE,c);p.container.addEventListener("scroll",b);p.view.addListener("unitChanged",this.unitListener); -a.addListener("pageViewChanged",this.pageListener);a.addListener("pageScaleChanged",this.pageListener);a.addListener("pageFormatChanged",this.pageListener);this.setStyle=function(a){n=a;u.style.background=n.bkgClr;v()};this.origGuideMove=mxGuide.prototype.move;mxGuide.prototype.move=function(a,b,c,e){var f;if(d&&4<a.height||!d&&4<a.width){if(null!=l.guidePart)try{m.putImageData(l.guidePart.imgData1,l.guidePart.x1,l.guidePart.y1),m.putImageData(l.guidePart.imgData2,l.guidePart.x2,l.guidePart.y2),m.putImageData(l.guidePart.imgData3, -l.guidePart.x3,l.guidePart.y3)}catch(K){}f=l.origGuideMove.apply(this,arguments);try{var g,p,q,u,v,y,z,D,E;m.lineWidth=.5;m.strokeStyle=n.guideClr;m.setLineDash([2]);d?(p=a.y+f.y+k-this.graph.container.scrollTop,g=0,v=p+a.height/2,u=k/2,D=p+a.height,z=0,q=m.getImageData(g,p-1,k,3),t(g,p,k,p),p--,y=m.getImageData(u,v-1,k,3),t(u,v,k,v),v--,E=m.getImageData(z,D-1,k,3),t(z,D,k,D),D--):(p=0,g=a.x+f.x+k-this.graph.container.scrollLeft,v=k/2,u=g+a.width/2,D=0,z=g+a.width,q=m.getImageData(g-1,p,3,k),t(g, -p,g,k),g--,y=m.getImageData(u-1,v,3,k),t(u,v,u,k),u--,E=m.getImageData(z-1,D,3,k),t(z,D,z,k),z--);if(null==l.guidePart||l.guidePart.x1!=g||l.guidePart.y1!=p)l.guidePart={imgData1:q,x1:g,y1:p,imgData2:y,x2:u,y2:v,imgData3:E,x3:z,y3:D}}catch(K){}}else f=l.origGuideMove.apply(this,arguments);return f};this.origGuideDestroy=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){var a=l.origGuideDestroy.apply(this,arguments);if(null!=l.guidePart)try{m.putImageData(l.guidePart.imgData1,l.guidePart.x1, +(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var c=EditorUi.initTheme;EditorUi.initTheme=function(){c.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();(function(){var a=mxGuide.prototype.move;mxGuide.prototype.move=function(b,c,d,k){var e=c.y,g=c.x,t=!1,f=!1;if(null!=this.states&&null!=b&&null!=c){var m=this,p=new mxCellState,u=this.graph.getView().scale,v=Math.max(2,this.getGuideTolerance()/2);p.x=b.x+g;p.y=b.y+e;p.width=b.width;p.height=b.height;for(var q=[],z=[],x=0;x<this.states.length;x++){var C=this.states[x];C instanceof mxCellState&&(k||!this.graph.isCellSelected(C.cell))&&((p.x>=C.x&&p.x<=C.x+C.width||C.x>=p.x&&C.x<=p.x+p.width)&&(p.y> +C.y+C.height+4||p.y+p.height+4<C.y)?q.push(C):(p.y>=C.y&&p.y<=C.y+C.height||C.y>=p.y&&C.y<=p.y+p.height)&&(p.x>C.x+C.width+4||p.x+p.width+4<C.x)&&z.push(C))}var H=0,y=0,B=C=0,D=0,A=0,F=0,G=0,I=5*u;if(1<q.length){q.push(p);q.sort(function(a,b){return a.y-b.y});var J=!1,x=p==q[0],u=p==q[q.length-1];if(!x&&!u)for(x=1;x<q.length-1;x++)if(p==q[x]){u=q[x-1];x=q[x+1];C=y=B=(x.y-u.y-u.height-p.height)/2;break}for(x=0;x<q.length-1;x++){var u=q[x],E=q[x+1],K=p==u||p==E,E=E.y-u.y-u.height,J=J|p==u;if(0==y&& +0==H)y=E,H=1;else if(Math.abs(y-E)<=(K||1==x&&J?v:0))H+=1;else if(1<H&&J){q=q.slice(0,x+1);break}else if(3<=q.length-x&&!J)H=0,C=y=0!=B?B:0,q.splice(0,0==x?1:x),x=-1;else break;0!=C||K||(y=C=E)}3==q.length&&q[1]==p&&(C=0)}if(1<z.length){z.push(p);z.sort(function(a,b){return a.x-b.x});J=!1;x=p==z[0];u=p==z[z.length-1];if(!x&&!u)for(x=1;x<z.length-1;x++)if(p==z[x]){u=z[x-1];x=z[x+1];F=A=G=(x.x-u.x-u.width-p.width)/2;break}for(x=0;x<z.length-1;x++){u=z[x];E=z[x+1];K=p==u||p==E;E=E.x-u.x-u.width;J|=p== +u;if(0==A&&0==D)A=E,D=1;else if(Math.abs(A-E)<=(K||1==x&&J?v:0))D+=1;else if(1<D&&J){z=z.slice(0,x+1);break}else if(3<=z.length-x&&!J)D=0,F=A=0!=G?G:0,z.splice(0,0==x?1:x),x=-1;else break;0!=F||K||(A=F=E)}3==z.length&&z[1]==p&&(F=0)}v=function(a,b,c,d){var e=[],f;d?(d=I,f=0):(d=0,f=I);e.push(new mxPoint(a.x-d,a.y-f));e.push(new mxPoint(a.x+d,a.y+f));e.push(a);e.push(b);e.push(new mxPoint(b.x-d,b.y-f));e.push(new mxPoint(b.x+d,b.y+f));if(null!=c)return c.points=e,c;a=new mxPolyline(e,mxConstants.GUIDE_COLOR, +mxConstants.GUIDE_STROKEWIDTH);a.dialect=mxConstants.DIALECT_SVG;a.pointerEvents=!1;a.init(m.graph.getView().getOverlayPane());return a};A=function(a,b){if(a&&null!=m.guidesArrHor)for(var c=0;c<m.guidesArrHor.length;c++)m.guidesArrHor[c].node.style.visibility="hidden";if(b&&null!=m.guidesArrVer)for(c=0;c<m.guidesArrVer.length;c++)m.guidesArrVer[c].node.style.visibility="hidden"};if(1<D&&D==z.length-1){D=[];G=m.guidesArrHor;t=[];g=0;x=z[0]==p?1:0;J=z[x].y+z[x].height;if(0<F)for(x=0;x<z.length-1;x++)u= +z[x],E=z[x+1],p==u?(g=E.x-u.width-F,t.push(new mxPoint(g+u.width+I,J)),t.push(new mxPoint(E.x-I,J))):p==E?(t.push(new mxPoint(u.x+u.width+I,J)),g=u.x+u.width+F,t.push(new mxPoint(g-I,J))):(t.push(new mxPoint(u.x+u.width+I,J)),t.push(new mxPoint(E.x-I,J)));else u=z[0],x=z[2],g=u.x+u.width+(x.x-u.x-u.width-p.width)/2,t.push(new mxPoint(u.x+u.width+I,J)),t.push(new mxPoint(g-I,J)),t.push(new mxPoint(g+p.width+I,J)),t.push(new mxPoint(x.x-I,J));for(x=0;x<t.length;x+=2)z=t[x],F=t[x+1],z=v(z,F,null!=G? +G[x/2]:null),z.node.style.visibility="visible",z.redraw(),D.push(z);for(x=t.length/2;null!=G&&x<G.length;x++)G[x].destroy();m.guidesArrHor=D;g-=b.x;t=!0}else A(!0);if(1<H&&H==q.length-1){D=[];G=m.guidesArrVer;f=[];e=0;x=q[0]==p?1:0;H=q[x].x+q[x].width;if(0<C)for(x=0;x<q.length-1;x++)u=q[x],E=q[x+1],p==u?(e=E.y-u.height-C,f.push(new mxPoint(H,e+u.height+I)),f.push(new mxPoint(H,E.y-I))):p==E?(f.push(new mxPoint(H,u.y+u.height+I)),e=u.y+u.height+C,f.push(new mxPoint(H,e-I))):(f.push(new mxPoint(H,u.y+ +u.height+I)),f.push(new mxPoint(H,E.y-I)));else u=q[0],x=q[2],e=u.y+u.height+(x.y-u.y-u.height-p.height)/2,f.push(new mxPoint(H,u.y+u.height+I)),f.push(new mxPoint(H,e-I)),f.push(new mxPoint(H,e+p.height+I)),f.push(new mxPoint(H,x.y-I));for(x=0;x<f.length;x+=2)z=f[x],F=f[x+1],z=v(z,F,null!=G?G[x/2]:null,!0),z.node.style.visibility="visible",z.redraw(),D.push(z);for(x=f.length/2;null!=G&&x<G.length;x++)G[x].destroy();m.guidesArrVer=D;e-=b.y;f=!0}else A(!1,!0)}if(t||f)return p=new mxPoint(g,e),q=a.call(this, +b,p,d,k),t&&!f?p.y=q.y:f&&!t&&(p.x=q.x),q.y!=p.y&&null!=this.guideY&&null!=this.guideY.node&&(this.guideY.node.style.visibility="hidden"),q.x!=p.x&&null!=this.guideX&&null!=this.guideX.node&&(this.guideX.node.style.visibility="hidden"),p;A(!0,!0);return a.apply(this,arguments)};var c=mxGuide.prototype.setVisible;mxGuide.prototype.setVisible=function(a){c.call(this,a);var b=this.guidesArrVer,d=this.guidesArrHor;if(null!=b)for(var k=0;k<b.length;k++)b[k].node.style.visibility=a?"visible":"hidden";if(null!= +d)for(k=0;k<d.length;k++)d[k].node.style.visibility=a?"visible":"hidden"};var d=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){d.call(this);var a=this.guidesArrVer,c=this.guidesArrHor;if(null!=a){for(var g=0;g<a.length;g++)a[g].destroy();this.guidesArrVer=null}if(null!=c){for(g=0;g<c.length;g++)c[g].destroy();this.guidesArrHor=null}}})();function mxRuler(a,c,d,b){function e(){var b=a.diagramContainer;t.style.top=b.offsetTop-k+"px";t.style.left=b.offsetLeft-k+"px";t.style.width=(d?0:b.offsetWidth)+k+"px";t.style.height=(d?b.offsetHeight:0)+k+"px"}function g(a,b,c){var d;return function(){var e=this,f=arguments,g=c&&!d;clearTimeout(d);d=setTimeout(function(){d=null;c||a.apply(e,f)},b);g&&a.apply(e,f)}}var k=this.RULER_THICKNESS,l=this;this.unit=c;var n="dark"!=window.uiTheme?{bkgClr:"#ffffff",outBkgClr:"#e8e9ed",cornerClr:"#fbfbfb", +strokeClr:"#dadce0",fontClr:"#BBBBBB",guideClr:"#0000BB"}:{bkgClr:"#202020",outBkgClr:"#2a2a2a",cornerClr:"#2a2a2a",strokeClr:"#505759",fontClr:"#BBBBBB",guideClr:"#0088cf"},t=document.createElement("div");t.style.position="absolute";t.style.background=n.bkgClr;t.style[d?"borderRight":"borderBottom"]="0.5px solid "+n.strokeClr;t.style.borderLeft="0.5px solid "+n.strokeClr;document.body.appendChild(t);mxEvent.disableContextMenu(t);this.editorUiRefresh=a.refresh;a.refresh=function(b){l.editorUiRefresh.apply(a, +arguments);e()};e();var f=document.createElement("canvas");f.width=t.offsetWidth;f.height=t.offsetHeight;t.style.overflow="hidden";f.style.position="relative";t.appendChild(f);var m=f.getContext("2d");this.ui=a;var p=a.editor.graph;this.graph=p;this.container=t;this.canvas=f;var u=function(a,b,c,e,f){a=Math.round(a);b=Math.round(b);c=Math.round(c);e=Math.round(e);m.beginPath();m.moveTo(a+.5,b+.5);m.lineTo(c+.5,e+.5);m.stroke();f&&(d?(m.save(),m.translate(a,b),m.rotate(-Math.PI/2),m.fillText(f,0,0), +m.restore()):m.fillText(f,a,b))},v=function(){m.clearRect(0,0,f.width,f.height);m.beginPath();m.lineWidth=.7;m.strokeStyle=n.strokeClr;m.setLineDash([]);m.font="9px Arial";m.textAlign="center";var a=p.view.scale,b=p.view.getBackgroundPageBounds(),c=p.view.translate,e=p.view.getGraphBounds(),g=p.pageVisible,t=g?k+(d?b.y-p.container.scrollTop:b.x-p.container.scrollLeft):k+(d?c.y-p.container.scrollTop:c.x-p.container.scrollLeft),v=0;g&&(v=d?Math.floor(((e.y+1)/a-c.y)/p.pageFormat.height)*p.pageFormat.height* +a:Math.floor(((e.x+1)/a-c.x)/p.pageFormat.width)*p.pageFormat.width*a);var D,A,F;switch(l.unit){case mxConstants.POINTS:D=F=10;A=[3,5,5,5,5,10,5,5,5,5];break;case mxConstants.MILLIMETERS:F=10;D=mxConstants.PIXELS_PER_MM;A=[5,3,3,3,3,6,3,3,3,3];break;case mxConstants.INCHES:F=.5>=a||4<=a?8:16,D=mxConstants.PIXELS_PER_INCH/F,A=[5,3,5,3,7,3,5,3,7,3,5,3,7,3,5,3]}c=D;2<=a?c=D/(2*Math.floor(a/2)):.5>=a&&(c=D*Math.floor(1/a/2)*(l.unit==mxConstants.MILLIMETERS?2:1));D=null;b=g?Math.min(t+(d?b.height:b.width), +d?f.height:f.width):d?f.height:f.width;g&&(m.fillStyle=n.outBkgClr,d?(m.fillRect(0,k,k,t-k),m.fillRect(0,b,k,f.height)):(m.fillRect(k,0,t-k,k),m.fillRect(b,0,f.width,k)));m.fillStyle=n.fontClr;for(g=g?t:t%(c*a);g<=b;g+=c*a)if(e=Math.round((g-t)/a/c),!(g<k||e==D)){D=e;var G=null;0==e%F&&(G=l.formatText(v+e*c)+"");d?u(k-A[Math.abs(e)%F],g,k,g,G):u(g,k-A[Math.abs(e)%F],g,k,G)}m.lineWidth=1;u(d?0:k,d?k:0,k,k);m.fillStyle=n.cornerClr;m.fillRect(0,0,k,k)};this.drawRuler=v;this.sizeListener=c=g(function(){var a= +p.container;d?(a=a.offsetHeight+k,f.height!=a&&(f.height=a,t.style.height=a+"px",v())):(a=a.offsetWidth+k,f.width!=a&&(f.width=a,t.style.width=a+"px",v()))},10);this.pageListener=function(){v()};this.scrollListener=b=g(function(){var a=d?p.container.scrollTop:p.container.scrollLeft;l.lastScroll!=a&&(l.lastScroll=a,v())},10);this.unitListener=function(a,b){l.setUnit(b.getProperty("unit"))};p.addListener(mxEvent.SIZE,c);p.container.addEventListener("scroll",b);p.view.addListener("unitChanged",this.unitListener); +a.addListener("pageViewChanged",this.pageListener);a.addListener("pageScaleChanged",this.pageListener);a.addListener("pageFormatChanged",this.pageListener);this.setStyle=function(a){n=a;t.style.background=n.bkgClr;v()};this.origGuideMove=mxGuide.prototype.move;mxGuide.prototype.move=function(a,b,c,e){var f;if(d&&4<a.height||!d&&4<a.width){if(null!=l.guidePart)try{m.putImageData(l.guidePart.imgData1,l.guidePart.x1,l.guidePart.y1),m.putImageData(l.guidePart.imgData2,l.guidePart.x2,l.guidePart.y2),m.putImageData(l.guidePart.imgData3, +l.guidePart.x3,l.guidePart.y3)}catch(K){}f=l.origGuideMove.apply(this,arguments);try{var g,p,q,t,v,x,z,C,E;m.lineWidth=.5;m.strokeStyle=n.guideClr;m.setLineDash([2]);d?(p=a.y+f.y+k-this.graph.container.scrollTop,g=0,v=p+a.height/2,t=k/2,C=p+a.height,z=0,q=m.getImageData(g,p-1,k,3),u(g,p,k,p),p--,x=m.getImageData(t,v-1,k,3),u(t,v,k,v),v--,E=m.getImageData(z,C-1,k,3),u(z,C,k,C),C--):(p=0,g=a.x+f.x+k-this.graph.container.scrollLeft,v=k/2,t=g+a.width/2,C=0,z=g+a.width,q=m.getImageData(g-1,p,3,k),u(g, +p,g,k),g--,x=m.getImageData(t-1,v,3,k),u(t,v,t,k),t--,E=m.getImageData(z-1,C,3,k),u(z,C,z,k),z--);if(null==l.guidePart||l.guidePart.x1!=g||l.guidePart.y1!=p)l.guidePart={imgData1:q,x1:g,y1:p,imgData2:x,x2:t,y2:v,imgData3:E,x3:z,y3:C}}catch(K){}}else f=l.origGuideMove.apply(this,arguments);return f};this.origGuideDestroy=mxGuide.prototype.destroy;mxGuide.prototype.destroy=function(){var a=l.origGuideDestroy.apply(this,arguments);if(null!=l.guidePart)try{m.putImageData(l.guidePart.imgData1,l.guidePart.x1, l.guidePart.y1),m.putImageData(l.guidePart.imgData2,l.guidePart.x2,l.guidePart.y2),m.putImageData(l.guidePart.imgData3,l.guidePart.x3,l.guidePart.y3),l.guidePart=null}catch(z){}return a}}mxRuler.prototype.RULER_THICKNESS=14;mxRuler.prototype.unit=mxConstants.POINTS;mxRuler.prototype.setUnit=function(a){this.unit=a;this.drawRuler()}; mxRuler.prototype.formatText=function(a){switch(this.unit){case mxConstants.POINTS:return Math.round(a);case mxConstants.MILLIMETERS:return(a/mxConstants.PIXELS_PER_MM).toFixed(1);case mxConstants.INCHES:return(a/mxConstants.PIXELS_PER_INCH).toFixed(2)}}; mxRuler.prototype.destroy=function(){this.ui.refresh=this.editorUiRefresh;mxGuide.prototype.move=this.origGuideMove;mxGuide.prototype.destroy=this.origGuideDestroy;this.graph.removeListener(this.sizeListener);this.graph.container.removeEventListener("scroll",this.scrollListener);this.graph.view.removeListener("unitChanged",this.unitListener);this.ui.removeListener("pageViewChanged",this.pageListener);this.ui.removeListener("pageScaleChanged",this.pageListener);this.ui.removeListener("pageFormatChanged", @@ -10004,10 +10008,10 @@ this.pageListener);null!=this.container&&this.container.parentNode.removeChild(t function mxDualRuler(a,c){var d=new mxPoint(mxRuler.prototype.RULER_THICKNESS,mxRuler.prototype.RULER_THICKNESS);this.editorUiGetDiagContOffset=a.getDiagramContainerOffset;a.getDiagramContainerOffset=function(){return d};this.editorUiRefresh=a.refresh;this.ui=a;this.origGuideMove=mxGuide.prototype.move;this.origGuideDestroy=mxGuide.prototype.destroy;this.vRuler=new mxRuler(a,c,!0);this.hRuler=new mxRuler(a,c,!1,!0);var b=mxUtils.bind(this,function(b){var c=!1;mxEvent.addGestureListeners(b,mxUtils.bind(this, function(b){c=null!=a.currentMenu;mxEvent.consume(b)}),null,mxUtils.bind(this,function(d){if(a.editor.graph.isEnabled()&&!a.editor.graph.isMouseDown&&(mxEvent.isTouchEvent(d)||mxEvent.isPopupTrigger(d))){a.editor.graph.popupMenuHandler.hideMenu();a.hideCurrentMenu();if(!mxEvent.isTouchEvent(d)||!c){var e=new mxPopupMenu(mxUtils.bind(this,function(b,c){a.menus.addMenuItems(b,["points","millimeters"],c)}));e.div.className+=" geMenubarMenu";e.smartSeparators=!0;e.showDisabled=!0;e.autoExpand=!0;e.hideMenu= mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(e,arguments);a.resetCurrentMenu();e.destroy()});var g=mxEvent.getClientX(d),k=mxEvent.getClientY(d);e.popup(g,k,null,d);a.setCurrentMenu(e,b)}mxEvent.consume(d)}}))});b(this.hRuler.container);b(this.vRuler.container);this.vRuler.drawRuler();this.hRuler.drawRuler()}mxDualRuler.prototype.setUnit=function(a){this.vRuler.setUnit(a);this.hRuler.setUnit(a)};mxDualRuler.prototype.setStyle=function(a){this.vRuler.setStyle(a);this.hRuler.setStyle(a)}; -mxDualRuler.prototype.destroy=function(){this.vRuler.destroy();this.hRuler.destroy();this.ui.refresh=this.editorUiRefresh;mxGuide.prototype.move=this.origGuideMove;mxGuide.prototype.destroy=this.origGuideDestroy;this.ui.getDiagramContainerOffset=this.editorUiGetDiagContOffset};function mxFreehand(a){var c=null!=a.view&&null!=a.view.canvas?a.view.canvas.ownerSVGElement:null;if(null!=a.container&&null!=c){var d=mxFreehand.prototype.NORMAL_SMOOTHING,b=null,e=[],g,k=[],l,n=!1,u=!0,f=[],m=!1,p=!0;this.setClosedPath=function(a){n=a};this.setAutoClose=function(a){u=a};this.setStopClickEnabled=function(a){p=a};this.setSmoothing=function(a){d=a};var t=function(b){m=b;a.getRubberband().setEnabled(!b);a.graphHandler.setSelectEnabled(!b);a.graphHandler.setMoveEnabled(!b);a.container.style.cursor= -b?"crosshair":"";a.fireEvent(new mxEventObject("freehandStateChanged"))};this.startDrawing=function(){t(!0)};this.isDrawing=function(){return m};var v=mxUtils.bind(this,function(a){if(b){var c=p&&0<k.length&&null!=l&&2>l.length;c||k.push.apply(k,l);l=[];k.push(null);e.push(b);b=null;c&&this.stopDrawing();mxEvent.consume(a)}});this.stopDrawing=function(){if(0<e.length){for(var c=k[0].x,d=k[0].x,f=k[0].y,g=k[0].y,l=1;l<k.length;l++)null!=k[l]&&(c=Math.max(c,k[l].x),d=Math.min(d,k[l].x),f=Math.max(f, -k[l].y),g=Math.min(g,k[l].y));c-=d;f-=g;if(0<c&&0<f){var m=100/c,p=100/f;k.map(function(a){if(null==a)return a;a.x=(a.x-d)*m;a.y=(a.y-g)*p;return a});for(var q='<shape strokewidth="inherit"><foreground>',v=0,l=0;l<k.length;l++){var y=k[l];if(null==y){var y=!1,v=k[v],z=k[l-1];!n&&u&&(y=v.x-z.x,z=v.y-z.y,y=Math.sqrt(y*y+z*z)<=a.tolerance);if(n||y)q+='<line x="'+v.x.toFixed(2)+'" y="'+v.y.toFixed(2)+'"/>';q+="</path>"+(n||y?"<fillstroke/>":"<stroke/>");v=l+1}else q=l==v?q+('<path><move x="'+y.x.toFixed(2)+ -'" y="'+y.y.toFixed(2)+'"/>'):q+('<line x="'+y.x.toFixed(2)+'" y="'+y.y.toFixed(2)+'"/>')}var l=mxConstants.STYLE_SHAPE+"=stencil("+Graph.compress(q+"</foreground></shape>")+");fillColor=none;",q=a.view.scale,v=a.view.translate,K=new mxCell("",new mxGeometry(d/q-v.x,g/q-v.y,c/q,f/q),l);K.vertex=1;a.model.beginUpdate();try{K=a.addCell(K)}finally{a.model.endUpdate()}a.fireEvent(new mxEventObject("cellsInserted","cells",[K]));a.fireEvent(new mxEventObject("freehandInserted","cell",K));setTimeout(function(){a.setSelectionCells([K])}, -10)}for(l=0;l<e.length;l++)e[l].parentNode.removeChild(e[l]);b=null;e=[];k=[]}t(!1)};mxEvent.addGestureListeners(c,function(d){if(m){var e=parseFloat(a.currentVertexStyle[mxConstants.STYLE_STROKEWIDTH]||1),e=Math.max(1,e*a.view.scale);b=document.createElementNS("http://www.w3.org/2000/svg","path");b.setAttribute("fill","none");b.setAttribute("stroke",a.currentVertexStyle[mxConstants.STYLE_STROKECOLOR]||"#000");b.setAttribute("stroke-width",e);if("1"==a.currentVertexStyle[mxConstants.STYLE_DASHED]){var n= -a.currentVertexStyle[mxConstants.STYLE_DASH_PATTERN]||"3 3",n=n.split(" ").map(function(a){return parseFloat(a)*e}).join(" ");b.setAttribute("stroke-dasharray",n)}f=[];n=q(d);z(n);g="M"+n.x+" "+n.y;k.push(n);l=[];b.setAttribute("d",g);c.appendChild(b);mxEvent.consume(d)}},function(a){if(b){z(q(a));var c=y(0);if(c){g+=" L"+c.x+" "+c.y;k.push(c);var d="";l=[];for(var e=2;e<f.length;e+=2)c=y(e),d+=" L"+c.x+" "+c.y,l.push(c);b.setAttribute("d",g+d)}mxEvent.consume(a)}},v);var q=function(b){return mxUtils.convertPoint(a.container, -mxEvent.getClientX(b),mxEvent.getClientY(b))},z=function(a){for(f.push(a);f.length>d;)f.shift()},y=function(a){var b=f.length;if(1===b%2||b>=d){var c=0,e=0,g,k=0;for(g=a;g<b;g++)k++,a=f[g],c+=a.x,e+=a.y;return{x:c/k,y:e/k}}return null}}}mxFreehand.prototype.NO_SMOOTHING=1;mxFreehand.prototype.MILD_SMOOTHING=4;mxFreehand.prototype.NORMAL_SMOOTHING=8;mxFreehand.prototype.VERY_SMOOTH_SMOOTHING=12;mxFreehand.prototype.SUPER_SMOOTH_SMOOTHING=16;mxFreehand.prototype.HYPER_SMOOTH_SMOOTHING=20; +mxDualRuler.prototype.destroy=function(){this.vRuler.destroy();this.hRuler.destroy();this.ui.refresh=this.editorUiRefresh;mxGuide.prototype.move=this.origGuideMove;mxGuide.prototype.destroy=this.origGuideDestroy;this.ui.getDiagramContainerOffset=this.editorUiGetDiagContOffset};function mxFreehand(a){var c=null!=a.view&&null!=a.view.canvas?a.view.canvas.ownerSVGElement:null;if(null!=a.container&&null!=c){var d=mxFreehand.prototype.NORMAL_SMOOTHING,b=null,e=[],g,k=[],l,n=!1,t=!0,f=[],m=!1,p=!0;this.setClosedPath=function(a){n=a};this.setAutoClose=function(a){t=a};this.setStopClickEnabled=function(a){p=a};this.setSmoothing=function(a){d=a};var u=function(b){m=b;a.getRubberband().setEnabled(!b);a.graphHandler.setSelectEnabled(!b);a.graphHandler.setMoveEnabled(!b);a.container.style.cursor= +b?"crosshair":"";a.fireEvent(new mxEventObject("freehandStateChanged"))};this.startDrawing=function(){u(!0)};this.isDrawing=function(){return m};var v=mxUtils.bind(this,function(a){if(b){var c=p&&0<k.length&&null!=l&&2>l.length;c||k.push.apply(k,l);l=[];k.push(null);e.push(b);b=null;c&&this.stopDrawing();mxEvent.consume(a)}});this.stopDrawing=function(){if(0<e.length){for(var c=k[0].x,d=k[0].x,f=k[0].y,g=k[0].y,l=1;l<k.length;l++)null!=k[l]&&(c=Math.max(c,k[l].x),d=Math.min(d,k[l].x),f=Math.max(f, +k[l].y),g=Math.min(g,k[l].y));c-=d;f-=g;if(0<c&&0<f){var m=100/c,p=100/f;k.map(function(a){if(null==a)return a;a.x=(a.x-d)*m;a.y=(a.y-g)*p;return a});for(var q='<shape strokewidth="inherit"><foreground>',v=0,l=0;l<k.length;l++){var x=k[l];if(null==x){var x=!1,v=k[v],z=k[l-1];!n&&t&&(x=v.x-z.x,z=v.y-z.y,x=Math.sqrt(x*x+z*z)<=a.tolerance);if(n||x)q+='<line x="'+v.x.toFixed(2)+'" y="'+v.y.toFixed(2)+'"/>';q+="</path>"+(n||x?"<fillstroke/>":"<stroke/>");v=l+1}else q=l==v?q+('<path><move x="'+x.x.toFixed(2)+ +'" y="'+x.y.toFixed(2)+'"/>'):q+('<line x="'+x.x.toFixed(2)+'" y="'+x.y.toFixed(2)+'"/>')}var l=mxConstants.STYLE_SHAPE+"=stencil("+Graph.compress(q+"</foreground></shape>")+");fillColor=none;",q=a.view.scale,v=a.view.translate,K=new mxCell("",new mxGeometry(d/q-v.x,g/q-v.y,c/q,f/q),l);K.vertex=1;a.model.beginUpdate();try{K=a.addCell(K)}finally{a.model.endUpdate()}a.fireEvent(new mxEventObject("cellsInserted","cells",[K]));a.fireEvent(new mxEventObject("freehandInserted","cell",K));setTimeout(function(){a.setSelectionCells([K])}, +10)}for(l=0;l<e.length;l++)e[l].parentNode.removeChild(e[l]);b=null;e=[];k=[]}u(!1)};mxEvent.addGestureListeners(c,function(d){if(m){var e=parseFloat(a.currentVertexStyle[mxConstants.STYLE_STROKEWIDTH]||1),e=Math.max(1,e*a.view.scale);b=document.createElementNS("http://www.w3.org/2000/svg","path");b.setAttribute("fill","none");b.setAttribute("stroke",a.currentVertexStyle[mxConstants.STYLE_STROKECOLOR]||"#000");b.setAttribute("stroke-width",e);if("1"==a.currentVertexStyle[mxConstants.STYLE_DASHED]){var n= +a.currentVertexStyle[mxConstants.STYLE_DASH_PATTERN]||"3 3",n=n.split(" ").map(function(a){return parseFloat(a)*e}).join(" ");b.setAttribute("stroke-dasharray",n)}f=[];n=q(d);z(n);g="M"+n.x+" "+n.y;k.push(n);l=[];b.setAttribute("d",g);c.appendChild(b);mxEvent.consume(d)}},function(a){if(b){z(q(a));var c=x(0);if(c){g+=" L"+c.x+" "+c.y;k.push(c);var d="";l=[];for(var e=2;e<f.length;e+=2)c=x(e),d+=" L"+c.x+" "+c.y,l.push(c);b.setAttribute("d",g+d)}mxEvent.consume(a)}},v);var q=function(b){return mxUtils.convertPoint(a.container, +mxEvent.getClientX(b),mxEvent.getClientY(b))},z=function(a){for(f.push(a);f.length>d;)f.shift()},x=function(a){var b=f.length;if(1===b%2||b>=d){var c=0,e=0,g,k=0;for(g=a;g<b;g++)k++,a=f[g],c+=a.x,e+=a.y;return{x:c/k,y:e/k}}return null}}}mxFreehand.prototype.NO_SMOOTHING=1;mxFreehand.prototype.MILD_SMOOTHING=4;mxFreehand.prototype.NORMAL_SMOOTHING=8;mxFreehand.prototype.VERY_SMOOTH_SMOOTHING=12;mxFreehand.prototype.SUPER_SMOOTH_SMOOTHING=16;mxFreehand.prototype.HYPER_SMOOTH_SMOOTHING=20; diff --git a/src/main/webapp/js/diagramly/App.js b/src/main/webapp/js/diagramly/App.js index f02fa56ad..700ae164d 100644 --- a/src/main/webapp/js/diagramly/App.js +++ b/src/main/webapp/js/diagramly/App.js @@ -3039,7 +3039,9 @@ App.prototype.start = function() { var id = this.getDiagramId(); - if (EditorUi.enableDrafts && this.getServiceName() == 'draw.io' && (id == null || id.length == 0)) + if (EditorUi.enableDrafts && urlParams['mode'] == null && + this.getServiceName() == 'draw.io' && + (id == null || id.length == 0)) { this.checkDrafts(); } diff --git a/src/main/webapp/js/diagramly/Devel.js b/src/main/webapp/js/diagramly/Devel.js index 6d2728f42..85cf35332 100644 --- a/src/main/webapp/js/diagramly/Devel.js +++ b/src/main/webapp/js/diagramly/Devel.js @@ -152,10 +152,7 @@ if (urlParams['tableLayout'] == '1') } //Org Chart Layout -if (urlParams['orgLayout'] == '1') -{ - mxscript(drawDevUrl + 'js/orgchart/bridge.min.js'); - mxscript(drawDevUrl + 'js/orgchart/bridge.collections.min.js'); - mxscript(drawDevUrl + 'js/orgchart/OrgChart.Layout.min.js'); - mxscript(drawDevUrl + 'js/orgchart/mxOrgChartLayout.js'); -} +mxscript(drawDevUrl + 'js/orgchart/bridge.min.js'); +mxscript(drawDevUrl + 'js/orgchart/bridge.collections.min.js'); +mxscript(drawDevUrl + 'js/orgchart/OrgChart.Layout.min.js'); +mxscript(drawDevUrl + 'js/orgchart/mxOrgChartLayout.js'); diff --git a/src/main/webapp/js/diagramly/DrawioFile.js b/src/main/webapp/js/diagramly/DrawioFile.js index 89494be24..120a85ed5 100644 --- a/src/main/webapp/js/diagramly/DrawioFile.js +++ b/src/main/webapp/js/diagramly/DrawioFile.js @@ -1475,7 +1475,7 @@ DrawioFile.prototype.addUnsavedStatus = function(err) ' (' + mxUtils.htmlEntities(err.message) + ')</div>'); } - if (EditorUi.enableDrafts) + if (EditorUi.enableDrafts && this.getMode() == null) { this.saveDraft(); } diff --git a/src/main/webapp/js/diagramly/Editor.js b/src/main/webapp/js/diagramly/Editor.js index d6130ded5..eff4912e5 100644 --- a/src/main/webapp/js/diagramly/Editor.js +++ b/src/main/webapp/js/diagramly/Editor.js @@ -214,14 +214,33 @@ {val: 'trapezoidPerimeter', dispName: 'Trapezoid'}, {val: 'stepPerimeter', dispName: 'Step'}] }, {name: 'fixDash', dispName: 'Fixed Dash', type: 'bool', defVal: false}, - {name: 'jiggle', dispName: 'Jiggle', type: 'float', min: 0, defVal: 1.5, isVisible: function(state) + {name: 'jiggle', dispName: 'Jiggle', type: 'float', min: 0, defVal: 1.5, isVisible: function(state, format) { return mxUtils.getValue(state.style, 'comic', '0') == '1'; }}, {name: 'autosize', dispName: 'Autosize', type: 'bool', defVal: false}, - {name: 'collapsible', dispName: 'Collapsible', type: 'bool', defVal: false}, - {name: 'container', dispName: 'Container', type: 'bool', defVal: false}, - {name: 'recursiveResize', dispName: 'Resize Children', type: 'bool', defVal: true}, + {name: 'container', dispName: 'Container', type: 'bool', defVal: false, isVisible: function(state, format) + { + return state.vertices.length == 1 && state.edges.length == 0 && + format.editorUi.editor.graph.model.getChildCount(state.vertices[0]) == 0; + }}, + {name: 'collapsible', dispName: 'Collapsible', type: 'bool', getDefaultValue: function(state, format) + { + var cell = (state.vertices.length == 1 && state.edges.length == 0) ? state.vertices[0] : null; + var graph = format.editorUi.editor.graph; + + return cell != null && ((graph.isContainer(cell) && state.style['collapsible'] != '0') || + (!graph.isContainer(cell) && state.style['collapsible'] == '1')); + }, isVisible: function(state, format) + { + return state.vertices.length == 1 && state.edges.length == 0;; + }}, + {name: 'recursiveResize', dispName: 'Resize Children', type: 'bool', defVal: true, isVisible: function(state, format) + { + return state.vertices.length == 1 && state.edges.length == 0 && + !format.editorUi.editor.graph.isSwimlane(state.vertices[0]) && + mxUtils.getValue(state.style, 'childLayout', null) == null; + }}, {name: 'expand', dispName: 'Expand', type: 'bool', defVal: true}, {name: 'part', dispName: 'Part', type: 'bool', defVal: false}, {name: 'editable', dispName: 'Editable', type: 'bool', defVal: true}, @@ -3512,7 +3531,8 @@ if (!prop.isVisible(state, this)) continue; } - var pValue = state.style[key] != null? mxUtils.htmlEntities(state.style[key] + '') : prop.defVal; //or undefined if defVal is undefined + var pValue = state.style[key] != null? mxUtils.htmlEntities(state.style[key] + '') : + ((prop.getDefaultValue != null) ? prop.getDefaultValue(state, this) : prop.defVal); //or undefined if defVal is undefined if (prop.type == 'separator') { diff --git a/src/main/webapp/js/diagramly/EditorUi.js b/src/main/webapp/js/diagramly/EditorUi.js index aa11e6649..0585703c6 100644 --- a/src/main/webapp/js/diagramly/EditorUi.js +++ b/src/main/webapp/js/diagramly/EditorUi.js @@ -34,7 +34,7 @@ /** * Protocol and hostname to use for embedded files. Default is https://www.draw.io */ - EditorUi.drawHost = 'https://www.draw.io'; + EditorUi.drawHost = window.DRAWIO_BASE_URL; /** * Switch to disable logging for mode and search terms. @@ -1515,7 +1515,7 @@ EditorUi.prototype.getHtml2 = function(xml, graph, title, editLink, redirect) { var bg = null; - var js = EditorUi.drawHost + '/js/viewer.min.js'; + var js = window.DRAWIO_VIEWER_URL || EditorUi.drawHost + '/js/viewer.min.js'; var s = ''; // Makes XHTML compatible @@ -13586,10 +13586,13 @@ } catch (e) { - error(e); + if (error != null) + { + error(e); + } } } - else + else if (error != null) { error(); } @@ -13604,10 +13607,20 @@ { this.openDatabase(mxUtils.bind(this, function(db) { - var trx = db.transaction(['objects'], 'readwrite'); - var req = trx.objectStore('objects').put({key: key, data: data}); - req.onsuccess = success; - req.onerror = error; + try + { + var trx = db.transaction(['objects'], 'readwrite'); + var req = trx.objectStore('objects').put({key: key, data: data}); + req.onsuccess = success; + req.onerror = error; + } + catch (e) + { + if (error != null) + { + error(e); + } + } }), error); }; @@ -13632,25 +13645,35 @@ { this.openDatabase(mxUtils.bind(this, function(db) { - var trx = db.transaction(['objects'], 'readwrite'); - var req = trx.objectStore('objects').openCursor( - IDBKeyRange.lowerBound(0)); - var items = []; - - req.onsuccess = function(e) + try { - if (e.target.result == null) + var trx = db.transaction(['objects'], 'readwrite'); + var req = trx.objectStore('objects').openCursor( + IDBKeyRange.lowerBound(0)); + var items = []; + + req.onsuccess = function(e) { - success(items); - } - else + if (e.target.result == null) + { + success(items); + } + else + { + items.push(e.target.result.value); + e.target.result.continue(); + } + }; + + req.onerror = error; + } + catch (e) + { + if (error != null) { - items.push(e.target.result.value); - e.target.result.continue(); + error(e); } - }; - - req.onerror = error; + } }), error); }; diff --git a/src/main/webapp/js/diagramly/GitHubClient.js b/src/main/webapp/js/diagramly/GitHubClient.js index 63cbae17e..e41acb3c4 100644 --- a/src/main/webapp/js/diagramly/GitHubClient.js +++ b/src/main/webapp/js/diagramly/GitHubClient.js @@ -37,6 +37,11 @@ GitHubClient.prototype.baseUrl = 'https://api.github.com'; */ GitHubClient.prototype.maxFileSize = 1000000 /*1MB*/; +/** + * Name for the auth token header. + */ +GitHubClient.prototype.authToken = 'token'; + /** * Authorizes the client, gets the userId and calls <open>. */ @@ -51,11 +56,11 @@ GitHubClient.prototype.updateUser = function(success, error, failOnAuth) }), this.ui.timeout); var userReq = new mxXmlRequest(this.baseUrl + '/user', null, 'GET'); - var temp = this.token; + var temp = this.authToken + ' ' + this.token; userReq.setRequestHeaders = function(request, params) { - request.setRequestHeader('Authorization', 'token ' + temp); + request.setRequestHeader('Authorization', temp); }; userReq.send(mxUtils.bind(this, function() @@ -258,11 +263,11 @@ GitHubClient.prototype.executeRequest = function(req, success, error, ignoreNotF error({code: App.ERROR_TIMEOUT, retry: fn}); }), this.ui.timeout); - var temp = this.token; + var temp = this.authToken + ' ' + this.token; req.setRequestHeaders = function(request, params) { - request.setRequestHeader('Authorization', 'token ' + temp); + request.setRequestHeader('Authorization', temp); }; req.send(mxUtils.bind(this, function() diff --git a/src/main/webapp/js/diagramly/GitLabClient.js b/src/main/webapp/js/diagramly/GitLabClient.js index 2e98f6ac0..3e2cc6b30 100644 --- a/src/main/webapp/js/diagramly/GitLabClient.js +++ b/src/main/webapp/js/diagramly/GitLabClient.js @@ -25,6 +25,11 @@ GitLabClient.prototype.scope = 'api%20read_repository%20write_repository'; */ GitLabClient.prototype.baseUrl = DRAWIO_GITLAB_URL + '/api/v4'; +/** + * Name for the auth token header. + */ +GitLabClient.prototype.authToken = 'Bearer'; + /** * Authorizes the client, gets the userId and calls <open>. */ @@ -122,11 +127,11 @@ GitLabClient.prototype.executeRequest = function(req, success, error, ignoreNotF error({code: App.ERROR_TIMEOUT, message: mxResources.get('timeout')}); }), this.ui.timeout); - var temp = this.token; + var temp = this.authToken + ' ' + this.token; req.setRequestHeaders = function(request, params) { - request.setRequestHeader('Authorization', 'Bearer ' + temp); + request.setRequestHeader('Authorization', temp); request.setRequestHeader('PRIVATE_TOKEN', temp); request.setRequestHeader('Content-Type', 'application/json'); }; diff --git a/src/main/webapp/js/diagramly/Init.js b/src/main/webapp/js/diagramly/Init.js index 2b5f50aac..5ca8a4f3c 100644 --- a/src/main/webapp/js/diagramly/Init.js +++ b/src/main/webapp/js/diagramly/Init.js @@ -27,7 +27,8 @@ window.DRAWIO_GITLAB_ID = window.DRAWIO_GITLAB_ID || '5cdc018a32acddf6eba37592d9 window.SAVE_URL = window.SAVE_URL || 'save'; window.OPEN_URL = window.OPEN_URL || 'open'; window.PROXY_URL = window.PROXY_URL || 'proxy'; -window.VIEWER_URL = null; +window.DRAWIO_BASE_URL = window.DRAWIO_BASE_URL || 'https://www.draw.io'; +window.DRAWIO_VIEWER_URL = window.DRAWIO_VIEWER_URL || null; // Paths and files window.SHAPES_PATH = window.SHAPES_PATH || 'shapes'; diff --git a/src/main/webapp/js/diagramly/Menus.js b/src/main/webapp/js/diagramly/Menus.js index 5a093e2a0..c67705229 100644 --- a/src/main/webapp/js/diagramly/Menus.js +++ b/src/main/webapp/js/diagramly/Menus.js @@ -1024,16 +1024,131 @@ layoutMenu.funct = function(menu, parent) { layoutMenuFunct.apply(this, arguments); + + menu.addSeparator(parent); - if (urlParams['orgLayout'] == '1') + menu.addItem(mxResources.get('orgChart') + '...', null, function() { - menu.addItem('Org. Chart', null, function() + var branchOptimizer = null, parentChildSpacingVal = 20, siblingSpacingVal = 20, notExecuted = true; + + function doLayout() { - var graph = editorUi.editor.graph; - var orgChartLayout = new mxOrgChartLayout(graph); - orgChartLayout.execute(graph.getDefaultParent()); - }, parent, null, isGraphEnabled()); - } + if (typeof mxOrgChartLayout !== 'undefined' && branchOptimizer != null && notExecuted) + { + var graph = editorUi.editor.graph; + var orgChartLayout = new mxOrgChartLayout(graph, branchOptimizer, parentChildSpacingVal, siblingSpacingVal); + orgChartLayout.execute(graph.getDefaultParent()); + notExecuted = false; + } + }; + + var div = document.createElement('div'); + + var title = document.createElement('div'); + title.style.marginTop = '6px'; + title.style.display = 'inline-block'; + title.style.width = '140px'; + mxUtils.write(title, mxResources.get('orgChartType') + ': '); + + div.appendChild(title); + + var typeSelect = document.createElement('select'); + typeSelect.style.width = '200px'; + typeSelect.style.boxSizing = 'border-box'; + + //Types are hardcoded here since the code is not loaded yet + var typesArr = [mxResources.get('linear'), + mxResources.get('hanger2'), + mxResources.get('hanger4'), + mxResources.get('fishbone1'), + mxResources.get('fishbone2'), + mxResources.get('1ColumnLeft'), + mxResources.get('1ColumnRight'), + mxResources.get('smart') + ]; + + for (var i = 0; i < typesArr.length; i++) + { + var option = document.createElement('option'); + mxUtils.write(option, typesArr[i]); + option.value = i; + + if (i == 2) + { + option.setAttribute('selected', 'selected'); + } + + typeSelect.appendChild(option); + } + + mxEvent.addListener(typeSelect, 'change', function() + { + branchOptimizer = typeSelect.value; + }); + + div.appendChild(typeSelect); + + title = document.createElement('div'); + title.style.marginTop = '6px'; + title.style.display = 'inline-block'; + title.style.width = '140px'; + mxUtils.write(title, mxResources.get('parentChildSpacing') + ': '); + div.appendChild(title); + + var parentChildSpacing = document.createElement('input'); + parentChildSpacing.type = 'number'; + parentChildSpacing.value = parentChildSpacingVal; + parentChildSpacing.style.width = '200px'; + parentChildSpacing.style.boxSizing = 'border-box'; + div.appendChild(parentChildSpacing); + + mxEvent.addListener(parentChildSpacing, 'change', function() + { + parentChildSpacingVal = parentChildSpacing.value; + }); + + title = document.createElement('div'); + title.style.marginTop = '6px'; + title.style.display = 'inline-block'; + title.style.width = '140px'; + mxUtils.write(title, mxResources.get('siblingSpacing') + ': '); + div.appendChild(title); + + var siblingSpacing = document.createElement('input'); + siblingSpacing.type = 'number'; + siblingSpacing.value = siblingSpacingVal; + siblingSpacing.style.width = '200px'; + siblingSpacing.style.boxSizing = 'border-box'; + div.appendChild(siblingSpacing); + + mxEvent.addListener(siblingSpacing, 'change', function() + { + siblingSpacingVal = siblingSpacing.value; + }); + + var dlg = new CustomDialog(editorUi, div, function() + { + if (branchOptimizer == null) branchOptimizer = 2; + doLayout(); + }); + editorUi.showDialog(dlg.container, 355, 125, true, true); + + var delayed = function() + { + editorUi.loadingOrgChart = false; + doLayout(); + }; + + if (typeof mxOrgChartLayout === 'undefined' && !editorUi.loadingOrgChart && !editorUi.isOffline(true)) + { + editorUi.loadingOrgChart = true; + mxscript('js/orgchart.min.js', delayed); + } + else + { + delayed(); + } + }, parent, null, isGraphEnabled()); menu.addSeparator(parent); editorUi.menus.addMenuItem(menu, 'runLayout', parent, null, null, mxResources.get('apply') + '...'); diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar-LeanMapping.js b/src/main/webapp/js/diagramly/sidebar/Sidebar-LeanMapping.js index c4bfaa50f..dfff7d007 100644 --- a/src/main/webapp/js/diagramly/sidebar/Sidebar-LeanMapping.js +++ b/src/main/webapp/js/diagramly/sidebar/Sidebar-LeanMapping.js @@ -112,7 +112,7 @@ this.createEdgeTemplateEntry('shape=mxgraph.lean_mapping.electronic_info_flow_edge;html=1;', 100, 100, 'Monthly', 'Electronic Information', null, this.getTagsForStencil(gn, 'electronic_info_flow_edge', dt).join(' ')) ]; - this.addPalette('lean_mapping', mxResources.get('leanMapping'), false, mxUtils.bind(this, function(content) + this.addPalette('lean_mapping', 'Value Stream Mapping', false, mxUtils.bind(this, function(content) { for (var i = 0; i < fns.length; i++) { diff --git a/src/main/webapp/js/diagramly/sidebar/Sidebar.js b/src/main/webapp/js/diagramly/sidebar/Sidebar.js index 901a51e1e..0c91712cc 100644 --- a/src/main/webapp/js/diagramly/sidebar/Sidebar.js +++ b/src/main/webapp/js/diagramly/sidebar/Sidebar.js @@ -433,8 +433,8 @@ entries: [{title: 'ArchiMate 3.0', id: 'archimate3', image: IMAGE_PATH + '/sidebar-archimate3.png'}, {title: mxResources.get('archiMate21'), id: 'archimate', image: IMAGE_PATH + '/sidebar-archimate.png'}, {title: mxResources.get('bpmn'), id: 'bpmn', image: IMAGE_PATH + '/sidebar-bpmn.png'}, - {title: mxResources.get('leanMapping'), id: 'lean_mapping', image: IMAGE_PATH + '/sidebar-leanmapping.png'}, - {title: mxResources.get('sysml'), id: 'sysml', image: IMAGE_PATH + '/sidebar-sysml.png'}]}, + {title: mxResources.get('sysml'), id: 'sysml', image: IMAGE_PATH + '/sidebar-sysml.png'}, + {title: 'Value Stream Mapping', id: 'lean_mapping', image: IMAGE_PATH + '/sidebar-leanmapping.png'}]}, {title: mxResources.get('other'), entries: [{title: mxResources.get('cabinets'), id: 'cabinets', image: IMAGE_PATH + '/sidebar-cabinets.png'}, {title: 'Infographic', id: 'infographic', image: IMAGE_PATH + '/sidebar-infographic.png'}, @@ -1083,7 +1083,6 @@ this.addArchimate3Palette(); this.addArchiMatePalette(); this.addBpmnPalette(dir, false); - this.addLeanMappingPalette(); for (var i = 0; i < sysml.length; i++) { @@ -1137,6 +1136,8 @@ } } + this.addLeanMappingPalette(); + this.addCabinetsPalette(); this.addInfographicPalette(); diff --git a/src/main/webapp/js/orgchart.min.js b/src/main/webapp/js/orgchart.min.js new file mode 100644 index 000000000..923778aaa --- /dev/null +++ b/src/main/webapp/js/orgchart.min.js @@ -0,0 +1,33 @@ +/** + * @version : 15.6.0 - Bridge.NET + * @author : Object.NET, Inc. http://bridge.net/ + * @date : 2016-12-12 + * @copyright : Copyright 2008-2016 Object.NET, Inc. http://object.net/ + * @license : See license.txt and https://github.com/bridgedotnet/Bridge/blob/master/LICENSE.md + */ +(function(n){"use strict";var bt={global:n,emptyFn:function(){},identity:function(n){return n},geti:function(n,t,i){return Bridge.hasValue(n[t])?t:i},literal:function(n,t){return t.$getType=function(){return n},t},isPlainObject:function(n){if(typeof n=="object"&&n!==null){if(typeof Object.getPrototypeOf=="function"){var t=Object.getPrototypeOf(n);return t===Object.prototype||t===null}return Object.prototype.toString.call(n)==="[object Object]"}return!1},toPlain:function(n){var i,t,r,u,f;if(!n||Bridge.isPlainObject(n)||typeof n!="object")return n;if(typeof n.toJSON=="function")return n.toJSON();if(Bridge.isArray(n)){for(i=[],t=0;t<n.length;t++)i.push(Bridge.toPlain(n[t]));return i}r={};for(f in n)u=n[f],Bridge.isFunction(u)||(r[f]=u);return r},ref:function(n,t){Bridge.isArray(t)&&(t=System.Array.toIndex(n,t));var i={};return Object.defineProperty(i,"v",{get:function(){return n[t]},set:function(i){n[t]=i}}),i},property:function(n,t,i,r){n[t]=i;var s=t.charAt(0)==="$",f=s?t.slice(1):t,e="get"+f,o="set"+f,u=t.lastIndexOf("$"),h=u>0&&t.length-u-1>0&&!isNaN(parseInt(t.substr(u+1)));h&&(u=t.substring(0,u-1).lastIndexOf("$"));u>0&&u!==t.length-1&&(e=t.substring(0,u)+"get"+t.substr(u+1),o=t.substring(0,u)+"set"+t.substr(u+1));n[e]=function(n,t,i){return i?function(){return t[n]}:function(){return this[n]}}(t,n,r);n[o]=function(n,t,i){return i?function(i){t[n]=i}:function(t){this[n]=t}}(t,n,r)},event:function(n,t,i,r){n[t]=i;var s=t.charAt(0)==="$",f=s?t.slice(1):t,e="add"+f,o="remove"+f,u=t.lastIndexOf("$"),h=u>0&&t.length-u-1>0&&!isNaN(parseInt(t.substr(u+1)));h&&(u=t.substring(0,u-1).lastIndexOf("$"));u>0&&u!==t.length-1&&(e=t.substring(0,u)+"add"+t.substr(u+1),o=t.substring(0,u)+"remove"+t.substr(u+1));n[e]=function(n,t,i){return i?function(i){t[n]=Bridge.fn.combine(t[n],i)}:function(t){this[n]=Bridge.fn.combine(this[n],t)}}(t,n,r);n[o]=function(n,t,i){return i?function(i){t[n]=Bridge.fn.remove(t[n],i)}:function(t){this[n]=Bridge.fn.remove(this[n],t)}}(t,n,r)},createInstance:function(n,t){return n===System.Decimal?System.Decimal.Zero:n===System.Int64?System.Int64.Zero:n===System.UInt64?System.UInt64.Zero:n===System.Double||n===System.Single||n===System.Byte||n===System.SByte||n===System.Int16||n===System.UInt16||n===System.Int32||n===System.UInt32||n===Bridge.Int?0:typeof n.getDefaultValue=="function"?n.getDefaultValue():n===Boolean?!1:n===Date?new Date(0):n===Number?0:n===String?"":n&&n.$literal?n.ctor():t&&t.length>0?Bridge.Reflection.applyConstructor(n,t):new n},clone:function(n){if(Bridge.isArray(n))return System.Array.clone(n);if(Bridge.isString(n))return n;var t;return Bridge.isFunction(n[t="System$ICloneable$clone"])?n[t]():Bridge.is(n,System.ICloneable)?n.clone():null},copy:function(n,t,i,r){typeof i=="string"&&(i=i.split(/[,;\s]+/));for(var u,f=0,e=i?i.length:0;f<e;f++)u=i[f],(r!==!0||n[u]==undefined)&&(n[u]=Bridge.is(t[u],System.ICloneable)?Bridge.clone(t[u]):t[u]);return n},get:function(n){return n&&n.$staticInit!==null&&n.$staticInit(),n},ns:function(n,t){var r=n.split("."),i=0;for(t||(t=Bridge.global),i=0;i<r.length;i++)typeof t[r[i]]=="undefined"&&(t[r[i]]={}),t=t[r[i]];return t},ready:function(n,t){var i=function(){t?n.apply(t):n()};if(typeof Bridge.global.jQuery!="undefined")Bridge.global.jQuery(i);else if(typeof Bridge.global.document=="undefined"||Bridge.global.document.readyState==="complete"||Bridge.global.document.readyState==="loaded")i();else Bridge.on("DOMContentLoaded",Bridge.global.document,i)},on:function(n,t,i,r){var u=function(n){var t=i.apply(r||this,arguments);return t===!1&&(n.stopPropagation(),n.preventDefault()),t},f=function(){var n=i.call(r||t,Bridge.global.event);return n===!1&&(Bridge.global.event.returnValue=!1,Bridge.global.event.cancelBubble=!0),n};t.addEventListener?t.addEventListener(n,u,!1):t.attachEvent("on"+n,f)},addHash:function(n,t,i){if(isNaN(t)&&(t=17),isNaN(i)&&(i=23),Bridge.isArray(n)){for(var r=0;r<n.length;r++)t=t+((t*i|0)+(n[r]==null?0:Bridge.getHashCode(n[r])))|0;return t}return t+((t*i|0)+(n==null?0:Bridge.getHashCode(n)))|0},getHashCode:function(n,t,i){var o,u,f,r,s,e;if(Bridge.isEmpty(n,!0)){if(t)return 0;throw new System.InvalidOperationException("HashCode cannot be calculated for empty value");}if(i!==!1&&n.hasOwnProperty("item1")&&Bridge.isPlainObject(n)&&(i=!0),n.getHashCode&&Bridge.isFunction(n.getHashCode)&&!n.__insideHashCode&&n.getHashCode.length===0)return n.__insideHashCode=!0,o=n.getHashCode(),delete n.__insideHashCode,o;if(Bridge.isBoolean(n))return n?1:0;if(Bridge.isDate(n))return n.valueOf()&4294967295;if(n===Number.POSITIVE_INFINITY)return 2146435072;if(n===Number.NEGATIVE_INFINITY)return 4293918720;if(Bridge.isNumber(n)){if(Math.floor(n)===n)return n;n=n.toExponential()}if(Bridge.isString(n)){for(u=0,f=0;f<n.length;f++)u=(u<<5)-u+n.charCodeAt(f)&4294967295;return u}if(n.$$hashCode)return n.$$hashCode;if(i&&typeof n=="object"){r=0;for(e in n)n.hasOwnProperty(e)&&(s=Bridge.isEmpty(n[e],!0)?0:Bridge.getHashCode(n[e]),r=29*r+s);if(r!==0)return n.$$hashCode=r,r}return n.$$hashCode=Math.random()*4294967296|0,n.$$hashCode},getDefaultValue:function(n){return n.getDefaultValue&&n.getDefaultValue.length===0?n.getDefaultValue():n===Boolean?!1:n===Date?new Date(-864e13):n===Number?0:null},getTypeAlias:function(n){var t=n.$$name||Bridge.getTypeName(n);return t.replace(/[\.\(\)\,]/g,"$")},getTypeName:function(n){return Bridge.Reflection.getTypeFullName(n)},hasValue:function(n){return n!=null},hasValue$1:function(){if(arguments.length===0)return!1;var n=0;for(n;n<arguments.length;n++)if(arguments[n]==null)return!1;return!0},is:function(n,t,i,r){var u,e,o,s,f;if(n==null)return!!r;if(u=n.constructor,t.constructor===Function&&n instanceof t||u===t)return!0;if(e=u.$kind||u.$$inherits,o=t.$kind,e||o){if(s=t.$isInterface,s){if(e)return u.$isArrayEnumerator?System.Array.is(n,t):t.isAssignableFrom?t.isAssignableFrom(u):Bridge.Reflection.getInterfaces(u).indexOf(t)>=0;if(Bridge.isArray(n,u))return System.Array.is(n,t);if(u===String)return System.String.is(n,t)}return i!==!0&&t.$is?t.$is(n):t.$literal&&Bridge.isPlainObject(n)?n.$getType?Bridge.Reflection.isAssignableFrom(t,n.$getType()):!0:!1}if(f=typeof t,f==="boolean")return t;if(f==="string"&&(t=Bridge.unroll(t)),f==="function"&&Bridge.getType(n).prototype instanceof t)return!0;if(i!==!0){if(typeof t.$is=="function")return t.$is(n);if(typeof t.isAssignableFrom=="function")return t.isAssignableFrom(Bridge.getType(n))}return Bridge.isArray(n)?System.Array.is(n,t):f==="object"&&(u===t||n instanceof t)},as:function(n,t,i){return Bridge.is(n,t,!1,i)?n:null},cast:function(n,t,i){if(n==null)return n;var r=Bridge.is(n,t,!1,i)?n:null;if(r===null)throw new System.InvalidCastException("Unable to cast type "+(n?Bridge.getTypeName(n):"'null'")+" to type "+Bridge.getTypeName(t));return r},apply:function(n,t){for(var u=Bridge.getPropertyNames(t,!0),i,r=0;r<u.length;r++)i=u[r],typeof n[i]=="function"&&typeof t[i]!="function"?n[i](t[i]):n[i]=t[i];return n},merge:function(n,t,i,r){var u,o,f,h,c,e,s;if(n instanceof System.Decimal&&Bridge.isNumber(t))return new System.Decimal(t);if(n instanceof System.Int64&&Bridge.isNumber(t))return new System.Int64(t);if(n instanceof System.UInt64&&Bridge.isNumber(t))return new System.UInt64(t);if(n instanceof Boolean||Bridge.isBoolean(n)||n instanceof Number||Bridge.isNumber(n)||n instanceof String||Bridge.isString(n)||n instanceof Function||Bridge.isFunction(n)||n instanceof Date||Bridge.isDate(n)||Bridge.isNumber(n)||n instanceof System.Double||n instanceof System.Single||n instanceof System.Byte||n instanceof System.SByte||n instanceof System.Int16||n instanceof System.UInt16||n instanceof System.Int32||n instanceof System.UInt32||n instanceof Bridge.Int||n instanceof System.Decimal)return t;if(Bridge.isArray(t)&&Bridge.isFunction(n.add||n.push))for(c=Bridge.isArray(n)?n.push:n.add,o=0;o<t.length;o++)e=t[o],Bridge.isArray(e)||(e=[typeof r=="undefined"?e:Bridge.merge(r(),e)]),c.apply(n,e);else for(u in t)f=t[u],typeof n[u]=="function"?u.match(/^\s*get[A-Z]/)?Bridge.merge(n[u](),f):n[u](f):(s="set"+u.charAt(0).toUpperCase()+u.slice(1),typeof n[s]=="function"&&typeof f!="function"?n[s](f):f&&f.constructor===Object&&n[u]?(h=n[u],Bridge.merge(h,f)):n[u]=f);return i&&i.call(n,n),n},getEnumerator:function(n,t,i){if(typeof n=="string"&&(n=System.String.toCharArray(n)),arguments.length===2&&Bridge.isFunction(t)&&(i=t,t=null),t&&n&&n[t])return n[t].call(n);if(!i&&n&&n.getEnumerator)return n.getEnumerator();var r;if(i&&Bridge.isFunction(n[r="System$Collections$Generic$IEnumerable$1$"+Bridge.getTypeAlias(i)+"$getEnumerator"])||Bridge.isFunction(n[r="System$Collections$IEnumerable$getEnumerator"]))return n[r]();if(i&&n&&n.getEnumerator)return n.getEnumerator();if(Object.prototype.toString.call(n)==="[object Array]"||n&&Bridge.isDefined(n.length))return new Bridge.ArrayEnumerator(n,i);throw new System.InvalidOperationException("Cannot create enumerator");},getPropertyNames:function(n,t){var i=[];for(var r in n)(t||typeof n[r]!="function")&&i.push(r);return i},isDefined:function(n,t){return typeof n!="undefined"&&(t?n!==null:!0)},isEmpty:function(n,t){return typeof n=="undefined"||n===null||(t?!1:n==="")||(!t&&Bridge.isArray(n)?n.length===0:!1)},toArray:function(n){var t,r,u,i=[];if(Bridge.isArray(n))for(t=0,u=n.length;t<u;++t)i.push(n[t]);else for(t=Bridge.getEnumerator(n);t.moveNext();)r=t.getCurrent(),i.push(r);return i},toList:function(n,t){return new(System.Collections.Generic.List$1(t||Object))(n)},arrayTypes:[n.Array,n.Uint8Array,n.Int8Array,n.Int16Array,n.Uint16Array,n.Int32Array,n.Uint32Array,n.Float32Array,n.Float64Array,n.Uint8ClampedArray],isArray:function(n,t){var i=t||(n!=null?n.constructor:null);return i?Bridge.arrayTypes.indexOf(i)>=0:!1},isFunction:function(n){return typeof n=="function"},isDate:function(n){return Object.prototype.toString.call(n)==="[object Date]"},isNull:function(n){return n===null||n===undefined},isBoolean:function(n){return typeof n=="boolean"},isNumber:function(n){return typeof n=="number"&&isFinite(n)},isString:function(n){return typeof n=="string"},unroll:function(n){var r=n.split("."),t=Bridge.global[r[0]],i=1;for(i;i<r.length;i++){if(!t)return null;t=t[r[i]]}return t},referenceEquals:function(n,t){return Bridge.hasValue(n)?n===t:!Bridge.hasValue(t)},staticEquals:function(n,t){return Bridge.hasValue(n)?Bridge.hasValue(t)?Bridge.equals(n,t):!1:!Bridge.hasValue(t)},equals:function(n,t){if(n==null&&t==null)return!0;if(n&&Bridge.isFunction(n.equals)&&n.equals.length===1)return n.equals(t);if(t&&Bridge.isFunction(t.equals)&&t.equals.length===1)return t.equals(n);if(Bridge.isDate(n)&&Bridge.isDate(t))return n.valueOf()===t.valueOf();if(Bridge.isNull(n)&&Bridge.isNull(t))return!0;if(Bridge.isNull(n)!==Bridge.isNull(t))return!1;var i=n===t;return!i&&typeof n=="object"&&typeof t=="object"&&n!==null&&t!==null&&n.$kind==="struct"&&t.$kind==="struct"&&n.$$name===t.$$name?Bridge.getHashCode(n)===Bridge.getHashCode(t)&&Bridge.objectEquals(n,t):!i&&n&&t&&n.hasOwnProperty("item1")&&Bridge.isPlainObject(n)&&t.hasOwnProperty("item1")&&Bridge.isPlainObject(t)?Bridge.objectEquals(n,t):i},objectEquals:function(n,t){Bridge.$$leftChain=[];Bridge.$$rightChain=[];var i=Bridge.deepEquals(n,t);return delete Bridge.$$leftChain,delete Bridge.$$rightChain,i},deepEquals:function(n,t){if(typeof n=="object"&&typeof t=="object"){if(n===t)return!0;if(Bridge.$$leftChain.indexOf(n)>-1||Bridge.$$rightChain.indexOf(t)>-1)return!1;for(var i in t)if(t.hasOwnProperty(i)!==n.hasOwnProperty(i)||typeof t[i]!=typeof n[i])return!1;for(i in n){if(t.hasOwnProperty(i)!==n.hasOwnProperty(i)||typeof n[i]!=typeof t[i])return!1;if(n[i]===t[i])continue;else if(typeof n[i]=="object"){if(Bridge.$$leftChain.push(n),Bridge.$$rightChain.push(t),!Bridge.deepEquals(n[i],t[i]))return!1;Bridge.$$leftChain.pop();Bridge.$$rightChain.pop()}else if(!Bridge.equals(n[i],t[i]))return!1}return!0}return Bridge.equals(n,t)},compare:function(n,t,i,r){if(Bridge.isDefined(n,!0)){if(Bridge.isNumber(n)||Bridge.isString(n)||Bridge.isBoolean(n))return Bridge.isString(n)&&!Bridge.hasValue(t)?1:n<t?-1:n>t?1:0;if(Bridge.isDate(n))return Bridge.compare(n.valueOf(),t.valueOf())}else{if(i)return 0;throw new System.NullReferenceException;}var u;if(r&&Bridge.isFunction(n[u="System$IComparable$1$"+Bridge.getTypeAlias(r)+"$compareTo"])||Bridge.isFunction(n[u="System$IComparable$compareTo"]))return n[u](t);if(Bridge.isFunction(n.compareTo))return n.compareTo(t);if(r&&Bridge.isFunction(t[u="System$IComparable$1$"+Bridge.getTypeAlias(r)+"$compareTo"])||Bridge.isFunction(t[u="System$IComparable$compareTo"]))return-t[u](n);if(Bridge.isFunction(t.compareTo))return-t.compareTo(n);if(i)return 0;throw new System.Exception("Cannot compare items");},equalsT:function(n,t,i){if(Bridge.isDefined(n,!0)){if(Bridge.isNumber(n)||Bridge.isString(n)||Bridge.isBoolean(n))return n===t;if(Bridge.isDate(n))return n.valueOf()===t.valueOf()}else throw new System.NullReferenceException;var r;return i&&n!=null&&Bridge.isFunction(n[r="System$IEquatable$1$"+Bridge.getTypeAlias(i)+"$equalsT"])?n[r](t):i&&t!=null&&Bridge.isFunction(t[r="System$IEquatable$1$"+Bridge.getTypeAlias(i)+"$equalsT"])?t[r](n):n.equalsT?n.equalsT(t):t.equalsT(n)},format:function(n,t,i){if(Bridge.isNumber(n))return Bridge.Int.format(n,t,i);if(Bridge.isDate(n))return Bridge.Date.format(n,t,i);var r;return Bridge.isFunction(n[r="System$IFormattable$format"])?n[r](t,i):n.format(t,i)},getType:function(n){if(n==null)throw new System.NullReferenceException("instance is null");if(typeof n=="number")return!isNaN(n)&&isFinite(n)&&Math.floor(n,0)===n?System.Int32:System.Double;if(n.$getType)return n.$getType();try{return n.constructor}catch(t){return Object}},isLower:function(n){var t=String.fromCharCode(n);return t===t.toLowerCase()&&t!==t.toUpperCase()},isUpper:function(n){var t=String.fromCharCode(n);return t!==t.toLowerCase()&&t===t.toUpperCase()},coalesce:function(n,t){return Bridge.hasValue(n)?n:t},fn:{equals:function(n){return this===n?!0:n==null||this.constructor!==n.constructor?!1:this.equals===n.equals&&this.$method===n.$method&&this.$scope===n.$scope},call:function(n,t){var i=Array.prototype.slice.call(arguments,2);return n=n||Bridge.global,n[t].apply(n,i)},makeFn:function(n,t){switch(t){case 0:return function(){return n.apply(this,arguments)};case 1:return function(){return n.apply(this,arguments)};case 2:return function(){return n.apply(this,arguments)};case 3:return function(){return n.apply(this,arguments)};case 4:return function(){return n.apply(this,arguments)};case 5:return function(){return n.apply(this,arguments)};case 6:return function(){return n.apply(this,arguments)};case 7:return function(){return n.apply(this,arguments)};case 8:return function(){return n.apply(this,arguments)};case 9:return function(){return n.apply(this,arguments)};case 10:return function(){return n.apply(this,arguments)};case 11:return function(){return n.apply(this,arguments)};case 12:return function(){return n.apply(this,arguments)};case 13:return function(){return n.apply(this,arguments)};case 14:return function(){return n.apply(this,arguments)};case 15:return function(){return n.apply(this,arguments)};case 16:return function(){return n.apply(this,arguments)};case 17:return function(){return n.apply(this,arguments)};case 18:return function(){return n.apply(this,arguments)};case 19:return function(){return n.apply(this,arguments)};default:return function(){return n.apply(this,arguments)}}},bind:function(n,t,i,r){var f,u;if(t&&t.$method===t&&t.$scope===n)return t;if(n&&n.$$bind)for(f=0;f<n.$$bind.length;f++)if(n.$$bind[f].$method===t)return n.$$bind[f];return u=arguments.length===2?Bridge.fn.makeFn(function(){Bridge.caller.unshift(this);var i=t.apply(n,arguments);return Bridge.caller.shift(this),i},t.length):Bridge.fn.makeFn(function(){var u=i||arguments,f;return r===!0?(u=Array.prototype.slice.call(arguments,0),u=u.concat(i)):typeof r=="number"&&(u=Array.prototype.slice.call(arguments,0),r===0?u.unshift.apply(u,i):r<u.length?u.splice.apply(u,[r,0].concat(i)):u.push.apply(u,i)),Bridge.caller.unshift(this),f=t.apply(n,u),Bridge.caller.shift(this),f},t.length),n&&(n.$$bind=n.$$bind||[],n.$$bind.push(u)),u.$method=t,u.$scope=n,u.equals=Bridge.fn.equals,u},bindScope:function(n,t){var i=Bridge.fn.makeFn(function(){var i=Array.prototype.slice.call(arguments,0),r;return i.unshift.apply(i,[n]),Bridge.caller.unshift(this),r=t.apply(n,i),Bridge.caller.shift(this),r},t.length);return i.$method=t,i.$scope=n,i.equals=Bridge.fn.equals,i},$build:function(n){var t=function(){for(var i=t.$invocationList,r=null,u,n=0;n<i.length;n++)u=i[n],r=u.apply(null,arguments);return r};return(t.$invocationList=n?Array.prototype.slice.call(n,0):[],t.$invocationList.length===0)?null:t},combine:function(n,t){if(!n||!t)return n||t;var i=n.$invocationList?n.$invocationList:[n],r=t.$invocationList?t.$invocationList:[t];return Bridge.fn.$build(i.concat(r))},getInvocationList:function(){},remove:function(n,t){if(!n||!t)return n||null;for(var r=n.$invocationList?n.$invocationList:[n],f=t.$invocationList?t.$invocationList:[t],e=[],o,u,i=r.length-1;i>=0;i--){for(o=!1,u=0;u<f.length;u++)if(r[i]===f[u]||r[i].$method&&r[i].$method===f[u].$method&&r[i].$scope&&r[i].$scope===f[u].$scope){o=!0;break}o||e.push(r[i])}return e.reverse(),Bridge.fn.$build(e)}},sleep:function(n,t){if(Bridge.hasValue(t)&&(n=t.getTotalMilliseconds()),isNaN(n)||n<-1||n>2147483647)throw new System.ArgumentOutOfRangeException("timeout","Number must be either non-negative and less than or equal to Int32.MaxValue or -1");n==-1&&(n=2147483647);for(var i=(new Date).getTime();(new Date).getTime()-i<n;)if((new Date).getTime()-i>2147483647)break},getMetadata:function(n){return n.$getMetadata?n.$getMetadata():n.$metadata}},nt,s,at,o,vt,yt,pt,k,wt,t;n.Bridge=bt;n.Bridge.caller=[];n.System={};n.System.Diagnostics={};n.System.Diagnostics.Contracts={};n.System.Threading={};nt={is:function(n,t){return Bridge.isString(n)?n.constructor===t||n instanceof t?!0:t===System.ICloneable||t===System.Collections.IEnumerable||t===System.Collections.Generic.IEnumerable$1(System.Char)||t===System.IComparable$1(String)||t===System.IEquatable$1(String)?!0:!1:!1},lastIndexOf:function(n,t,i,r){var u=n.lastIndexOf(t,i);return u<i-r+1?-1:u},lastIndexOfAny:function(n,t,i,r){var e=n.length,f,u;if(!e)return-1;for(t=String.fromCharCode.apply(null,t),i=i||e-1,r=r||e,f=i-r+1,f<0&&(f=0),u=i;u>=f;u--)if(t.indexOf(n.charAt(u))>=0)return u;return-1},isNullOrWhiteSpace:function(n){return n?System.Char.isWhiteSpace(n):!0},isNullOrEmpty:function(n){return!n},fromCharCount:function(n,t){if(t>=0)return String(Array(t+1).join(String.fromCharCode(n)));throw new System.ArgumentOutOfRangeException("count","cannot be less than zero");},format:function(n){return System.String._format(System.Globalization.CultureInfo.getCurrentCulture(),n,Array.prototype.slice.call(arguments,1))},formatProvider:function(n,t){return System.String._format(n,t,Array.prototype.slice.call(arguments,2))},_format:function(n,t,i){var u=this,f=i,r=this.decodeBraceSequence;return t.replace(/(\{+)((\d+|[a-zA-Z_$]\w+(?:\.[a-zA-Z_$]\w+|\[\d+\])*)(?:\,(-?\d*))?(?:\:([^\}]*))?)(\}+)|(\{+)|(\}+)/g,function(t,i,e,o,s,h,c,l,a){return l?r(l):a?r(a):i.length%2==0||c.length%2==0?r(i)+e+r(c):r(i,!0)+u.handleElement(n,o,s,h,f)+r(c,!0)})},handleElement:function(n,t,i,r,u){var f;if(t=parseInt(t,10),t>u.length-1)throw new System.FormatException("Input string was not in a correct format.");return f=u[t],f==null&&(f=""),f=r&&Bridge.is(f,System.IFormattable)?Bridge.format(f,r,n):""+f,i&&(i=parseInt(i,10),Bridge.isNumber(i)||(i=null)),System.String.alignString(f.toString(),i)},decodeBraceSequence:function(n,t){return n.substr(0,(n.length+(t?0:1))/2)},alignString:function(n,t,i,r,u){if(!n||!t)return n;if(i||(i=" "),Bridge.isNumber(i)&&(i=String.fromCharCode(i)),r||(r=t<0?1:2),t=Math.abs(t),u&&n.length>t&&(n=n.substring(0,t)),t+1>=n.length)switch(r){case 2:n=Array(t+1-n.length).join(i)+n;break;case 3:var f=t-n.length,e=Math.ceil(f/2),o=f-e;n=Array(o+1).join(i)+n+Array(e+1).join(i);break;case 1:default:n=n+Array(t+1-n.length).join(i)}return n},startsWith:function(n,t){return t.length?t.length>n.length?!1:(t=System.String.escape(t),n.match("^"+t)!==null):!0},endsWith:function(n,t){return t.length?t.length>n.length?!1:(t=System.String.escape(t),n.match(t+"$")!==null):!0},contains:function(n,t){if(t==null)throw new System.ArgumentNullException;return n==null?!1:n.indexOf(t)>-1},indexOfAny:function(n,t){var i,r,e,u,o,f;if(t==null)throw new System.ArgumentNullException;if(n==null||n==="")return-1;if(i=arguments.length>2?arguments[2]:0,i<0)throw new System.ArgumentOutOfRangeException("startIndex","startIndex cannot be less than zero");if(r=arguments.length>3?arguments[3]:n.length-i,r<0)throw new System.ArgumentOutOfRangeException("length","must be non-negative");if(r>n.length-i)throw new System.ArgumentOutOfRangeException("Index and length must refer to a location within the string");for(e=n.substr(i,r),u=0;u<t.length;u++)if(o=String.fromCharCode(t[u]),f=e.indexOf(o),f>-1)return f+i;return-1},indexOf:function(n,t){var i,u,f,r;if(t==null)throw new System.ArgumentNullException;if(n==null||n==="")return-1;if(i=arguments.length>2?arguments[2]:0,i<0||i>n.length)throw new System.ArgumentOutOfRangeException("startIndex","startIndex cannot be less than zero and must refer to a location within the string");if(t==="")return arguments.length>2?i:0;if(u=arguments.length>3?arguments[3]:n.length-i,u<0)throw new System.ArgumentOutOfRangeException("length","must be non-negative");if(u>n.length-i)throw new System.ArgumentOutOfRangeException("Index and length must refer to a location within the string");return(f=n.substr(i,u),r=arguments.length===5&&arguments[4]%2!=0?f.toLocaleUpperCase().indexOf(t.toLocaleUpperCase()):f.indexOf(t),r>-1)?arguments.length===5?System.String.compare(t,f.substr(r,t.length),arguments[4])===0?r+i:-1:r+i:-1},equals:function(){return System.String.compare.apply(this,arguments)===0},compare:function(n,t){if(n==null)return t==null?0:-1;if(t==null)return 1;if(arguments.length>=3)if(Bridge.isBoolean(arguments[2])){if(arguments[2]&&(n=n.toLocaleUpperCase(),t=t.toLocaleUpperCase()),arguments.length===4)return n.localeCompare(t,arguments[3].name)}else switch(arguments[2]){case 1:return n.localeCompare(t,System.Globalization.CultureInfo.getCurrentCulture().name,{sensitivity:"accent"});case 2:return n.localeCompare(t,System.Globalization.CultureInfo.invariantCulture.name);case 3:return n.localeCompare(t,System.Globalization.CultureInfo.invariantCulture.name,{sensitivity:"accent"});case 4:return n===t?0:n>t?1:-1;case 5:return n.toUpperCase()===t.toUpperCase()?0:n.toUpperCase()>t.toUpperCase()?1:-1}return n.localeCompare(t)},toCharArray:function(n,t,i){var u,r;if(t<0||t>n.length||t>n.length-i)throw new System.ArgumentOutOfRangeException("startIndex","startIndex cannot be less than zero and must refer to a location within the string");if(i<0)throw new System.ArgumentOutOfRangeException("length","must be non-negative");for(Bridge.hasValue(t)||(t=0),Bridge.hasValue(i)||(i=n.length),u=[],r=t;r<t+i;r++)u.push(n.charCodeAt(r));return u},escape:function(n){return n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},replaceAll:function(n,t,i){var r=new RegExp(System.String.escape(t),"g");return n.replace(r,i)},insert:function(n,t,i){return n>0?t.substring(0,n)+i+t.substring(n,t.length):i+t},remove:function(n,t,i){if(n==null)throw new System.NullReferenceException;if(t<0)throw new System.ArgumentOutOfRangeException("startIndex","StartIndex cannot be less than zero");if(i!=null){if(i<0)throw new System.ArgumentOutOfRangeException("count","Count cannot be less than zero");if(i>n.length-t)throw new System.ArgumentOutOfRangeException("count","Index and count must refer to a location within the string");}else if(t>=n.length)throw new System.ArgumentOutOfRangeException("startIndex","startIndex must be less than length of string");return i==null||t+i>n.length?n.substr(0,t):n.substr(0,t)+n.substr(t+i)},split:function(n,t,i,r){for(var o=!Bridge.hasValue(t)||t.length===0?new RegExp("\\s","g"):new RegExp(t.map(System.String.escape).join("|"),"g"),f=[],e,u=0;;u=o.lastIndex)if(e=o.exec(n)){if(r!==1||e.index>u){if(f.length===i-1)return f.push(n.substr(u)),f;f.push(n.substring(u,e.index))}}else return(r!==1||u!==n.length)&&f.push(n.substr(u)),f},trimEnd:function(n,t){return n.replace(t?new RegExp("["+System.String.escape(String.fromCharCode.apply(null,t))+"]+$"):/\s*$/,"")},trimStart:function(n,t){return n.replace(t?new RegExp("^["+System.String.escape(String.fromCharCode.apply(null,t))+"]+"):/^\s*/,"")},trim:function(n,t){return System.String.trimStart(System.String.trimEnd(n,t),t)},concat:function(){for(var t,i="",n=0;n<arguments.length;n++)t=arguments[n],i+=t==null?"":t;return i}};System.String=nt;s={nameEquals:function(n,t,i){return i?n.toLowerCase()===t.toLowerCase():n.charAt(0).toLowerCase()+n.slice(1)===t.charAt(0).toLowerCase()+t.slice(1)},checkEnumType:function(n){if(!n)throw new System.ArgumentNullException("enumType");if(n.prototype&&n.$kind!=="enum")throw new System.ArgumentException("","enumType");},toName:function(n){return n},parse:function(n,t,i,r){var o,f,e,v,h,u;if(System.Enum.checkEnumType(n),o={},System.Int32.tryParse(t,o))return o.v;if(f=n,n.prototype&&n.prototype.$flags){var c=t.split(","),l=0,a=!0;for(e=c.length-1;e>=0;e--){v=c[e].trim();h=!1;for(u in f)if(s.nameEquals(u,v,i)){l|=f[u];h=!0;break}if(!h){a=!1;break}}if(a)return l}else for(u in f)if(s.nameEquals(u,t,i))return f[u];if(r!==!0)throw new System.ArgumentException("Invalid Enumeration Value");return null},toString:function(n,t,i){var u,e,f,r;if(n===Number)return t.toString();if(System.Enum.checkEnumType(n),u=n,e=System.Int64.is64Bit(t),(n.prototype&&n.prototype.$flags||i===!0)&&t!==0){f=[];for(r in u)(e&&System.Int64.is64Bit(u[r])?!u[r].and(t).isZero():u[r]&t)&&f.push(s.toName(r));return f.length?f.join(", "):t.toString()}for(r in u)if(e&&System.Int64.is64Bit(u[r])?u[r].eq(t):u[r]===t)return s.toName(r);return t.toString()},getValues:function(n){var r,t,i;System.Enum.checkEnumType(n);r=[];t=n;for(i in t)t.hasOwnProperty(i)&&i.indexOf("$")<0&&typeof t[i]!="function"&&r.push(t[i]);return r},format:function(n,t,i){System.Enum.checkEnumType(n);var r;if(!Bridge.hasValue(t)&&(r="value")||!Bridge.hasValue(i)&&(r="format"))throw new System.ArgumentNullException(r);switch(i){case"G":case"g":return System.Enum.toString(n,t);case"x":case"X":return t.toString(16);case"d":case"D":return t.toString();case"f":case"F":return System.Enum.toString(n,t,!0);default:throw new System.FormatException;}},getNames:function(n){var r,i,t;System.Enum.checkEnumType(n);r=[];i=n;for(t in i)i.hasOwnProperty(t)&&t.indexOf("$")<0&&typeof i[t]!="function"&&r.push(s.toName(t));return r},getName:function(n,t){var r,i;System.Enum.checkEnumType(n);r=n;for(i in r)if(r[i]===t)return i.charAt(0).toUpperCase()+i.slice(1);return null},hasFlag:function(n,t){return!!(n&t)},isDefined:function(n,t){var i,u,r;System.Enum.checkEnumType(n);i=n;u=Bridge.isString(t);for(r in i)if(u?s.nameEquals(r,t,!1):i[r]===t)return!0;return!1},tryParse:function(n,t,i,r){return(i.v=0,i.v=s.parse(n,t,r,!0),i.v==null)?!1:!0}};System.Enum=s;var i=function(n){return n.test(navigator.userAgent.toLowerCase())},tt=Bridge.global.document&&Bridge.global.document.compatMode==="CSS1Compat",v=function(n,t){var i;return n&&(i=t.exec(navigator.userAgent.toLowerCase()))?parseFloat(i[1]):0},r=Bridge.global.document?Bridge.global.document.documentMode:null,p=i(/opera/),kt=p&&i(/version\/10\.5/),it=i(/\bchrome\b/),d=i(/webkit/),c=!it&&i(/safari/),dt=c&&i(/applewebkit\/4/),gt=c&&i(/version\/3/),ni=c&&i(/version\/4/),ti=c&&i(/version\/5\.0/),ii=c&&i(/version\/5/),u=!p&&(i(/msie/)||i(/trident/)),e=u&&(i(/msie 7/)&&r!==8&&r!==9&&r!==10||r===7),h=u&&(i(/msie 8/)&&r!==7&&r!==9&&r!==10||r===8),l=u&&(i(/msie 9/)&&r!==7&&r!==8&&r!==10||r===9),w=u&&(i(/msie 10/)&&r!==7&&r!==8&&r!==9||r===10),rt=u&&(i(/trident\/7\.0/)&&r!==7&&r!==8&&r!==9&&r!==10||r===11),f=u&&i(/msie 6/),y=!d&&!u&&i(/gecko/),b=y&&i(/rv:1\.9/),ri=y&&i(/rv:2\.0/),ui=y&&i(/rv:5\./),fi=y&&i(/rv:10\./),ei=b&&i(/rv:1\.9\.0/),oi=b&&i(/rv:1\.9\.1/),si=b&&i(/rv:1\.9\.2/),ut=i(/windows|win32/),ft=i(/macintosh|mac os x/),et=i(/linux/),hi=v(!0,/\bchrome\/(\d+\.\d+)/),a=v(!0,/\bfirefox\/(\d+\.\d+)/),ci=v(u,/msie (\d+\.\d+)/),li=v(p,/version\/(\d+\.\d+)/),ai=v(c,/version\/(\d+\.\d+)/),vi=v(d,/webkit\/(\d+\.\d+)/),yi=Bridge.global.location?/^https/i.test(Bridge.global.location.protocol):!1,ot=/iPhone/i.test(navigator.platform),st=/iPod/i.test(navigator.platform),g=/iPad/i.test(navigator.userAgent),pi=/Blackberry/i.test(navigator.userAgent),ht=/Android/i.test(navigator.userAgent),ct=ft||ut||et&&!ht,lt=g,wi=!ct&&!lt,bi={isStrict:tt,isIEQuirks:u&&!tt&&(f||e||h||l),isOpera:p,isOpera10_5:kt,isWebKit:d,isChrome:it,isSafari:c,isSafari3:gt,isSafari4:ni,isSafari5:ii,isSafari5_0:ti,isSafari2:dt,isIE:u,isIE6:f,isIE7:e,isIE7m:f||e,isIE7p:u&&!f,isIE8:h,isIE8m:f||e||h,isIE8p:u&&!(f||e),isIE9:l,isIE9m:f||e||h||l,isIE9p:u&&!(f||e||h),isIE10:w,isIE10m:f||e||h||l||w,isIE10p:u&&!(f||e||h||l),isIE11:rt,isIE11m:f||e||h||l||w||rt,isIE11p:u&&!(f||e||h||l||w),isGecko:y,isGecko3:b,isGecko4:ri,isGecko5:ui,isGecko10:fi,isFF3_0:ei,isFF3_5:oi,isFF3_6:si,isFF4:4<=a&&a<5,isFF5:5<=a&&a<6,isFF10:10<=a&&a<11,isLinux:et,isWindows:ut,isMac:ft,chromeVersion:hi,firefoxVersion:a,ieVersion:ci,operaVersion:li,safariVersion:ai,webKitVersion:vi,isSecure:yi,isiPhone:ot,isiPod:st,isiPad:g,isBlackberry:pi,isAndroid:ht,isDesktop:ct,isTablet:lt,isPhone:wi,iOS:ot||g||st,standalone:Bridge.global.navigator?!!Bridge.global.navigator.standalone:!1};Bridge.Browser=bi;at={_initialize:function(){this.$initialized||(this.$initialized=Bridge.emptyFn,this.$staticInit&&this.$staticInit(),this.$initMembers&&this.$initMembers())},initConfig:function(n,t,i,r,u,f){var s,e,o,h;if(i.fields)for(e in i.fields)u[e]=i.fields[e];if(i.properties)for(e in i.properties)Bridge.property(u,e,i.properties[e],r);if(i.events)for(e in i.events)Bridge.event(u,e,i.events[e],r);if(i.alias)for(o=0;o<i.alias.length;o++)h=u[i.alias[o]],h===undefined&&f&&(h=f[i.alias[o]]),u[i.alias[o+1]]=h,o++;i.init&&(s=i.init);(s||n&&!r&&t.$initMembers)&&(u.$initMembers=function(){n&&!r&&t.$initMembers&&t.$initMembers.call(this);s&&s.call(this)})},definei:function(n,t,i){(i===!0||!i)&&t?t.$kind="interface":i?i.$kind="interface":t={$kind:"interface"};var r=Bridge.define(n,t,i);return r.$kind="interface",r.$isInterface=!0,r},define:function(n,t,i,r){var l=!1,c,u,ft,nt,p,w,tt,b,k,d,st,it,rt,ut;if(i===!0?(l=!0,i=t,t=Bridge.global):i||(i=t,t=Bridge.global),Bridge.isFunction(i))return c=function(){var t,r,f,u;return(r=Bridge.Class.getCachedType(c,arguments),r)?r.type:(t=Array.prototype.slice.call(arguments),f=i.apply(null,t),u=Bridge.define(Bridge.Class.genericName(n,t),f,!0,{fn:c,args:t}),Bridge.Class.staticInitAllow||Bridge.Class.$queue.push(u),Bridge.get(u))},c.$cache=[],Bridge.Class.generic(n,t,c,i.length);l||(Bridge.Class.staticInitAllow=!1);i=i||{};var f=i.$inherits||i.inherits,o=i.$statics||i.statics,et=i.$entryPoint,a,h,v=i.$scope||t||Bridge.global,s,ot,g,y,e;if(i.$kind=i.$kind||"class",i.$inherits?delete i.$inherits:delete i.inherits,et&&delete i.$entryPoint,Bridge.isFunction(o)?o=null:i.$statics?delete i.$statics:delete i.statics,ft=i.hasOwnProperty("ctor")&&i.ctor,ft?u=ft:(u=i.$literal?function(n){return n=n||{},n.$getType=function(){return u},n}:function(){this.$initialize();u.$base&&(u.$$inherits&&u.$$inherits.length>0&&u.$$inherits[0].$staticInit&&u.$$inherits[0].$staticInit(),u.$base.ctor.call(this))},i.ctor=u),i.$literal&&(o&&o.getDefaultValue||(u.getDefaultValue=function(){var n={};return n.$getType=function(){return u},n}),u.$literal=!0,delete i.$literal),l||(v=Bridge.Class.set(v,n,u)),r&&r.fn.$cache.push({type:u,args:r.args}),u.$$name=n,u.$kind=i.$kind,r&&l){for(u.$genericTypeDefinition=r.fn,u.$typeArguments=r.args,u.$assembly=r.fn.$assembly||Bridge.$currentAssembly,nt=Bridge.Reflection.getTypeFullName(r.fn),s=0;s<r.args.length;s++)nt+=(s===0?"[":",")+"["+Bridge.Reflection.getTypeQName(r.args[s])+"]";nt+="]";u.$$fullname=nt}else u.$$fullname=u.$$name;if(f&&Bridge.isFunction(f)&&(f=f()),p=[],w=[],f)for(tt=0;tt<f.length;tt++){if(b=f[tt],k=(b.$interfaces||[]).concat(b.$baseInterfaces||[]),k.length>0)for(d=0;d<k.length;d++)w.indexOf(k[d])<0&&w.push(k[d]);b.$kind==="interface"&&p.push(b)}u.$baseInterfaces=w;u.$interfaces=p;u.$allInterfaces=p.concat(w);st=f?f[0].$kind==="interface":!0;st&&(f=null);a=f?f[0].prototype:this.prototype;u.$base=a;h=f?f[0].$$initCtor?new f[0].$$initCtor:new f[0]:{};u.$$initCtor=function(){};u.$$initCtor.prototype=h;u.$$initCtor.prototype.constructor=u;u.$$initCtor.prototype.$$fullname=r&&l?u.$$fullname:u.$$name;o&&(it=o.$config||o.config,it&&!Bridge.isFunction(it)&&(Bridge.Class.initConfig(f,a,it,!0,u),o.$config?delete o.$config:delete o.config));rt=i.$config||i.config;rt&&!Bridge.isFunction(rt)?(Bridge.Class.initConfig(f,a,rt,!1,i,h),i.$config?delete i.$config:delete i.config):f&&a.$initMembers&&(i.$initMembers=function(){a.$initMembers.call(this)});i.$initialize=Bridge.Class._initialize;ut=[];for(e in i)ut.push(e);for(s=0;s<ut.length;s++)e=ut[s],ot=i[e],g=e==="ctor",y=e,Bridge.isFunction(ot)&&(g||e.match("^\\$ctor")!==null)&&(g=!0),g?(u[y]=i[e],u[y].prototype=h,u[y].prototype.constructor=u,h[y]=i[e]):h[y]=i[e];if(h.$$name=n,o)for(e in o)e==="ctor"?u.$ctor=o[e]:u[e]=o[e];for(f||(f=[Object].concat(p)),u.$$inherits=f,s=0;s<f.length;s++)v=f[s],v.$$inheritors||(v.$$inheritors=[]),v.$$inheritors.push(u);return c=function(){Bridge.Class.staticInitAllow&&(u.$staticInit=null,u.$initMembers&&u.$initMembers(),u.$ctor&&u.$ctor())},(et||Bridge.isFunction(h.$main))&&Bridge.Class.$queueEntry.push(u),u.$staticInit=c,l||Bridge.Class.registerType(n,u),Bridge.Reflection&&(u.$getMetadata=Bridge.Reflection.getMetadata),u.$kind==="enum"&&(u.$is=function(n){var t=u.prototype.$utype;return t===System.String?typeof n=="string":t&&t.$is?t.$is(n):typeof n=="number"},u.getDefaultValue=function(){var n=u.prototype.$utype;return n===System.String?null:0}),u.$kind==="interface"&&(u.prototype.$variance&&(u.isAssignableFrom=Bridge.Class.varianceAssignable),u.$isInterface=!0),u},varianceAssignable:function(n){var r=function(n,t){var i;if(t.$genericTypeDefinition===n.$genericTypeDefinition&&t.$typeArguments.length===n.$typeArguments.length){for(i=0;i<n.$typeArguments.length;i++){var f=n.prototype.$variance[i],r=n.$typeArguments[i],u=t.$typeArguments[i];switch(f){case 1:if(!Bridge.Reflection.isAssignableFrom(r,u))return!1;break;case 2:if(!Bridge.Reflection.isAssignableFrom(u,r))return!1;break;default:if(u!==r)return!1}}return!0}return!1},i,t;if(n.$kind==="interface"&&r(this,n))return!0;for(i=Bridge.Reflection.getInterfaces(n),t=0;t<i.length;t++)if(i[t]===this||r(this,i[t]))return!0;return!1},registerType:function(n,t){Bridge.$currentAssembly&&(Bridge.$currentAssembly.$types[n]=t,t.$assembly=Bridge.$currentAssembly)},addExtend:function(n,t){var f,i,r,u;for(Array.prototype.push.apply(n.$$inherits,t),n.$interfaces=n.$interfaces||[],n.$baseInterfaces=n.$baseInterfaces||[],f=0;f<t.length;f++){if(i=t[f],i.$$inheritors||(i.$$inheritors=[]),i.$$inheritors.push(n),r=(i.$interfaces||[]).concat(i.$baseInterfaces||[]),r.length>0)for(u=0;u<r.length;u++)n.$baseInterfaces.indexOf(r[u])<0&&n.$baseInterfaces.push(r[u]);i.$kind==="interface"&&n.$interfaces.push(i)}n.$allInterfaces=n.$interfaces.concat(n.$baseInterfaces)},set:function(n,t,i,r){for(var u=t.split("."),o,h,e,s,f=0;f<u.length-1;f++)typeof n[u[f]]=="undefined"&&(n[u[f]]={}),n=n[u[f]];if(o=u[u.length-1],e=n[o],e){if(e.$$name===t)throw"Class '"+t+"' is already defined";for(h in e)s=e[h],typeof s=="function"&&s.$$name&&function(n,t,i){Object.defineProperty(n,t,{get:function(){return Bridge.Class.staticInitAllow&&(i.$staticInit&&i.$staticInit(),Bridge.Class.defineProperty(n,t,i)),i},set:function(n){i=n},enumerable:!0,configurable:!0})}(i,h,s)}return r!==!0?function(n,t,i){Object.defineProperty(n,t,{get:function(){return Bridge.Class.staticInitAllow&&(i.$staticInit&&i.$staticInit(),Bridge.Class.defineProperty(n,t,i)),i},set:function(n){i=n},enumerable:!0,configurable:!0})}(n,o,i):n[o]=i,n},defineProperty:function(n,t,i){Object.defineProperty(n,t,{value:i,enumerable:!0,configurable:!0})},genericName:function(n,t){for(var r,u=n,i=0;i<t.length;i++)r=t[i],u+="$"+(r.$$name||Bridge.getTypeName(r));return u},getCachedType:function(n,t){for(var e=n.$cache,o=e.length,i,f,r,u=0;u<o;u++)if(i=e[u],i.args.length===t.length){for(f=!0,r=0;r<i.args.length;r++)if(i.args[r]!==t[r]){f=!1;break}if(f)return i}return null},generic:function(n,t,i,r){return i.$$name=n,i.$kind="class",Bridge.Class.set(t,n,i,!0),Bridge.Class.registerType(n,i),i.$typeArgumentCount=r,i.$isGenericTypeDefinition=!0,i.$getMetadata=Bridge.Reflection.getMetadata,i},init:function(n){var r,i,t;for(Bridge.Class.staticInitAllow=!0,r=Bridge.Class.$queue.concat(Bridge.Class.$queueEntry),i=0;i<r.length;i++)t=r[i],t.$staticInit&&t.$staticInit(),t.prototype.$main&&Bridge.ready(t.prototype.$main);Bridge.Class.$queue.length=0;Bridge.Class.$queueEntry.length=0;n&&n()}};Bridge.Class=at;Bridge.Class.$queue=[];Bridge.Class.$queueEntry=[];Bridge.define=Bridge.Class.define;Bridge.definei=Bridge.Class.definei;Bridge.init=Bridge.Class.init;Bridge.assembly=function(n,t,i){i||(i=t,t={});n=n||"Bridge.$Unknown";var r=System.Reflection.Assembly.assemblies[n];r?Bridge.apply(r.res,t||{}):r=new System.Reflection.Assembly(n,t);Bridge.$currentAssembly=r;i&&i.call(Bridge.global,r,Bridge.global);Bridge.init()};Bridge.define("System.Reflection.Assembly",{statics:{assemblies:{}},ctor:function(n,t){this.$initialize();this.name=n;this.res=t||{};this.$types={};this.$={};System.Reflection.Assembly.assemblies[n]=this},toString:function(){return this.name},getManifestResourceNames:function(){return Object.keys(this.res)},getManifestResourceDataAsBase64:function(n,t){return arguments.length===1&&(t=n,n=null),n&&(t=Bridge.Reflection.getTypeNamespace(n)+"."+t),this.res[t]||null},getManifestResourceData:function(n,t){arguments.length===1&&(t=n,n=null);n&&(t=Bridge.Reflection.getTypeNamespace(n)+"."+t);var i=this.res[t];return i?System.Convert.fromBase64String(i):null},getCustomAttributes:function(n){return n&&!Bridge.isBoolean(n)?this.attr.filter(function(t){return Bridge.is(t,n)}):this.attr}});Bridge.$currentAssembly=new System.Reflection.Assembly("mscorlib");Bridge.SystemAssembly=Bridge.$currentAssembly;Bridge.SystemAssembly.$types["System.Reflection.Assembly"]=System.Reflection.Assembly;System.Reflection.Assembly.$assembly=Bridge.SystemAssembly;o=Bridge.$currentAssembly,function(){Bridge.SystemAssembly.version="15.6.0";Bridge.SystemAssembly.compiler="15.6.0"}();Bridge.define("Bridge.Utils.SystemAssemblyVersion");Bridge.Reflection={setMetadata:function(n,t){n.$getMetadata=Bridge.Reflection.getMetadata;n.$metadata=t},initMetaData:function(n,t){var r,i;if(t.m)for(r=0;r<t.m.length;r++)i=t.m[r],i.td=n,i.ad&&(i.ad.td=n),i.r&&(i.r.td=n),i.g&&(i.g.td=n),i.s&&(i.s.td=n);n.$metadata=t;n.$initMetaData=!0},getMetadata:function(){var n,t,i,r;if(!this.$metadata&&this.$genericTypeDefinition&&(this.$metadata=this.$genericTypeDefinition.$factoryMetadata||this.$genericTypeDefinition.$metadata),n=this.$metadata,typeof n=="function")if(this.$isGenericTypeDefinition){for(i=this.$typeArgumentCount,r=new Array(i),t=0;t<i;t++)r[t]=Object;this.$factoryMetadata=this.$metadata;n=this.$metadata.apply(null,r)}else n=this.$typeArguments?this.$metadata.apply(null,this.$typeArguments):this.$metadata();return!this.$initMetaData&&n&&Bridge.Reflection.initMetaData(this,n),n},load:function(n){return System.Reflection.Assembly.assemblies[n]||require(n)},getGenericTypeDefinition:function(n){if(n.$isGenericTypeDefinition)return n;if(!n.$genericTypeDefinition)throw new System.InvalidOperationException("This operation is only valid on generic types.");return n.$genericTypeDefinition},getGenericParameterCount:function(n){return n.$typeArgumentCount||0},getGenericArguments:function(n){return n.$typeArguments||null},isGenericTypeDefinition:function(n){return n.$isGenericTypeDefinition||!1},getBaseType:function(n){var t,i;if(n===Object||n.$kind==="interface"||n.prototype==null)return null;if(Object.getPrototypeOf)return Object.getPrototypeOf(n.prototype).constructor;if(t=n.prototype,Object.prototype.hasOwnProperty.call(t,"constructor"))try{return i=t.constructor,delete t.constructor,t.constructor}finally{t.constructor=i}return t.constructor},getTypeFullName:function(n){var i,t;return n.$$fullname?n.$$fullname:n.$$name?n.$$name:(i=n.constructor===Function?n.toString():n.constructor.toString(),t=/function (.{1,})\(/.exec(i),t&&t.length>1?t[1]:"Object")},_makeQName:function(n,t){return n+(t?", "+t.name:"")},getTypeQName:function(n){return Bridge.Reflection._makeQName(Bridge.Reflection.getTypeFullName(n),n.$assembly)},getTypeName:function(n){var t=Bridge.Reflection.getTypeFullName(n),i=t.indexOf("["),r=t.lastIndexOf(".",i>=0?i:t.length);return r>0?t.substr(r+1):t},getTypeNamespace:function(n){var t=Bridge.Reflection.getTypeFullName(n),u=t.indexOf("["),f=t.lastIndexOf(".",u>=0?u:t.length),i=f>0?t.substr(0,f):"",r;return n.$assembly&&(r=Bridge.Reflection._getAssemblyType(n.$assembly,i),r&&(i=Bridge.Reflection.getTypeNamespace(r))),i},getTypeAssembly:function(n){return System.Array.contains([Date,Number,Boolean,String,Function,Array],n)?Bridge.SystemAssembly:n.$assembly||Bridge.SystemAssembly},_getAssemblyType:function(n,t){var e=!1,u,f,i,r;if(n||(n=Bridge.SystemAssembly,e=!0),n.$types){if(u=n.$types[t]||null,u)return u;if(n.name==="mscorlib")n=Bridge.global;else return null}for(f=t.split("."),i=n,r=0;r<f.length;r++)if(i=i[f[r]],!i)return null;return typeof i!="function"||!e&&i.$assembly&&n.name!==i.$assembly.name?null:i},getAssemblyTypes:function(n){var t=[],i,r;if(n.$types)for(i in n.$types)n.$types.hasOwnProperty(i)&&t.push(n.$types[i]);else r=function(n,i){for(var u in n)n.hasOwnProperty(u)&&r(n[u],u);typeof n=="function"&&Bridge.isUpper(i.charCodeAt(0))&&t.push(n)},r(n,"");return t},createAssemblyInstance:function(n,t){var i=Bridge.Reflection.getType(t,n);return i?Bridge.createInstance(i):null},getInterfaces:function(n){return n.$allInterfaces?n.$allInterfaces:n===Date?[System.IComparable$1(Date),System.IEquatable$1(Date),System.IComparable,System.IFormattable]:n===Number?[System.IComparable$1(Bridge.Int),System.IEquatable$1(Bridge.Int),System.IComparable,System.IFormattable]:n===Boolean?[System.IComparable$1(Boolean),System.IEquatable$1(Boolean),System.IComparable]:n===String?[System.IComparable$1(String),System.IEquatable$1(String),System.IComparable,System.ICloneable,System.Collections.IEnumerable,System.Collections.Generic.IEnumerable$1(System.Char)]:n===Array||System.Array._typedArrays[Bridge.getTypeName(n)]?[System.Collections.IEnumerable,System.Collections.ICollection,System.ICloneable,System.Collections.Generic.IEnumerable$1(Object),System.Collections.Generic.ICollection$1(Object),System.Collections.Generic.IList$1(Object)]:[]},isInstanceOfType:function(n,t){return Bridge.is(n,t)},isAssignableFrom:function(n,t){if(n==null)throw new System.NullReferenceException;if(t==null)return!1;if(n===t||n===Object)return!0;if(Bridge.isFunction(n.isAssignableFrom))return n.isAssignableFrom(t);if(t===Array)return System.Array.is([],n);if(Bridge.Reflection.isInterface(n)&&System.Array.contains(Bridge.Reflection.getInterfaces(t),n))return!0;var r=t.$$inherits,i,u;if(r)for(i=0;i<r.length;i++)if(u=Bridge.Reflection.isAssignableFrom(n,r[i]),u)return!0;return!1},isClass:function(n){return n.$kind==="class"||n===Array||n===Function||n===RegExp||n===String||n===Error||n===Object},isEnum:function(n){return n.$kind==="enum"},isFlags:function(n){return!!(n.prototype&&n.prototype.$flags)},isInterface:function(n){return n.$kind==="interface"},_getType:function(n,t,i){var s=!i;i=i||/[[,\]]/g;var o=i.lastIndex,r=i.exec(n),f,e=[],u;if(r){f=n.substring(o,r.index);switch(r[0]){case"[":if(n[r.index+1]!=="[")return null;for(;;){if(i.exec(n),u=Bridge.Reflection._getType(n,Bridge.SystemAssembly,i),!u)return null;if(e.push(u),r=i.exec(n),r[0]==="]")break;else if(r[0]!==",")return null}if(r=i.exec(n),r&&r[0]===","&&(i.exec(n),!(t=System.Reflection.Assembly.assemblies[(i.lastIndex>0?n.substring(r.index+1,i.lastIndex-1):n.substring(r.index+1)).trim()])))return null;break;case",":if(i.exec(n),!(t=System.Reflection.Assembly.assemblies[(i.lastIndex>0?n.substring(r.index+1,i.lastIndex-1):n.substring(r.index+1)).trim()]))return null}}else f=n.substring(o);return s&&i.lastIndex?null:(u=Bridge.Reflection._getAssemblyType(t,f.trim()),u=e.length?u.apply(null,e):u,u&&u.$staticInit&&u.$staticInit(),u)},getType:function(n,t){return n?Bridge.Reflection._getType(n,t):null},canAcceptNull:function(n){return n.$kind==="struct"||n===System.Decimal||n===System.Int64||n===System.UInt64||n===System.Double||n===System.Single||n===System.Byte||n===System.SByte||n===System.Int16||n===System.UInt16||n===System.Int32||n===System.UInt32||n===Bridge.Int||n===Boolean||n===Date||n===Number?!1:!0},applyConstructor:function(n,t){var a,f,s,h,e,i,r,c,o,u,l;if(!t||t.length===0)return new n;if(n.$$initCtor&&n.$kind!=="anonymous"){if(a=Bridge.getMetadata(n),f=0,a){for(s=Bridge.Reflection.getMembers(n,1,28),e=0;e<s.length;e++)if(i=s[e],i.p&&i.p.length===t.length){for(h=!0,r=0;r<i.p.length;r++)if(c=i.p[r],!Bridge.is(t[r],c)||t[r]==null&&!Bridge.Reflection.canAcceptNull(c)){h=!1;break}h&&(n=n[i.sn],f++)}}else if(Bridge.isFunction(n.ctor)&&n.ctor.length===t.length)n=n.ctor;else for(o="$ctor",u=1;Bridge.isFunction(n[o+u]);)n[o+u].length===t.length&&(n=n[o+u],f++),u++;if(f>1)throw new System.Exception("The ambiguous constructor call");}return l=function(){n.apply(this,t)},l.prototype=n.prototype,new l},getAttributes:function(n,t,i){var f=[],r,o,u,e,s,c,h;if(i&&(c=Bridge.Reflection.getBaseType(n),c))for(u=Bridge.Reflection.getAttributes(c,t,!0),r=0;r<u.length;r++)o=Bridge.getType(u[r]),e=Bridge.getMetadata(o),e&&e.ni||f.push(u[r]);if(s=Bridge.getMetadata(n),s&&s.at)for(r=0;r<s.at.length;r++)if(u=s.at[r],t==null||Bridge.Reflection.isInstanceOfType(u,t)){if(o=Bridge.getType(u),e=Bridge.getMetadata(o),!e||!e.am)for(h=f.length-1;h>=0;h--)Bridge.Reflection.isInstanceOfType(f[h],o)&&f.splice(h,1);f.push(u)}return f},getMembers:function(n,t,i,r,u){var e=[],l,a,o,y,h,c,v,s,f;if(((i&72)==72||(i&6)==4)&&(l=Bridge.Reflection.getBaseType(n),l&&(e=Bridge.Reflection.getMembers(l,t&-2,i&(i&64?255:247)&(i&2?251:255),r,u))),a=function(n){if(t&n.t&&(i&4&&!n.is||i&8&&n.is)&&(!r||n.n===r)){if(u){if((n.p||[]).length!==u.length)return;for(var f=0;f<u.length;f++)if(u[f]!==n.p[f])return}e.push(n)}},o=Bridge.getMetadata(n),o&&o.m)for(y=["g","s","ad","r"],f=0;f<o.m.length;f++)for(h=o.m[f],a(h),c=0;c<4;c++)v=y[c],h[v]&&a(h[v]);if(i&256){while(n){for(s=[],f=0;f<e.length;f++)e[f].td===n&&s.push(e[f]);if(s.length>1)throw new System.Reflection.AmbiguousMatchException("Ambiguous match");else if(s.length===1)return s[0];n=Bridge.Reflection.getBaseType(n)}return null}return e},midel:function(n,t,i){var r,u,f,e;if(n.is&&!!t)throw new System.ArgumentException("Cannot specify target for static method");else if(!n.is&&!t)throw new System.ArgumentException("Must specify target for instance method");if(n.fg)r=function(){return(n.is?n.td:this)[n.fg]};else if(n.fs)r=function(t){(n.is?n.td:this)[n.fs]=t};else{if(r=n.def||(n.is||n.sm?n.td[n.sn]:t[n.sn]),n.tpc){if(!i||i.length!==n.tpc)throw new System.ArgumentException("Wrong number of type arguments");u=r;r=function(){return u.apply(this,i.concat(Array.prototype.slice.call(arguments)))}}else if(i&&i.length)throw new System.ArgumentException("Cannot specify type arguments for non-generic method");n.exp&&(f=r,r=function(){return f.apply(this,Array.prototype.slice.call(arguments,0,arguments.length-1).concat(arguments[arguments.length-1]))});n.sm&&(e=r,r=function(){return e.apply(null,[this].concat(Array.prototype.slice.call(arguments)))})}return Bridge.fn.bind(t,r)},invokeCI:function(n,t){return n.exp&&(t=t.slice(0,t.length-1).concat(t[t.length-1])),n.def?n.def.apply(null,t):n.sm?n.td[n.sn].apply(null,t):Bridge.Reflection.applyConstructor(n.sn?n.td[n.sn]:n.td,t)},fieldAccess:function(n,t){if(n.is&&!!t)throw new System.ArgumentException("Cannot specify target for static field");else if(!n.is&&!t)throw new System.ArgumentException("Must specify target for instance field");if(t=n.is?n.td:t,arguments.length===3)t[n.sn]=arguments[2];else return t[n.sn]}};Bridge.setMetadata=Bridge.Reflection.setMetadata;System.Reflection.ConstructorInfo={$is:function(n){return n!=null&&n.t===1}};System.Reflection.EventInfo={$is:function(n){return n!=null&&n.t===2}};System.Reflection.FieldInfo={$is:function(n){return n!=null&&n.t===4}};System.Reflection.MethodBase={$is:function(n){return n!=null&&(n.t===1||n.t===8)}};System.Reflection.MethodInfo={$is:function(n){return n!=null&&n.t===8}};System.Reflection.PropertyInfo={$is:function(n){return n!=null&&n.t===16}};System.AppDomain={getAssemblies:function(){return Object.keys(System.Reflection.Assembly.assemblies).map(function(n){return System.Reflection.Assembly.assemblies[n]})}};Bridge.define("System.IFormattable",{$kind:"interface",statics:{$is:function(n){return Bridge.isNumber(n)||Bridge.isDate(n)?!0:Bridge.is(n,System.IFormattable,!0)}}});Bridge.define("System.IComparable",{$kind:"interface",statics:{$is:function(n){return Bridge.isNumber(n)||Bridge.isDate(n)||Bridge.isBoolean(n)||Bridge.isString(n)?!0:Bridge.is(n,System.IComparable,!0)}}});Bridge.define("System.IFormatProvider",{$kind:"interface"});Bridge.define("System.ICloneable",{$kind:"interface"});Bridge.define("System.IComparable$1",function(n){return{$kind:"interface",statics:{$is:function(t){return Bridge.isNumber(t)&&n.$number&&n.$is(t)||Bridge.isDate(t)&&n===Date||Bridge.isBoolean(t)&&n===Boolean||Bridge.isString(t)&&n===String?!0:Bridge.is(t,System.IComparable$1(n),!0)}}}});Bridge.define("System.IEquatable$1",function(n){return{$kind:"interface",statics:{$is:function(t){return Bridge.isNumber(t)&&n.$number&&n.$is(t)||Bridge.isDate(t)&&n===Date||Bridge.isBoolean(t)&&n===Boolean||Bridge.isString(t)&&n===String?!0:Bridge.is(t,System.IEquatable$1(n),!0)}}}});Bridge.define("Bridge.IPromise",{$kind:"interface"});Bridge.define("System.IDisposable",{$kind:"interface"});vt={hasValue:Bridge.hasValue,getValue:function(n){if(!Bridge.hasValue(n))throw new System.InvalidOperationException("Nullable instance doesn't have a value.");return n},getValueOrDefault:function(n,t){return Bridge.hasValue(n)?n:t},add:function(n,t){return Bridge.hasValue$1(n,t)?n+t:null},band:function(n,t){return Bridge.hasValue$1(n,t)?n&t:null},bor:function(n,t){return Bridge.hasValue$1(n,t)?n|t:null},and:function(n,t){return n===!0&&t===!0?!0:n===!1||t===!1?!1:null},or:function(n,t){return n===!0||t===!0?!0:n===!1&&t===!1?!1:null},div:function(n,t){return Bridge.hasValue$1(n,t)?n/t:null},eq:function(n,t){return Bridge.hasValue(n)?n===t:!Bridge.hasValue(t)},equals:function(n,t,i){return Bridge.hasValue(n)?i?i(n,t):Bridge.equals(n,t):!Bridge.hasValue(t)},toString:function(n,t){return Bridge.hasValue(n)?t?t(n):n.toString():""},getHashCode:function(n,t){return Bridge.hasValue(n)?t?t(n):Bridge.getHashCode(n):0},xor:function(n,t){return Bridge.hasValue$1(n,t)?n^t:null},gt:function(n,t){return Bridge.hasValue$1(n,t)&&n>t},gte:function(n,t){return Bridge.hasValue$1(n,t)&&n>=t},neq:function(n,t){return Bridge.hasValue(n)?n!==t:Bridge.hasValue(t)},lt:function(n,t){return Bridge.hasValue$1(n,t)&&n<t},lte:function(n,t){return Bridge.hasValue$1(n,t)&&n<=t},mod:function(n,t){return Bridge.hasValue$1(n,t)?n%t:null},mul:function(n,t){return Bridge.hasValue$1(n,t)?n*t:null},sl:function(n,t){return Bridge.hasValue$1(n,t)?n<<t:null},sr:function(n,t){return Bridge.hasValue$1(n,t)?n>>t:null},srr:function(n,t){return Bridge.hasValue$1(n,t)?n>>>t:null},sub:function(n,t){return Bridge.hasValue$1(n,t)?n-t:null},bnot:function(n){return Bridge.hasValue(n)?~n:null},neg:function(n){return Bridge.hasValue(n)?-n:null},not:function(n){return Bridge.hasValue(n)?!n:null},pos:function(n){return Bridge.hasValue(n)?+n:null},lift:function(){for(var n=1;n<arguments.length;n++)if(!Bridge.hasValue(arguments[n]))return null;return arguments[0]==null?null:arguments[0].apply==undefined?arguments[0]:arguments[0].apply(null,Array.prototype.slice.call(arguments,1))},lift1:function(n,t){return Bridge.hasValue(t)?typeof n=="function"?n.apply(null,Array.prototype.slice.call(arguments,1)):t[n].apply(t,Array.prototype.slice.call(arguments,2)):null},lift2:function(n,t,i){return Bridge.hasValue$1(t,i)?typeof n=="function"?n.apply(null,Array.prototype.slice.call(arguments,1)):t[n].apply(t,Array.prototype.slice.call(arguments,2)):null},liftcmp:function(n,t,i){return Bridge.hasValue$1(t,i)?typeof n=="function"?n.apply(null,Array.prototype.slice.call(arguments,1)):t[n].apply(t,Array.prototype.slice.call(arguments,2)):!1},lifteq:function(n,t,i){var r=Bridge.hasValue(t),u=Bridge.hasValue(i);return!r&&!u||r&&u&&(typeof n=="function"?n.apply(null,Array.prototype.slice.call(arguments,1)):t[n].apply(t,Array.prototype.slice.call(arguments,2)))},liftne:function(n,t,i){var r=Bridge.hasValue(t),u=Bridge.hasValue(i);return r!==u||r&&(typeof n=="function"?n.apply(null,Array.prototype.slice.call(arguments,1)):t[n].apply(t,Array.prototype.slice.call(arguments,2)))}};System.Nullable=vt;Bridge.define("System.Nullable$1",function(n){return{$kind:"struct",statics:{getDefaultValue:function(){return null},$is:function(t){return Bridge.is(t,n)}}}});Bridge.define("System.Char",{inherits:[System.IComparable,System.IFormattable],$kind:"struct",statics:{min:0,max:65535,$is:function(n){return typeof n=="number"&&Math.round(n,0)==n&&n>=System.Char.min&&n<=System.Char.max},getDefaultValue:function(){return 0},parse:function(n){if(!Bridge.hasValue(n))throw new System.ArgumentNullException("s");if(n.length!==1)throw new System.FormatException;return n.charCodeAt(0)},tryParse:function(n,t){var i=n&&n.length===1;return t.v=i?n.charCodeAt(0):0,i},format:function(n,t,i){return Bridge.Int.format(n,t,i)},charCodeAt:function(n,t){if(n==null)throw new System.ArgumentNullException;if(n.length!=1)throw new System.FormatException("String must be exactly one character long");return n.charCodeAt(t)},isWhiteSpace:function(n){return!/[^\s\x09-\x0D\x85\xA0]/.test(n)},isDigit:function(n){return n<256?n>=48&&n<=57:new RegExp("[0-90-9Ù -Ù©Û°-۹߀-߉०-९০-৯੦-੯૦-૯à¦-à¯à¯¦-௯౦-౯೦-೯൦-൯à¹-๙à»-໙༠-༩á€-á‰á‚-႙០-៩á -á ™á¥†-á¥á§-᧙᪀-᪉áª-᪙á-á™á®°-᮹᱀-᱉á±-á±™ê˜ -꘩ê£-꣙꤀-꤉ê§-ê§™ê©-꩙꯰-꯹ï¼-ï¼™]").test(String.fromCharCode(n))},isLetter:function(n){return n<256?n>=65&&n<=90||n>=97&&n<=122:new RegExp("[A-Za-za-zµß-öø-ÿÄăąćĉċÄÄđēĕėęěÄğġģĥħĩīÄįıijĵķĸĺļľŀłńņňʼnŋÅÅőœŕŗřśÅşšţťŧũūÅůűųŵŷźżž-Æ€ÆƒÆ…ÆˆÆŒÆÆ’ƕƙ-Æ›ÆžÆ¡Æ£Æ¥Æ¨ÆªÆ«ÆÆ°Æ´Æ¶Æ¹ÆºÆ½-ƿdžljnjǎÇǒǔǖǘǚǜÇǟǡǣǥǧǩǫÇǯǰdzǵǹǻǽǿÈȃȅȇȉȋÈÈȑȓȕȗșțÈȟȡȣȥȧȩȫÈȯȱȳ-ȹȼȿɀɂɇɉɋÉÉ-ʓʕ-ʯͱͳͷͻ-ͽÎά-ÏŽÏϑϕ-ϗϙϛÏϟϡϣϥϧϩϫÏϯ-ϳϵϸϻϼа-џѡѣѥѧѩѫÑѯѱѳѵѷѹѻѽѿÒÒ‹ÒÒÒ‘Ò“Ò•Ò—Ò™Ò›ÒÒŸÒ¡Ò£Ò¥Ò§Ò©Ò«ÒүұҳҵҷҹһҽҿӂӄӆӈӊӌӎÓÓ‘Ó“Ó•Ó—Ó™Ó›ÓÓŸÓ¡Ó£Ó¥Ó§Ó©Ó«ÓÓ¯Ó±Ó³ÓµÓ·Ó¹Ó»Ó½Ó¿ÔÔƒÔ…Ô‡Ô‰Ô‹ÔÔÔ‘Ô“Ô•Ô—Ô™Ô›ÔÔŸÔ¡Ô£Ô¥Ô§Õ¡-ևᴀ-ᴫᵫ-áµ·áµ¹-á¶šá¸á¸ƒá¸…ḇḉḋá¸á¸á¸‘ḓḕḗḙḛá¸á¸Ÿá¸¡á¸£á¸¥á¸§á¸©á¸«á¸á¸¯á¸±á¸³á¸µá¸·á¸¹á¸»á¸½á¸¿á¹á¹ƒá¹…ṇṉṋá¹á¹á¹‘ṓṕṗṙṛá¹á¹Ÿá¹¡á¹£á¹¥á¹§á¹©á¹«á¹á¹¯á¹±á¹³á¹µá¹·á¹¹á¹»á¹½á¹¿áºáºƒáº…ẇẉẋáºáºáº‘ẓẕ-áºáºŸáº¡áº£áº¥áº§áº©áº«áºáº¯áº±áº³áºµáº·áº¹áº»áº½áº¿á»á»ƒá»…ệỉịá»á»á»‘ồổỗộớá»á»Ÿá»¡á»£á»¥á»§á»©á»«á»á»¯á»±á»³á»µá»·á»¹á»»á»½á»¿-ἇá¼-ἕἠ-á¼§á¼°-á¼·á½€-á½…á½-á½—á½ -á½§á½°-ώᾀ-ᾇá¾-á¾—á¾ -á¾§á¾°-ᾴᾶᾷιῂ-ῄῆῇá¿-á¿“á¿–á¿—á¿ -ῧῲ-ῴῶῷℊℎâ„ℓℯℴℹℼℽⅆ-ⅉⅎↄⰰ-ⱞⱡⱥⱦⱨⱪⱬⱱⱳⱴⱶ-â±»â²â²ƒâ²…ⲇⲉⲋâ²â²â²‘ⲓⲕⲗⲙⲛâ²â²Ÿâ²¡â²£â²¥â²§â²©â²«â²â²¯â²±â²³â²µâ²·â²¹â²»â²½â²¿â³â³ƒâ³…ⳇⳉⳋâ³â³â³‘ⳓⳕⳗⳙⳛâ³â³Ÿâ³¡â³£â³¤â³¬â³®â³³â´€-ⴥⴧâ´ê™ê™ƒê™…ꙇꙉꙋê™ê™ê™‘ꙓꙕꙗꙙꙛê™ê™Ÿê™¡ê™£ê™¥ê™§ê™©ê™«ê™êšêšƒêš…ꚇꚉꚋêšêšêš‘ꚓꚕꚗꜣꜥꜧꜩꜫêœêœ¯-ꜱꜳꜵꜷꜹꜻꜽꜿêêƒê…ê‡ê‰ê‹êêê‘ê“ê•ê—ê™ê›êêŸê¡ê£ê¥ê§ê©ê«êê¯ê±-ê¸êºê¼ê¿êžêžƒêž…ꞇꞌꞎꞑꞓꞡꞣꞥꞧꞩꟺff-stﬓ-ﬗï½-zA-ZÀ-ÖØ-ÞĀĂĄĆĈĊČĎÄÄ’Ä”Ä–Ä˜ÄšÄœÄžÄ Ä¢Ä¤Ä¦Ä¨ÄªÄ¬Ä®Ä°Ä²Ä´Ä¶Ä¹Ä»Ä½Ä¿ÅŃŅŇŊŌŎÅÅ’Å”Å–Å˜ÅšÅœÅžÅ Å¢Å¤Å¦Å¨ÅªÅ¬Å®Å°Å²Å´Å¶Å¸Å¹Å»Å½ÆÆ‚ƄƆƇƉ-ƋƎ-ƑƓƔƖ-Æ˜ÆœÆÆŸÆ ƢƤƦƧƩƬƮƯƱ-ƳƵƷƸƼDŽLJNJÇÇÇ‘Ç“Ç•Ç—Ç™Ç›ÇžÇ Ç¢Ç¤Ç¦Ç¨ÇªÇ¬Ç®Ç±Ç´Ç¶-ǸǺǼǾȀȂȄȆȈȊȌȎÈÈ’È”È–È˜ÈšÈœÈžÈ È¢È¤È¦È¨ÈªÈ¬È®È°È²ÈºÈ»È½È¾ÉɃ-ɆɈɊɌɎͰͲͶΆΈ-ΊΌΎÎΑ-ΡΣ-ΫÏÏ’-Ï”Ï˜ÏšÏœÏžÏ Ï¢Ï¤Ï¦Ï¨ÏªÏ¬Ï®Ï´Ï·Ï¹ÏºÏ½-Ð¯Ñ Ñ¢Ñ¤Ñ¦Ñ¨ÑªÑ¬Ñ®Ñ°Ñ²Ñ´Ñ¶Ñ¸ÑºÑ¼Ñ¾Ò€ÒŠÒŒÒŽÒÒ’Ò”Ò–Ò˜ÒšÒœÒžÒ Ò¢Ò¤Ò¦Ò¨ÒªÒ¬Ò®Ò°Ò²Ò´Ò¶Ò¸ÒºÒ¼Ò¾Ó€ÓÓƒÓ…Ó‡Ó‰Ó‹ÓÓÓ’Ó”Ó–Ó˜ÓšÓœÓžÓ Ó¢Ó¤Ó¦Ó¨ÓªÓ¬Ó®Ó°Ó²Ó´Ó¶Ó¸ÓºÓ¼Ó¾Ô€Ô‚Ô„Ô†ÔˆÔŠÔŒÔŽÔÔ’Ô”Ô–Ô˜ÔšÔœÔžÔ Ô¢Ô¤Ô¦Ô±-Õ–á‚ -ჅჇáƒá¸€á¸‚ḄḆḈḊḌḎá¸á¸’ḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎá¹á¹’ṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎáºáº’ẔẞẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎá»á»’ỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈ-á¼á¼˜-á¼á¼¨-ἯἸ-ἿὈ-á½á½™á½›á½á½Ÿá½¨-ὯᾸ-ΆῈ-ΉῘ-ΊῨ-ῬῸ-Ώℂℇℋ-â„â„-â„’â„•â„™-â„ℤΩℨK-â„â„°-ℳℾℿⅅↃⰀ-ⰮⱠⱢ-ⱤⱧⱩⱫâ±-ⱰⱲⱵⱾ-ⲀⲂⲄⲆⲈⲊⲌⲎâ²â²’ⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎâ³â³’ⳔⳖⳘⳚⳜⳞⳠⳢⳫâ³â³²ê™€ê™‚ꙄꙆꙈꙊꙌꙎê™ê™’ê™”ê™–ê™˜ê™šê™œê™žê™ ê™¢ê™¤ê™¦ê™¨ê™ªê™¬êš€êš‚êš„êš†êšˆêšŠêšŒêšŽêšêš’ꚔꚖꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾê€ê‚ê„ê†êˆêŠêŒêŽêê’ê”ê–ê˜êšêœêžê ê¢ê¤ê¦ê¨êªê¬ê®ê¹ê»ê½ê¾êž€êž‚ꞄꞆꞋêžêžêž’êž êž¢êž¤êž¦êž¨êžªï¼¡-ZDžLjNjDzᾈ-á¾á¾˜-ᾟᾨ-ᾯᾼῌῼʰ-ˈ-Ë‘Ë -Ë¤Ë¬Ë®Í´ÍºÕ™Ù€Û¥Û¦ß´ßµßºà šà ¤à ¨à¥±à¹†à»†áƒ¼áŸ—á¡ƒáª§á±¸-ᱽᴬ-ᵪᵸᶛ-á¶¿â±â¿â‚-ₜⱼⱽⵯⸯ々〱-〵〻ã‚ゞー-ヾꀕꓸ-ꓽꘌꙿꜗ-ꜟê°êžˆêŸ¸êŸ¹ê§ê©°ê«ê«³ê«´ï½°ï¾žï¾ŸÂªÂºÆ»Ç€-ǃʔ×-תװ-×²Ø -Ø¿Ù-يٮٯٱ-Û“Û•Û®Û¯Ûº-Û¼Û¿ÜÜ’-ܯÝ-ޥޱߊ-ßªà €-à •à¡€-ࡘࢠࢢ-ࢬऄ-हऽà¥à¥˜-ॡॲ-ॷॹ-ॿঅ-ঌà¦à¦à¦“-নপ-রলশ-হঽৎড়à§à§Ÿ-ৡৰৱਅ-ਊà¨à¨à¨“-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-àªàª-ઑઓ-નપ-રલળવ-હઽà«à« ૡଅ-ଌà¬à¬à¬“-ନପ-ରଲଳଵ-ହଽàœààŸ-à¡à±à®ƒà®…-ஊஎ-à®à®’-கஙசஜஞடணதந-பம-ஹà¯à°…-ఌఎ-à°à°’-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-à²à²’-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-à´à´’-ഺഽൎൠൡൺ-ൿඅ-à¶–à¶š-නඳ-රලව-à·†à¸-ะาำเ-ๅàºàº‚ຄງຈຊàºàº”-ທນ-ຟມ-ຣລວສຫàº-ະາຳຽເ-ໄໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿá-á•áš-áá¡á¥á¦á®-á°áµ-á‚ႎáƒ-ჺჽ-ቈቊ-á‰á‰-ቖቘቚ-á‰á‰ -ኈኊ-áŠáŠ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-áŒáŒ’-ጕጘ-ášáŽ€-áŽáŽ -á´á-ᙬᙯ-ᙿáš-áššáš -ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱá€-á‘á -á¬á®-á°áž€-ឳៜá -á¡‚á¡„-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜá¥-á¥á¥°-ᥴᦀ-ᦫá§-ᧇᨀ-ᨖᨠ-ᩔᬅ-ᬳá…-á‹á®ƒ-ᮠᮮᮯᮺ-ᯥᰀ-á°£á±-á±á±š-ᱷᳩ-ᳬᳮ-ᳱᳵᳶℵ-ℸⴰ-âµ§â¶€-â¶–â¶ -ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-â·Žâ·-â·–â·˜-ⷞ〆〼ã-ゖゟァ-ヺヿㄅ-ã„ㄱ-ㆎㆠ-ㆺㇰ-ㇿã€-䶵一-鿌ꀀ-ꀔꀖ-ê’Œê“-ꓷꔀ-ꘋê˜-ê˜Ÿê˜ªê˜«ê™®êš -ꛥꟻ-ê ê ƒ-ê …ê ‡-ê Šê Œ-ê ¢ê¡€-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ê¥†ê¥ -ꥼꦄ-ꦲꨀ-ꨨꩀ-ê©‚ê©„-ê©‹ê© -ꩯꩱ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-êª½ê«€ê«‚ê«›ê«œê« -ꫪꫲê¬-ꬆꬉ-ꬎꬑ-ê¬–ê¬ -ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-ï©ï©°-ï«™ï¬ï¬Ÿ-ﬨשׁ-זּטּ-לּמּï€ïïƒï„ï†-ﮱﯓ-ï´½ïµ-ï¶ï¶’-ﷇﷰ-ﷻﹰ-ï¹´ï¹¶-ﻼヲ-ッア-ï¾ï¾ -하-ᅦᅧ-ï¿ï¿’-ᅲᅳ-ᅵ]").test(String.fromCharCode(n))},isHighSurrogate:function(n){return new RegExp("[\uD800-\uDBFF]").test(String.fromCharCode(n))},isLowSurrogate:function(n){return new RegExp("[\uDC00-\uDFFF]").test(String.fromCharCode(n))},isSurrogate:function(n){return new RegExp("[\uD800-\uDFFF]").test(String.fromCharCode(n))},isNull:function(n){return new RegExp("\x00").test(String.fromCharCode(n))},isSymbol:function(n){return n<256?[36,43,60,61,62,94,96,124,126,162,163,164,165,166,167,168,169,172,174,175,176,177,180,182,184,215,247].indexOf(n)!=-1:new RegExp("[â‚ -âƒâƒ-⃿℀-â…â…-â†â†-⇿∀-⋿⌀-â¿â– -◿☀-⛿✀-➿⟀-⟯⟰-⟿⠀-⣿⤀-⥿⦀-⧿⨀-⫿⬀-⯿]").test(String.fromCharCode(n))},isSeparator:function(n){return n<256?n==32||n==160:new RegExp("[\u2028\u2029 Â áš€á Žâ€€-  âŸã€€]").test(String.fromCharCode(n))},isPunctuation:function(n){return n<256?[33,34,35,37,38,39,40,41,42,44,45,46,47,58,59,63,64,91,92,93,95,123,125,161,171,173,183,187,191].indexOf(n)!=-1:new RegExp("[!-#%-*,-/:;?@[-]_{}¡§«¶·»¿;·՚-ÕŸÖ‰ÖŠÖ¾×€×ƒ×†×³×´Ø‰ØŠØŒØØ›ØžØŸÙª-Ù۔܀-Üß·-ß¹à °-à ¾à¡žà¥¤à¥¥à¥°à«°à·´à¹à¹šà¹›à¼„-༒༔༺-༽྅à¿-࿔࿙࿚áŠ-á჻á -á¨á€á™á™®áš›ášœá›«-á›áœµáœ¶áŸ”-៖៘-áŸšá €-á Šá¥„á¥…á¨žá¨Ÿáª -᪦᪨-áªáš-á ᯼-᯿᰻-᰿᱾᱿᳀-᳇᳓â€-‧‰-âƒâ…-â‘â“-âžâ½â¾â‚₎〈〉â¨-âµâŸ…⟆⟦-⟯⦃-⦘⧘-⧛⧼⧽⳹-⳼⳾⳿⵰⸀-⸮⸰-⸻ã€-〃〈-】〔-〟〰〽゠・꓾꓿ê˜-ê˜ê™³ê™¾ê›²-ê›·ê¡´-꡷꣎ê£ê£¸-꣺꤮꤯꥟ê§-ê§ê§žê§Ÿê©œ-꩟꫞꫟꫰꫱꯫﴾﴿ï¸-︙︰-ï¹’ï¹”-﹡﹣﹨﹪﹫ï¼-#%-*,-ï¼ï¼šï¼›ï¼Ÿï¼ ï¼»-]_{ï½ï½Ÿ-ï½¥-ÖŠÖ¾á€á †â€-―⸗⸚⸺⸻〜〰゠︱︲﹘﹣ï¼([{༺༼᚛‚„â…â½â‚〈â¨âªâ¬â®â°â²â´âŸ…⟦⟨⟪⟬⟮⦃⦅⦇⦉⦋â¦â¦â¦‘⦓⦕⦗⧘⧚⧼⸢⸤⸦⸨〈《「『ã€ã€”〖〘〚ã€ï´¾ï¸—︵︷︹︻︽︿ï¹ï¹ƒï¹‡ï¹™ï¹›ï¹ï¼ˆï¼»ï½›ï½Ÿï½¢)]}༻༽᚜â†â¾â‚ŽâŒªâ©â«ââ¯â±â³âµâŸ†âŸ§âŸ©âŸ«âŸâŸ¯â¦„⦆⦈⦊⦌⦎â¦â¦’⦔⦖⦘⧙⧛⧽⸣⸥⸧⸩〉》ã€ã€ã€‘〕〗〙〛〞〟﴿︘︶︸︺︼︾﹀﹂﹄﹈﹚﹜﹞)]ï½ï½ 」«‘‛“‟‹⸂⸄⸉⸌⸜⸠»’â€â€ºâ¸ƒâ¸…⸊â¸â¸â¸¡_‿â€â”︳︴ï¹-ï¹ï¼¿!-#%-'*,./:;?@\\¡§¶·¿;·՚-ÕŸÖ‰×€×ƒ×†×³×´Ø‰ØŠØŒØØ›ØžØŸÙª-Ù۔܀-Üß·-ß¹à °-à ¾à¡žà¥¤à¥¥à¥°à«°à·´à¹à¹šà¹›à¼„-༒༔྅à¿-࿔࿙࿚áŠ-á჻á -á¨á™á™®á›«-á›áœµáœ¶áŸ”-៖៘-áŸšá €-á …á ‡-á Šá¥„á¥…á¨žá¨Ÿáª -᪦᪨-áªáš-á ᯼-᯿᰻-᰿᱾᱿᳀-᳇᳓‖‗†-‧‰-‸※-‾â-âƒâ‡-â‘â“â•-âžâ³¹-⳼⳾⳿⵰⸀â¸â¸†-⸈⸋⸎-⸖⸘⸙⸛⸞⸟⸪-⸮⸰-⸹ã€-〃〽・꓾꓿ê˜-ê˜ê™³ê™¾ê›²-ê›·ê¡´-꡷꣎ê£ê£¸-꣺꤮꤯꥟ê§-ê§ê§žê§Ÿê©œ-꩟꫞꫟꫰꫱꯫ï¸-︖︙︰﹅﹆﹉-﹌ï¹-ï¹’ï¹”-﹗﹟-﹡﹨﹪﹫ï¼-#%-'*,.ï¼ï¼šï¼›ï¼Ÿï¼ \。、・]").test(String.fromCharCode(n))},isNumber:function(n){return n<256?[48,49,50,51,52,53,54,55,56,57,178,179,185,188,189,190].indexOf(n)!=-1:new RegExp("[0-9²³¹¼-¾٠-Ù©Û°-۹߀-߉०-९০-৯৴-৹੦-੯૦-૯à¦-à¯à²-à·à¯¦-௲౦-౯౸-౾೦-೯൦-൵à¹-๙à»-໙༠-༳á€-á‰á‚-á‚™á©-á¼á›®-ᛰ០-៩៰-៹á -á ™á¥†-á¥á§-᧚᪀-᪉áª-᪙á-á™á®°-᮹᱀-᱉á±-á±™â°â´-â¹â‚€-₉â…-ↂↅ-↉①-⒛⓪-â“¿â¶-➓⳽〇〡-〩〸-〺㆒-㆕㈠-㈩㉈-ã‰ã‰‘-㉟㊀-㊉㊱-ãŠ¿ê˜ -꘩ꛦ-ê›¯ê °-ê µê£-꣙꤀-꤉ê§-ê§™ê©-꩙꯰-꯹ï¼-ï¼™0-9Ù -Ù©Û°-۹߀-߉०-९০-৯੦-੯૦-૯à¦-à¯à¯¦-௯౦-౯೦-೯൦-൯à¹-๙à»-໙༠-༩á€-á‰á‚-႙០-៩á -á ™á¥†-á¥á§-᧙᪀-᪉áª-᪙á-á™á®°-᮹᱀-᱉á±-á±™ê˜ -꘩ê£-꣙꤀-꤉ê§-ê§™ê©-꩙꯰-꯹ï¼-9ᛮ-á›°â… -ↂↅ-ↈ〇〡-〩〸-〺ꛦ-ꛯ²³¹¼-¾৴-à§¹à²-à·à¯°-௲౸-౾൰-൵༪-༳á©-á¼áŸ°-៹᧚â°â´-â¹â‚€-₉â…-⅟↉①-⒛⓪-â“¿â¶-➓⳽㆒-㆕㈠-㈩㉈-ã‰ã‰‘-㉟㊀-㊉㊱-ãŠ¿ê °-ê µ]").test(String.fromCharCode(n))},isControl:function(n){return n<256?n>=0&&n<=31||n>=127&&n<=159:new RegExp("[\x00-\x1f€-Ÿ]").test(String.fromCharCode(n))}}});Bridge.Class.addExtend(System.Char,[System.IComparable$1(System.Char),System.IEquatable$1(System.Char)]);Bridge.define("System.FormattableString",{inherits:[System.IFormattable],statics:{invariant:function(n){return n.toString$1(System.Globalization.CultureInfo.invariantCulture)}},toString:function(){return this.toString$1(System.Globalization.CultureInfo.getCurrentCulture())},System$IFormattable$format:function(n,t){return this.toString$1(t)}});Bridge.define("System.FormattableStringImpl",{inherits:[System.FormattableString],args:null,format:null,ctor:function(n,t){t===void 0&&(t=[]);this.$initialize();System.FormattableString.ctor.call(this);this.format=n;this.args=t},getArgumentCount:function(){return this.args.length},getFormat:function(){return this.format},getArgument:function(n){return this.args[n]},getArguments:function(){return this.args},toString$1:function(n){return System.String.formatProvider.apply(System.String,[n,this.format].concat(this.args))}});Bridge.define("System.Runtime.CompilerServices.FormattableStringFactory",{statics:{create:function(n,t){return t===void 0&&(t=[]),new System.FormattableStringImpl(n,t)}}});Bridge.define("System.Exception",{ctor:function(n,t){this.$initialize();this.message=n?n:"Exception of type '"+Bridge.getTypeName(this)+"' was thrown.";this.innerException=t?t:null;this.errorStack=new Error;this.data=new(System.Collections.Generic.Dictionary$2(Object,Object))},getMessage:function(){return this.message},getInnerException:function(){return this.innerException},getStackTrace:function(){return this.errorStack.stack},getData:function(){return this.data},toString:function(){return this.getMessage()},statics:{create:function(n){return Bridge.is(n,System.Exception)?n:n instanceof TypeError?new System.NullReferenceException(n.message,new Bridge.ErrorException(n)):n instanceof RangeError?new System.ArgumentOutOfRangeException(null,n.message,new Bridge.ErrorException(n)):n instanceof Error?new Bridge.ErrorException(n):new System.Exception(n?n.toString():null)}}});Bridge.define("System.SystemException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();System.Exception.ctor.call(this,n||"System error.",t)}});Bridge.define("System.OutOfMemoryException",{inherits:[System.SystemException],ctor:function(n,t){this.$initialize();n||(n="Insufficient memory to continue the execution of the program.");System.SystemException.ctor.call(this,n,t)}});Bridge.define("System.IndexOutOfRangeException",{inherits:[System.SystemException],ctor:function(n,t){this.$initialize();n||(n="Index was outside the bounds of the array.");System.SystemException.ctor.call(this,n,t)}});Bridge.define("System.TimeoutException",{inherits:[System.SystemException],ctor:function(n,t){this.$initialize();n||(n="The operation has timed out.");System.SystemException.ctor.call(this,n,t)}});Bridge.define("System.RegexMatchTimeoutException",{inherits:[System.TimeoutException],_regexInput:"",_regexPattern:"",_matchTimeout:null,config:{init:function(){this._matchTimeout=System.TimeSpan.fromTicks(-1)}},ctor:function(){this.$initialize();System.TimeoutException.ctor.call(this)},$ctor1:function(n){this.$initialize();System.TimeoutException.ctor.call(this,n)},$ctor2:function(n,t){this.$initialize();System.TimeoutException.ctor.call(this,n,t)},$ctor3:function(n,t,i){this.$initialize();this._regexInput=n;this._regexPattern=t;this._matchTimeout=i;this.$ctor1("The RegEx engine has timed out while trying to match a pattern to an input string. This can occur for many reasons, including very large inputs or excessive backtracking caused by nested quantifiers, back-references and other factors.")},getPattern:function(){return this._regexPattern},getInput:function(){return this._regexInput},getMatchTimeout:function(){return this._matchTimeout}});Bridge.define("Bridge.ErrorException",{inherits:[System.Exception],ctor:function(n){this.$initialize();System.Exception.ctor.call(this,n.message);this.errorStack=n;this.error=n},getError:function(){return this.error}});Bridge.define("System.ArgumentException",{inherits:[System.Exception],ctor:function(n,t,i){this.$initialize();System.Exception.ctor.call(this,n||"Value does not fall within the expected range.",i);this.paramName=t?t:null},getParamName:function(){return this.paramName}});Bridge.define("System.ArgumentNullException",{inherits:[System.ArgumentException],ctor:function(n,t,i){this.$initialize();t||(t="Value cannot be null.",n&&(t+="\nParameter name: "+n));System.ArgumentException.ctor.call(this,t,n,i)}});Bridge.define("System.ArgumentOutOfRangeException",{inherits:[System.ArgumentException],ctor:function(n,t,i,r){this.$initialize();t||(t="Value is out of range.",n&&(t+="\nParameter name: "+n));System.ArgumentException.ctor.call(this,t,n,i);this.actualValue=r?r:null},getActualValue:function(){return this.actualValue}});Bridge.define("System.Globalization.CultureNotFoundException",{inherits:[System.ArgumentException],ctor:function(n,t,i,r,u){this.$initialize();i||(i="Culture is not supported.",n&&(i+="\nParameter name: "+n),t&&(i+="\n"+t+" is an invalid culture identifier."));System.ArgumentException.ctor.call(this,i,n,r);this.invalidCultureName=t?t:null;this.invalidCultureId=u?u:null},getInvalidCultureName:function(){return this.invalidCultureName},getInvalidCultureId:function(){return this.invalidCultureId}});Bridge.define("System.Collections.Generic.KeyNotFoundException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();System.Exception.ctor.call(this,n||"Key not found.",t)}});Bridge.define("System.ArithmeticException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();System.Exception.ctor.call(this,n||"Overflow or underflow in the arithmetic operation.",t)}});Bridge.define("System.DivideByZeroException",{inherits:[System.ArithmeticException],ctor:function(n,t){this.$initialize();System.ArithmeticException.ctor.call(this,n||"Division by 0.",t)}});Bridge.define("System.OverflowException",{inherits:[System.ArithmeticException],ctor:function(n,t){this.$initialize();System.ArithmeticException.ctor.call(this,n||"Arithmetic operation resulted in an overflow.",t)}});Bridge.define("System.FormatException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();System.Exception.ctor.call(this,n||"Invalid format.",t)}});Bridge.define("System.InvalidCastException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();System.Exception.ctor.call(this,n||"The cast is not valid.",t)}});Bridge.define("System.InvalidOperationException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();System.Exception.ctor.call(this,n||"Operation is not valid due to the current state of the object.",t)}});Bridge.define("System.NotImplementedException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();System.Exception.ctor.call(this,n||"The method or operation is not implemented.",t)}});Bridge.define("System.NotSupportedException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();System.Exception.ctor.call(this,n||"Specified method is not supported.",t)}});Bridge.define("System.NullReferenceException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();System.Exception.ctor.call(this,n||"Object is null.",t)}});Bridge.define("System.RankException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();System.Exception.ctor.call(this,n||"Attempted to operate on an array with the incorrect number of dimensions.",t)}});Bridge.define("Bridge.PromiseException",{inherits:[System.Exception],ctor:function(n,t,i){this.$initialize();this.arguments=System.Array.clone(n);t==null&&(t="Promise exception: [",t+=this.arguments.map(function(n){return n==null?"null":n.toString()}).join(", "),t+="]");System.Exception.ctor.call(this,t,i)},getArguments:function(){return this.arguments}});Bridge.define("System.OperationCanceledException",{inherits:[System.Exception],ctor:function(n,t,i){this.$initialize();System.Exception.ctor.call(this,n||"Operation was canceled.",i);this.cancellationToken=t||System.Threading.CancellationToken.none}});Bridge.define("System.Threading.Tasks.TaskCanceledException",{inherits:[System.OperationCanceledException],ctor:function(n,t,i){this.$initialize();System.OperationCanceledException.ctor.call(this,n||"A task was canceled.",null,i);this.task=t||null}});Bridge.define("System.AggregateException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();this.innerExceptions=new(System.Collections.ObjectModel.ReadOnlyCollection$1(System.Exception))(Bridge.hasValue(t)?Bridge.toArray(t):[]);System.Exception.ctor.call(this,n||"One or more errors occurred.",this.innerExceptions.items.length?this.innerExceptions.items[0]:null)},handle:function(n){var r,i,t;if(!Bridge.hasValue(n))throw new System.ArgumentNullException("predicate");for(r=this.innerExceptions.getCount(),i=[],t=0;t<r;t++)n(this.innerExceptions.get(t))||i.push(this.innerExceptions.get(t));if(i.length>0)throw new System.AggregateException(this.getMessage(),i);},flatten:function(){var e=new(System.Collections.Generic.List$1(System.Exception)),n=new(System.Collections.Generic.List$1(System.AggregateException)),r,u,t,i,f;for(n.add(this),r=0;n.getCount()>r;)for(u=n.getItem(r++).innerExceptions,t=0;t<u.getCount();t++)(i=u.get(t),Bridge.hasValue(i))&&(f=Bridge.as(i,System.AggregateException),Bridge.hasValue(f)?n.add(f):e.add(i));return new System.AggregateException(this.getMessage(),e)}});Bridge.define("System.Reflection.AmbiguousMatchException",{inherits:[System.Exception],ctor:function(n,t){this.$initialize();System.Exception.ctor.call(this,n||"Ambiguous match.",t)}});Bridge.define("System.Globalization.DateTimeFormatInfo",{inherits:[System.IFormatProvider,System.ICloneable],config:{alias:{getFormat:"System$IFormatProvider$getFormat"}},statics:{$allStandardFormats:{d:"shortDatePattern",D:"longDatePattern",f:"longDatePattern shortTimePattern",F:"longDatePattern longTimePattern",g:"shortDatePattern shortTimePattern",G:"shortDatePattern longTimePattern",m:"monthDayPattern",M:"monthDayPattern",o:"roundtripFormat",O:"roundtripFormat",r:"rfc1123",R:"rfc1123",s:"sortableDateTimePattern",S:"sortableDateTimePattern1",t:"shortTimePattern",T:"longTimePattern",u:"universalSortableDateTimePattern",U:"longDatePattern longTimePattern",y:"yearMonthPattern",Y:"yearMonthPattern"},ctor:function(){this.invariantInfo=Bridge.merge(new System.Globalization.DateTimeFormatInfo,{abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],abbreviatedMonthGenitiveNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],amDesignator:"AM",dateSeparator:"/",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],firstDayOfWeek:0,fullDateTimePattern:"dddd, dd MMMM yyyy HH:mm:ss",longDatePattern:"dddd, dd MMMM yyyy",longTimePattern:"HH:mm:ss",monthDayPattern:"MMMM dd",monthGenitiveNames:["January","February","March","April","May","June","July","August","September","October","November","December",""],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December",""],pmDesignator:"PM",rfc1123:"ddd, dd MMM yyyy HH':'mm':'ss 'GMT'",shortDatePattern:"MM/dd/yyyy",shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],shortTimePattern:"HH:mm",sortableDateTimePattern:"yyyy'-'MM'-'dd'T'HH':'mm':'ss",sortableDateTimePattern1:"yyyy'-'MM'-'dd",timeSeparator:":",universalSortableDateTimePattern:"yyyy'-'MM'-'dd HH':'mm':'ss'Z'",yearMonthPattern:"yyyy MMMM",roundtripFormat:"yyyy'-'MM'-'dd'T'HH':'mm':'ss.uzzz"})}},getFormat:function(n){switch(n){case System.Globalization.DateTimeFormatInfo:return this;default:return null}},getAbbreviatedDayName:function(n){if(n<0||n>6)throw new System.ArgumentOutOfRangeException("dayofweek");return this.abbreviatedDayNames[n]},getAbbreviatedMonthName:function(n){if(n<1||n>13)throw new System.ArgumentOutOfRangeException("month");return this.abbreviatedMonthNames[n-1]},getAllDateTimePatterns:function(n,t){var i=System.Globalization.DateTimeFormatInfo.$allStandardFormats,r,e,f,u,o=[];if(n){if(!i[n]){if(t)return null;throw new System.ArgumentException(null,"format");}r={};r[n]=i[n]}else r=i;for(i in r){for(e=r[i].split(" "),f="",u=0;u<e.length;u++)f=(u===0?"":f+" ")+this[e[u]];o.push(f)}return o},getDayName:function(n){if(n<0||n>6)throw new System.ArgumentOutOfRangeException("dayofweek");return this.dayNames[n]},getMonthName:function(n){if(n<1||n>13)throw new System.ArgumentOutOfRangeException("month");return this.monthNames[n-1]},getShortestDayName:function(n){if(n<0||n>6)throw new System.ArgumentOutOfRangeException("dayOfWeek");return this.shortestDayNames[n]},clone:function(){return Bridge.copy(new System.Globalization.DateTimeFormatInfo,this,["abbreviatedDayNames","abbreviatedMonthGenitiveNames","abbreviatedMonthNames","amDesignator","dateSeparator","dayNames","firstDayOfWeek","fullDateTimePattern","longDatePattern","longTimePattern","monthDayPattern","monthGenitiveNames","monthNames","pmDesignator","rfc1123","shortDatePattern","shortestDayNames","shortTimePattern","sortableDateTimePattern","timeSeparator","universalSortableDateTimePattern","yearMonthPattern","roundtripFormat"])}});Bridge.define("System.Globalization.NumberFormatInfo",{inherits:[System.IFormatProvider,System.ICloneable],config:{alias:{getFormat:"System$IFormatProvider$getFormat"}},statics:{ctor:function(){this.numberNegativePatterns=["(n)","-n","- n","n-","n -"];this.currencyNegativePatterns=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];this.currencyPositivePatterns=["$n","n$","$ n","n $"];this.percentNegativePatterns=["-n %","-n%","-%n","%-n","%n-","n-%","n%-","-% n","n %-","% n-","% -n","n- %"];this.percentPositivePatterns=["n %","n%","%n","% n"];this.invariantInfo=Bridge.merge(new System.Globalization.NumberFormatInfo,{nanSymbol:"NaN",negativeSign:"-",positiveSign:"+",negativeInfinitySymbol:"-Infinity",positiveInfinitySymbol:"Infinity",percentSymbol:"%",percentGroupSizes:[3],percentDecimalDigits:2,percentDecimalSeparator:".",percentGroupSeparator:",",percentPositivePattern:0,percentNegativePattern:0,currencySymbol:"¤",currencyGroupSizes:[3],currencyDecimalDigits:2,currencyDecimalSeparator:".",currencyGroupSeparator:",",currencyNegativePattern:0,currencyPositivePattern:0,numberGroupSizes:[3],numberDecimalDigits:2,numberDecimalSeparator:".",numberGroupSeparator:",",numberNegativePattern:1})}},getFormat:function(n){switch(n){case System.Globalization.NumberFormatInfo:return this;default:return null}},clone:function(){return Bridge.copy(new System.Globalization.NumberFormatInfo,this,["nanSymbol","negativeSign","positiveSign","negativeInfinitySymbol","positiveInfinitySymbol","percentSymbol","percentGroupSizes","percentDecimalDigits","percentDecimalSeparator","percentGroupSeparator","percentPositivePattern","percentNegativePattern","currencySymbol","currencyGroupSizes","currencyDecimalDigits","currencyDecimalSeparator","currencyGroupSeparator","currencyNegativePattern","currencyPositivePattern","numberGroupSizes","numberDecimalDigits","numberDecimalSeparator","numberGroupSeparator","numberNegativePattern"])}});Bridge.define("System.Globalization.CultureInfo",{inherits:[System.IFormatProvider,System.ICloneable],config:{alias:{getFormat:"System$IFormatProvider$getFormat"}},$entryPoint:!0,statics:{ctor:function(){this.cultures=this.cultures||{};this.invariantCulture=Bridge.merge(new System.Globalization.CultureInfo("iv",!0),{englishName:"Invariant Language (Invariant Country)",nativeName:"Invariant Language (Invariant Country)",numberFormat:System.Globalization.NumberFormatInfo.invariantInfo,dateTimeFormat:System.Globalization.DateTimeFormatInfo.invariantInfo});this.setCurrentCulture(System.Globalization.CultureInfo.invariantCulture)},getCurrentCulture:function(){return this.currentCulture},setCurrentCulture:function(n){this.currentCulture=n;System.Globalization.DateTimeFormatInfo.currentInfo=n.dateTimeFormat;System.Globalization.NumberFormatInfo.currentInfo=n.numberFormat},getCultureInfo:function(n){if(!n)throw new System.ArgumentNullException("name");return this.cultures[n]},getCultures:function(){for(var t=Bridge.getPropertyNames(this.cultures),i=[],n=0;n<t.length;n++)i.push(this.cultures[t[n]]);return i}},ctor:function(n,t){if(this.$initialize(),this.name=n,System.Globalization.CultureInfo.cultures||(System.Globalization.CultureInfo.cultures={}),System.Globalization.CultureInfo.cultures[n])Bridge.copy(this,System.Globalization.CultureInfo.cultures[n],["englishName","nativeName","numberFormat","dateTimeFormat"]);else{if(!t)throw new System.Globalization.CultureNotFoundException("name",n);System.Globalization.CultureInfo.cultures[n]=this}},getFormat:function(n){switch(n){case System.Globalization.NumberFormatInfo:return this.numberFormat;case System.Globalization.DateTimeFormatInfo:return this.dateTimeFormat;default:return null}},clone:function(){return new System.Globalization.CultureInfo(this.name)}});Bridge.Math={divRem:function(n,t,i){var r=n%t;return i.v=r,(n-r)/t},round:function(n,t,i){var u=Math.pow(10,t||0),r,f;return(n*=u,r=n>0|-(n<0),n%1==.5*r)?(f=Math.floor(n),(f+(i===4?r>0:f%2*r))/u):Math.round(n)/u},log10:Math.log10||function(n){return Math.log(n)/Math.LN10},logWithBase:function(n,t){return isNaN(n)?n:isNaN(t)?t:t===1?NaN:n!==1&&(t===0||t===Number.POSITIVE_INFINITY)?NaN:Bridge.Math.log10(n)/Bridge.Math.log10(t)},log:function(n){return n===0?Number.NEGATIVE_INFINITY:n<0||isNaN(n)?NaN:n===Number.POSITIVE_INFINITY?Number.POSITIVE_INFINITY:n===Number.NEGATIVE_INFINITY?NaN:Math.log(n)},sinh:Math.sinh||function(n){return(Math.exp(n)-Math.exp(-n))/2},cosh:Math.cosh||function(n){return(Math.exp(n)+Math.exp(-n))/2},tanh:Math.tanh||function(n){if(n===Infinity)return 1;if(n===-Infinity)return-1;var t=Math.exp(2*n);return(t-1)/(t+1)}};yt={trueString:"True",falseString:"False",is:function(n,t){return t===System.IComparable||t===System.IEquatable$1(Boolean)||t===System.IComparable$1(Boolean)?!0:!1},$is:function(n){return typeof n=="boolean"},getDefaultValue:function(){return!1},toString:function(n){return n?System.Boolean.trueString:System.Boolean.falseString},parse:function(n){if(!Bridge.hasValue(n))throw new System.ArgumentNullException("value");var t={v:!1};if(!System.Boolean.tryParse(n,t))throw new System.FormatException("Bad format for Boolean value");return t.v},tryParse:function(n,t){if(t.v=!1,!Bridge.hasValue(n))return!1;if(System.String.equals(System.Boolean.trueString,n,5))return t.v=!0,!0;if(System.String.equals(System.Boolean.falseString,n,5))return t.v=!1,!0;for(var i=0,r=n.length-1;i<n.length;){if(!System.Char.isWhiteSpace(n[i])&&!System.Char.isNull(n.charCodeAt(i)))break;i++}while(r>=i){if(!System.Char.isWhiteSpace(n[r])&&!System.Char.isNull(n.charCodeAt(r)))break;r--}return(n=n.substr(i,r-i+1),System.String.equals(System.Boolean.trueString,n,5))?(t.v=!0,!0):System.String.equals(System.Boolean.falseString,n,5)?(t.v=!1,!0):!1}};System.Boolean=yt,function(){var n=function(n,t,i,r){var u=Bridge.define(n,{inherits:[System.IComparable,System.IFormattable],statics:{$number:!0,min:t,max:i,precision:r,$is:function(n){return typeof n=="number"&&Math.floor(n,0)===n&&n>=t&&n<=i},getDefaultValue:function(){return 0},parse:function(n,r){return Bridge.Int.parseInt(n,t,i,r)},tryParse:function(n,r,u){return Bridge.Int.tryParseInt(n,r,t,i,u)},format:function(n,t,i){return Bridge.Int.format(n,t,i,u)}}});u.$kind="";Bridge.Class.addExtend(u,[System.IComparable$1(u),System.IEquatable$1(u)])};n("System.Byte",0,255,3);n("System.SByte",-128,127,3);n("System.Int16",-32768,32767,5);n("System.UInt16",0,65535,5);n("System.Int32",-2147483648,2147483647,10);n("System.UInt32",0,4294967295,10)}();Bridge.define("Bridge.Int",{inherits:[System.IComparable,System.IFormattable],statics:{$number:!0,$is:function(n){return typeof n=="number"&&isFinite(n)&&Math.floor(n,0)===n},getDefaultValue:function(){return 0},format:function(n,t,i,r){var e=(i||System.Globalization.CultureInfo.getCurrentCulture()).getFormat(System.Globalization.NumberFormatInfo),nt=e.numberDecimalSeparator,rt=e.numberGroupSeparator,f=n instanceof System.Decimal,o=n instanceof System.Int64||n instanceof System.UInt64,tt=f||o?n.isZero()?!1:n.isNegative():n<0,l,u,v,b,g,c,k,d,a;if(!o&&(f?!n.isFinite():!isFinite(n)))return Number.NEGATIVE_INFINITY===n||f&&tt?e.negativeInfinitySymbol:isNaN(n)?e.nanSymbol:e.positiveInfinitySymbol;if(t||(t="G"),l=t.match(/^([a-zA-Z])(\d*)$/),l){b=l[1].toUpperCase();u=parseInt(l[2],10);u=u>15?15:u;switch(b){case"D":return this.defaultFormat(n,isNaN(u)?1:u,0,0,e,!0);case"F":case"N":return isNaN(u)&&(u=e.numberDecimalDigits),this.defaultFormat(n,1,u,u,e,b==="F");case"G":case"E":for(var h=0,s=f||o?o&&n.eq(System.Int64.MinValue)?System.Int64(n.value.toUnsigned()):n.abs():Math.abs(n),y=l[1],it=3,p,w;f||o?s.gte(10):s>=10;)f||o?s=s.div(10):s/=10,h++;while(f||o?s.ne(0)&&s.lt(1):s!==0&&s<1)f||o?s=s.mul(10):s*=10,h--;if(b==="G"){if(g=isNaN(u),g&&(u=f?29:o?n instanceof System.Int64?19:20:r&&r.precision?r.precision:15),h>-5&&h<u||f&&g)return p=0,w=u-(h>0?h+1:1),this.defaultFormat(n,1,p,w,e,!0);y=y==="G"?"E":"e";it=2;p=0;w=(u||15)-1}else p=w=isNaN(u)?6:u;return h>=0?y+=e.positiveSign:(y+=e.negativeSign,h=-h),tt&&(f||o?s=s.mul(-1):s*=-1),this.defaultFormat(s,1,p,w,e)+y+this.defaultFormat(h,it,0,0,e,!0);case"P":return isNaN(u)&&(u=e.percentDecimalDigits),this.defaultFormat(n*100,1,u,u,e,!1,"percent");case"X":for(c=f?n.round().value.toHex().substr(2):o?n.toString(16):Math.round(n).toString(16),l[1]==="X"&&(c=c.toUpperCase()),u-=c.length;u-->0;)c="0"+c;return c;case"C":return isNaN(u)&&(u=e.currencyDecimalDigits),this.defaultFormat(n,1,u,u,e,!1,"currency");case"R":return k=f||o?n.toString():""+n,nt!=="."&&(k=k.replace(".",nt)),k.replace("e","E")}}if(t.indexOf(",.")!==-1||System.String.endsWith(t,",")){for(d=0,a=t.indexOf(",."),a===-1&&(a=t.length-1);a>-1&&t.charAt(a)===",";)d++,a--;f||o?n=n.div(Math.pow(1e3,d)):n/=Math.pow(1e3,d)}return t.indexOf("%")!==-1&&(f||o?n=n.mul(100):n*=100),t.indexOf("‰")!==-1&&(f||o?n=n.mul(1e3):n*=1e3),v=t.split(";"),(f||o?n.lt(0):n<0)&&v.length>1?(f||o?n=n.mul(-1):n*=-1,t=v[1]):t=v[(f||o?n.ne(0):!n)&&v.length>2?2:0],this.customFormat(n,t,e,!t.match(/^[^\.]*[0#],[0#]/))},defaultFormat:function(n,t,i,r,u,f,e){e=e||"number";var h=(u||System.Globalization.CultureInfo.getCurrentCulture()).getFormat(System.Globalization.NumberFormatInfo),o,p,w,ut,v,y,b=h[e+"GroupSizes"],s,k,d,l,a,g,nt,c="",tt=n instanceof System.Decimal,it=n instanceof System.Int64||n instanceof System.UInt64,ft=tt||it?n.isZero()?!1:n.isNegative():n<0,rt=!1;if(ut=Math.pow(10,r),o=tt?n.abs().toDecimalPlaces(r).toFixed():it?n.eq(System.Int64.MinValue)?n.value.toUnsigned().toString():n.abs().toString():""+ +Math.abs(n).toFixed(r),rt=o.split("").every(function(n){return n==="0"||n==="."}),p=o.indexOf("."),p>0&&(s=h[e+"DecimalSeparator"]+o.substr(p+1),o=o.substr(0,p)),o.length<t&&(o=Array(t-o.length+1).join("0")+o),s?(s.length-1<i&&(s+=Array(i-s.length+2).join("0")),r===0?s=null:s.length-1>r&&(s=s.substr(0,r+1))):i>0&&(s=h[e+"DecimalSeparator"]+Array(i+1).join("0")),v=0,y=b[v],o.length<y)c=o,s&&(c+=s);else{for(k=o.length,d=!1,nt=f?"":h[e+"GroupSeparator"];!d;){if(a=y,l=k-a,l<0&&(y+=l,a+=l,l=0,d=!0),!a)break;g=o.substr(l,a);c=c.length?g+nt+c:g;k-=a;v<b.length-1&&(v++,y=b[v])}s&&(c+=s)}return ft&&!rt?(w=System.Globalization.NumberFormatInfo[e+"NegativePatterns"][h[e+"NegativePattern"]],w.replace("-",h.negativeSign).replace("%",h.percentSymbol).replace("$",h.currencySymbol).replace("n",c)):System.Globalization.NumberFormatInfo[e+"PositivePatterns"]?(w=System.Globalization.NumberFormatInfo[e+"PositivePatterns"][h[e+"PositivePattern"]],w.replace("%",h.percentSymbol).replace("$",h.currencySymbol).replace("n",c)):c},customFormat:function(n,t,i,r){var p=0,s=-1,h=-1,w=0,b=-1,a=0,nt=1,u,f,o,v,c,k,tt=!1,it=!1,y,l,e="",d=!1,rt=!1,g=!1,ut=n instanceof System.Decimal,ft=n instanceof System.Int64||n instanceof System.UInt64,et=ut||ft?n.isZero()?!1:n.isNegative():n<0;for(y="number",t.indexOf("%")!==-1?y="percent":t.indexOf("$")!==-1&&(y="currency"),f=0;f<t.length;f++)if(u=t.charAt(f),u==="'"||u==='"'){if(f=t.indexOf(u,f+1),f<0)break}else u==="\\"?f++:((u==="0"||u==="#")&&(w+=a,u==="0"&&(a?b=w:s<0&&(s=p)),p+=!a),a=a||u===".");for(s=s<0?1:p-s,et&&(tt=!0),c=Math.pow(10,w),n=ut?System.Decimal.round(n.abs().mul(c),4).div(c).toString():ft?(n.eq(System.Int64.MinValue)?System.Int64(n.value.toUnsigned()):n.abs()).mul(c).div(c).toString():""+Math.round(Math.abs(n)*c)/c,it=n.split("").every(function(n){return n==="0"||n==="."}),k=n.indexOf("."),h=k<0?n.length:k,f=h-p,l={groupIndex:Math.max(h,s),sep:r?"":i[y+"GroupSeparator"]},h===1&&n.charAt(0)==="0"&&(d=!0),o=0;o<t.length;o++)if(u=t.charAt(o),u==="'"||u==='"'){if(v=t.indexOf(u,o+1),e+=t.substring(o+1,v<0?t.length:v),v<0)break;o=v}else u==="\\"?(e+=t.charAt(o+1),o++):u==="#"||u==="0"?(g=!0,!rt&&d&&u==="#"?f++:(l.buffer=e,f<h?(f>=0?(nt&&this.addGroup(n.substr(0,f),l),this.addGroup(n.charAt(f),l)):f>=h-s&&this.addGroup("0",l),nt=0):(b-->0||f<n.length)&&this.addGroup(f>=n.length?"0":n.charAt(f),l),e=l.buffer,f++)):u==="."?(g||d||(e+=n.substr(0,h),g=!0),(n.length>++f||b>0)&&(rt=!0,e+=i[y+"DecimalSeparator"])):u!==","&&(e+=u);return tt&&!it&&(e="-"+e),e},addGroup:function(n,t){for(var i=t.buffer,f=t.sep,r=t.groupIndex,u=0,e=n.length;u<e;u++)i+=n.charAt(u),f&&r>1&&r--%3==1&&(i+=f);t.buffer=i;t.groupIndex=r},parseFloat:function(n,t){var i={};return Bridge.Int.tryParseFloat(n,t,i,!1),i.v},tryParseFloat:function(n,t,i,r){var l,a,u,v;if(i.v=0,r==null&&(r=!0),n==null){if(r)return!1;throw new System.ArgumentNullException("s");}n=n.trim();var f=(t||System.Globalization.CultureInfo.getCurrentCulture()).getFormat(System.Globalization.NumberFormatInfo),h=f.numberDecimalSeparator,e=f.numberGroupSeparator,o="Input string was not in a correct format.",s=n.indexOf(h),c=e?n.indexOf(e):-1;if(s>-1&&(s<c||c>-1&&s<n.indexOf(e,s)||n.indexOf(h,s+1)>-1)){if(r)return!1;throw new System.FormatException(o);}if(h!=="."&&e!=="."&&n.indexOf(".")>-1){if(r)return!1;throw new System.FormatException(o);}if(c>-1){for(l="",u=0;u<n.length;u++)n[u]!==e&&(l+=n[u]);n=l}if(n===f.negativeInfinitySymbol)return i.v=Number.NEGATIVE_INFINITY,!0;if(n===f.positiveInfinitySymbol)return i.v=Number.POSITIVE_INFINITY,!0;if(n===f.nanSymbol)return i.v=Number.NaN,!0;for(a=0,u=0;u<n.length;u++)if(System.Char.isLetter(n[u].charCodeAt(0)))if(n[u].toLowerCase()==="e"){if(a++,a>1){if(r)return!1;throw new System.FormatException(o);}}else{if(r)return!1;throw new System.FormatException(o);}if(v=parseFloat(n.replace(h,".")),isNaN(v)){if(r)return!1;throw new System.FormatException(o);}return i.v=v,!0},parseInt:function(n,t,i,r){if(r=r||10,n==null)throw new System.ArgumentNullException("str");if(r<=10&&!/^[+-]?[0-9]+$/.test(n)||r==16&&!/^[+-]?[0-9A-F]+$/gi.test(n))throw new System.FormatException("Input string was not in a correct format.");var u=parseInt(n,r);if(isNaN(u))throw new System.FormatException("Input string was not in a correct format.");if(u<t||u>i)throw new System.OverflowException;return u},tryParseInt:function(n,t,i,r,u){return(t.v=0,u=u||10,u<=10&&!/^[+-]?[0-9]+$/.test(n)||u==16&&!/^[+-]?[0-9A-F]+$/gi.test(n))?!1:(t.v=parseInt(n,u),t.v<i||t.v>r)?!1:!0},isInfinite:function(n){return n===Number.POSITIVE_INFINITY||n===Number.NEGATIVE_INFINITY},trunc:function(n){return Bridge.isNumber(n)?n>0?Math.floor(n):Math.ceil(n):Bridge.Int.isInfinite(n)?n:null},div:function(n,t){if(!Bridge.isNumber(n)||!Bridge.isNumber(t))return null;if(t===0)throw new System.DivideByZeroException;return this.trunc(n/t)},mod:function(n,t){if(!Bridge.isNumber(n)||!Bridge.isNumber(t))return null;if(t===0)throw new System.DivideByZeroException;return n%t},check:function(n,t){if(System.Int64.is64Bit(n))return System.Int64.check(n,t);if(n instanceof System.Decimal)return System.Decimal.toInt(n,t);if(Bridge.isNumber(n)&&!t.$is(n))throw new System.OverflowException;return Bridge.Int.isInfinite(n)?t===System.Int64||t===System.UInt64?t.MinValue:t.min:n},sxb:function(n){return Bridge.isNumber(n)?n|(n&128?4294967040:0):Bridge.Int.isInfinite(n)?System.SByte.min:null},sxs:function(n){return Bridge.isNumber(n)?n|(n&32768?4294901760:0):Bridge.Int.isInfinite(n)?System.Int16.min:null},clip8:function(n){return Bridge.isNumber(n)?Bridge.Int.sxb(n&255):Bridge.Int.isInfinite(n)?System.SByte.min:null},clipu8:function(n){return Bridge.isNumber(n)?n&255:Bridge.Int.isInfinite(n)?System.Byte.min:null},clip16:function(n){return Bridge.isNumber(n)?Bridge.Int.sxs(n&65535):Bridge.Int.isInfinite(n)?System.Int16.min:null},clipu16:function(n){return Bridge.isNumber(n)?n&65535:Bridge.Int.isInfinite(n)?System.UInt16.min:null},clip32:function(n){return Bridge.isNumber(n)?n|0:Bridge.Int.isInfinite(n)?System.Int32.min:null},clipu32:function(n){return Bridge.isNumber(n)?n>>>0:Bridge.Int.isInfinite(n)?System.UInt32.min:null},clip64:function(n){return Bridge.isNumber(n)?System.Int64(Bridge.Int.trunc(n)):Bridge.Int.isInfinite(n)?System.Int64.MinValue:null},clipu64:function(n){return Bridge.isNumber(n)?System.UInt64(Bridge.Int.trunc(n)):Bridge.Int.isInfinite(n)?System.UInt64.MinValue:null},sign:function(n){return Bridge.isNumber(n)?n===0?0:n<0?-1:1:null}}});Bridge.Int.$kind="";Bridge.Class.addExtend(Bridge.Int,[System.IComparable$1(Bridge.Int),System.IEquatable$1(Bridge.Int)]);Bridge.define("System.Double",{inherits:[System.IComparable,System.IFormattable],statics:{min:-Number.MAX_VALUE,max:Number.MAX_VALUE,precision:15,$number:!0,$is:function(n){return typeof n=="number"},getDefaultValue:function(){return 0},parse:function(n,t){return Bridge.Int.parseFloat(n,t)},tryParse:function(n,t,i){return Bridge.Int.tryParseFloat(n,t,i)},format:function(n,t,i){return Bridge.Int.format(n,t,i,System.Double)}}});System.Double.$kind="";Bridge.Class.addExtend(System.Double,[System.IComparable$1(System.Double),System.IEquatable$1(System.Double)]);Bridge.define("System.Single",{inherits:[System.IComparable,System.IFormattable],statics:{min:-34028234663852886e22,max:34028234663852886e22,precision:7,$number:!0,$is:System.Double.$is,getDefaultValue:System.Double.getDefaultValue,parse:System.Double.parse,tryParse:System.Double.tryParse,format:function(n,t,i){return Bridge.Int.format(n,t,i,System.Single)}}});System.Single.$kind="";Bridge.Class.addExtend(System.Single,[System.IComparable$1(System.Single),System.IEquatable$1(System.Single)]),function(n){function i(n,t,i){this.low=n|0;this.high=t|0;this.unsigned=!!i}function u(n){return!0===(n&&n.__isLong__)}function h(n,i){var r,u;if(i){if(n>>>=0,(u=0<=n&&256>n)&&(r=p[n]))return r;r=t(n,0>(n|0)?-1:0,!0);u&&(p[n]=r)}else{if(n|=0,(u=-128<=n&&128>n)&&(r=y[n]))return r;r=t(n,0>n?-1:0,!1);u&&(y[n]=r)}return r}function f(n,i){if(isNaN(n)||!isFinite(n))return i?s:e;if(i){if(0>n)return s;if(n>=d)return k}else{if(n<=-g)return r;if(n+1>=g)return b}return 0>n?f(-n,i).neg():t(n%4294967296|0,n/4294967296|0,i)}function t(n,t,r){return new i(n,t,r)}function v(n,t,i){var s,r,u,o,h;if(0===n.length)throw Error("empty string");if("NaN"===n||"Infinity"===n||"+Infinity"===n||"-Infinity"===n)return e;if("number"==typeof t?(i=t,t=!1):t=!!t,i=i||10,2>i||36<i)throw RangeError("radix");if(0<(s=n.indexOf("-")))throw Error("interior hyphen");if(0===s)return v(n.substring(1),t,i).neg();for(s=f(l(i,8)),r=e,u=0;u<n.length;u+=8)o=Math.min(8,n.length-u),h=parseInt(n.substring(u,u+o),i),8>o?(o=f(l(i,o)),r=r.mul(o).add(f(h))):(r=r.mul(s),r=r.add(f(h)));return r.unsigned=t,r}function o(n){return n instanceof i?n:"number"==typeof n?f(n):"string"==typeof n?v(n):t(n.low,n.high,n.unsigned)}var y,p,l,s,c,w,a,b,k,r;n.Bridge.$Long=i;i.__isLong__;Object.defineProperty(i.prototype,"__isLong__",{value:!0,enumerable:!1,configurable:!1});i.isLong=u;y={};p={};i.fromInt=h;i.fromNumber=f;i.fromBits=t;l=Math.pow;i.fromString=v;i.fromValue=o;var d=4294967296*4294967296,g=d/2,nt=h(16777216),e=h(0);i.ZERO=e;s=h(0,!0);i.UZERO=s;c=h(1);i.ONE=c;w=h(1,!0);i.UONE=w;a=h(-1);i.NEG_ONE=a;b=t(-1,2147483647,!1);i.MAX_VALUE=b;k=t(-1,-1,!0);i.MAX_UNSIGNED_VALUE=k;r=t(0,-2147483648,!1);i.MIN_VALUE=r;n=i.prototype;n.toInt=function(){return this.unsigned?this.low>>>0:this.low};n.toNumber=function(){return this.unsigned?4294967296*(this.high>>>0)+(this.low>>>0):4294967296*this.high+(this.low>>>0)};n.toString=function(n){if(n=n||10,2>n||36<n)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative()){if(this.eq(r)){var t=f(n),u=this.div(t),t=u.mul(t).sub(this);return u.toString(n)+t.toInt().toString(n)}return("undefined"==typeof n||10===n?"-":"")+this.neg().toString(n)}for(var u=f(l(n,6),this.unsigned),t=this,e="";;){var o=t.div(u),i=(t.sub(o.mul(u)).toInt()>>>0).toString(n),t=o;if(t.isZero())return i+e;for(;6>i.length;)i="0"+i;e=""+i+e}};n.getHighBits=function(){return this.high};n.getHighBitsUnsigned=function(){return this.high>>>0};n.getLowBits=function(){return this.low};n.getLowBitsUnsigned=function(){return this.low>>>0};n.getNumBitsAbs=function(){if(this.isNegative())return this.eq(r)?64:this.neg().getNumBitsAbs();for(var t=0!=this.high?this.high:this.low,n=31;0<n&&0==(t&1<<n);n--);return 0!=this.high?n+33:n+1};n.isZero=function(){return 0===this.high&&0===this.low};n.isNegative=function(){return!this.unsigned&&0>this.high};n.isPositive=function(){return this.unsigned||0<=this.high};n.isOdd=function(){return 1==(this.low&1)};n.isEven=function(){return 0==(this.low&1)};n.equals=function(n){return u(n)||(n=o(n)),this.unsigned!==n.unsigned&&1==this.high>>>31&&1==n.high>>>31?!1:this.high===n.high&&this.low===n.low};n.eq=n.equals;n.notEquals=function(n){return!this.eq(n)};n.neq=n.notEquals;n.lessThan=function(n){return 0>this.comp(n)};n.lt=n.lessThan;n.lessThanOrEqual=function(n){return 0>=this.comp(n)};n.lte=n.lessThanOrEqual;n.greaterThan=function(n){return 0<this.comp(n)};n.gt=n.greaterThan;n.greaterThanOrEqual=function(n){return 0<=this.comp(n)};n.gte=n.greaterThanOrEqual;n.compare=function(n){if(u(n)||(n=o(n)),this.eq(n))return 0;var t=this.isNegative(),i=n.isNegative();return t&&!i?-1:!t&&i?1:this.unsigned?n.high>>>0>this.high>>>0||n.high===this.high&&n.low>>>0>this.low>>>0?-1:1:this.sub(n).isNegative()?-1:1};n.comp=n.compare;n.negate=function(){return!this.unsigned&&this.eq(r)?r:this.not().add(c)};n.neg=n.negate;n.add=function(n){u(n)||(n=o(n));var e=this.high>>>16,i=this.high&65535,r=this.low>>>16,s=n.high>>>16,h=n.high&65535,c=n.low>>>16,f;return f=0+((this.low&65535)+(n.low&65535)),n=0+(f>>>16),n+=r+c,r=0+(n>>>16),r+=i+h,i=0+(r>>>16),i=i+(e+s)&65535,t((n&65535)<<16|f&65535,i<<16|r&65535,this.unsigned)};n.subtract=function(n){return u(n)||(n=o(n)),this.add(n.neg())};n.sub=n.subtract;n.multiply=function(n){var h,i,s,v;if(this.isZero()||(u(n)||(n=o(n)),n.isZero()))return e;if(this.eq(r))return n.isOdd()?r:e;if(n.eq(r))return this.isOdd()?r:e;if(this.isNegative())return n.isNegative()?this.neg().mul(n.neg()):this.neg().mul(n).neg();if(n.isNegative())return this.mul(n.neg()).neg();if(this.lt(nt)&&n.lt(nt))return f(this.toNumber()*n.toNumber(),this.unsigned);var w=this.high>>>16,y=this.high&65535,l=this.low>>>16,c=this.low&65535,b=n.high>>>16,p=n.high&65535,a=n.low>>>16;return n=n.low&65535,v=0+c*n,s=0+(v>>>16),s+=l*n,i=0+(s>>>16),s=(s&65535)+c*a,i+=s>>>16,s&=65535,i+=y*n,h=0+(i>>>16),i=(i&65535)+l*a,h+=i>>>16,i&=65535,i+=c*p,h+=i>>>16,i&=65535,h=h+(w*n+y*a+l*p+c*b)&65535,t(s<<16|v&65535,h<<16|i,this.unsigned)};n.mul=n.multiply;n.divide=function(n){var t,i,v;if(u(n)||(n=o(n)),n.isZero())throw Error("division by zero");if(this.isZero())return this.unsigned?s:e;if(this.unsigned)n.unsigned||(n=n.toUnsigned());else{if(this.eq(r))return n.eq(c)||n.eq(a)?r:n.eq(r)?c:(t=this.shr(1).div(n).shl(1),t.eq(e))?n.isNegative()?c:a:(i=this.sub(n.mul(t)),t.add(i.div(n)));if(n.eq(r))return this.unsigned?s:e;if(this.isNegative())return n.isNegative()?this.neg().div(n.neg()):this.neg().div(n).neg();if(n.isNegative())return this.div(n.neg()).neg()}if(this.unsigned){if(n.gt(this))return s;if(n.gt(this.shru(1)))return w;v=s}else v=e;for(i=this;i.gte(n);){t=Math.max(1,Math.floor(i.toNumber()/n.toNumber()));for(var p=Math.ceil(Math.log(t)/Math.LN2),p=48>=p?1:l(2,p-48),h=f(t),y=h.mul(n);y.isNegative()||y.gt(i);)t-=p,h=f(t,this.unsigned),y=h.mul(n);h.isZero()&&(h=c);v=v.add(h);i=i.sub(y)}return v};n.div=n.divide;n.modulo=function(n){return u(n)||(n=o(n)),this.sub(this.div(n).mul(n))};n.mod=n.modulo;n.not=function(){return t(~this.low,~this.high,this.unsigned)};n.and=function(n){return u(n)||(n=o(n)),t(this.low&n.low,this.high&n.high,this.unsigned)};n.or=function(n){return u(n)||(n=o(n)),t(this.low|n.low,this.high|n.high,this.unsigned)};n.xor=function(n){return u(n)||(n=o(n)),t(this.low^n.low,this.high^n.high,this.unsigned)};n.shiftLeft=function(n){return u(n)&&(n=n.toInt()),0==(n&=63)?this:32>n?t(this.low<<n,this.high<<n|this.low>>>32-n,this.unsigned):t(0,this.low<<n-32,this.unsigned)};n.shl=n.shiftLeft;n.shiftRight=function(n){return u(n)&&(n=n.toInt()),0==(n&=63)?this:32>n?t(this.low>>>n|this.high<<32-n,this.high>>n,this.unsigned):t(this.high>>n-32,0<=this.high?0:-1,this.unsigned)};n.shr=n.shiftRight;n.shiftRightUnsigned=function(n){if(u(n)&&(n=n.toInt()),n&=63,0===n)return this;var i=this.high;return 32>n?t(this.low>>>n|i<<32-n,i>>>n,this.unsigned):32===n?t(i,0,this.unsigned):t(i>>>n-32,0,this.unsigned)};n.shru=n.shiftRightUnsigned;n.toSigned=function(){return this.unsigned?t(this.low,this.high,!1):this};n.toUnsigned=function(){return this.unsigned?this:t(this.low,this.high,!0)}}(Bridge.global);System.Int64=function(n){if(this.constructor!==System.Int64)return new System.Int64(n);Bridge.hasValue(n)||(n=0);this.T=System.Int64;this.unsigned=!1;this.value=System.Int64.getValue(n)};System.Int64.$$name="System.Int64";System.Int64.prototype.$$name="System.Int64";System.Int64.$kind="struct";System.Int64.prototype.$kind="struct";System.Int64.$$inherits=[];Bridge.Class.addExtend(System.Int64,[System.IComparable,System.IFormattable,System.IComparable$1(System.Int64),System.IEquatable$1(System.Int64)]);System.Int64.$is=function(n){return n instanceof System.Int64};System.Int64.is64Bit=function(n){return n instanceof System.Int64||n instanceof System.UInt64};System.Int64.getDefaultValue=function(){return System.Int64.Zero};System.Int64.getValue=function(n){return Bridge.hasValue(n)?n instanceof Bridge.$Long?n:n instanceof System.Int64?n.value:n instanceof System.UInt64?n.value.toSigned():Bridge.isArray(n)?new Bridge.$Long(n[0],n[1]):Bridge.isString(n)?Bridge.$Long.fromString(n):Bridge.isNumber(n)?Bridge.$Long.fromNumber(n):n instanceof System.Decimal?Bridge.$Long.fromString(n.toString()):Bridge.$Long.fromValue(n):null};System.Int64.create=function(n){return Bridge.hasValue(n)?n instanceof System.Int64?n:new System.Int64(n):null};System.Int64.lift=function(n){return Bridge.hasValue(n)?System.Int64.create(n):null};System.Int64.toNumber=function(n){return n?n.toNumber():null};System.Int64.prototype.toNumberDivided=function(n){var t=this.div(n),i=this.mod(n),r=i.toNumber()/n;return t.toNumber()+r};System.Int64.prototype.toJSON=function(){return this.toNumber()};System.Int64.prototype.toString=function(n,t){return!n&&!t?this.value.toString():Bridge.isNumber(n)&&!t?this.value.toString(n):Bridge.Int.format(this,n,t)};System.Int64.prototype.format=function(n,t){return Bridge.Int.format(this,n,t)};System.Int64.prototype.isNegative=function(){return this.value.isNegative()};System.Int64.prototype.abs=function(){if(this.T===System.Int64&&this.eq(System.Int64.MinValue))throw new System.OverflowException;return new this.T(this.value.isNegative()?this.value.neg():this.value)};System.Int64.prototype.compareTo=function(n){return this.value.compare(this.T.getValue(n))};System.Int64.prototype.add=function(n,t){var i=this.T.getValue(n),r=new this.T(this.value.add(i));if(t){var u=this.value.isNegative(),f=i.isNegative(),e=r.value.isNegative();if(u&&f&&!e||!u&&!f&&e||this.T===System.UInt64&&r.lt(System.UInt64.max(this,i)))throw new System.OverflowException;}return r};System.Int64.prototype.sub=function(n,t){var i=this.T.getValue(n),r=new this.T(this.value.sub(i));if(t){var u=this.value.isNegative(),f=i.isNegative(),e=r.value.isNegative();if(u&&!f&&!e||!u&&f&&e||this.T===System.UInt64&&this.value.lt(i))throw new System.OverflowException;}return r};System.Int64.prototype.isZero=function(){return this.value.isZero()};System.Int64.prototype.mul=function(n,t){var i=this.T.getValue(n),r=new this.T(this.value.mul(i)),u;if(t){var f=this.sign(),e=i.isZero()?0:i.isNegative()?-1:1,o=r.sign();if(this.T===System.Int64){if(this.eq(System.Int64.MinValue)||this.eq(System.Int64.MaxValue)){if(i.neq(1)&&i.neq(0))throw new System.OverflowException;return r}if(i.eq(Bridge.$Long.MIN_VALUE)||i.eq(Bridge.$Long.MAX_VALUE)){if(this.neq(1)&&this.neq(0))throw new System.OverflowException;return r}if(f===-1&&e===-1&&o!==1||f===1&&e===1&&o!==1||f===-1&&e===1&&o!==-1||f===1&&e===-1&&o!==-1)throw new System.OverflowException;if(u=r.abs(),u.lt(this.abs())||u.lt(System.Int64(i).abs()))throw new System.OverflowException;}else{if(this.eq(System.UInt64.MaxValue)){if(i.neq(1)&&i.neq(0))throw new System.OverflowException;return r}if(i.eq(Bridge.$Long.MAX_UNSIGNED_VALUE)){if(this.neq(1)&&this.neq(0))throw new System.OverflowException;return r}if(u=r.abs(),u.lt(this.abs())||u.lt(System.Int64(i).abs()))throw new System.OverflowException;}}return r};System.Int64.prototype.div=function(n){return new this.T(this.value.div(this.T.getValue(n)))};System.Int64.prototype.mod=function(n){return new this.T(this.value.mod(this.T.getValue(n)))};System.Int64.prototype.neg=function(n){if(n&&this.T===System.Int64&&this.eq(System.Int64.MinValue))throw new System.OverflowException;return new this.T(this.value.neg())};System.Int64.prototype.inc=function(n){return this.add(1,n)};System.Int64.prototype.dec=function(n){return this.sub(1,n)};System.Int64.prototype.sign=function(){return this.value.isZero()?0:this.value.isNegative()?-1:1};System.Int64.prototype.clone=function(){return new this.T(this)};System.Int64.prototype.ne=function(n){return this.value.neq(this.T.getValue(n))};System.Int64.prototype.neq=function(n){return this.value.neq(this.T.getValue(n))};System.Int64.prototype.eq=function(n){return this.value.eq(this.T.getValue(n))};System.Int64.prototype.lt=function(n){return this.value.lt(this.T.getValue(n))};System.Int64.prototype.lte=function(n){return this.value.lte(this.T.getValue(n))};System.Int64.prototype.gt=function(n){return this.value.gt(this.T.getValue(n))};System.Int64.prototype.gte=function(n){return this.value.gte(this.T.getValue(n))};System.Int64.prototype.equals=function(n){return this.value.eq(this.T.getValue(n))};System.Int64.prototype.equalsT=function(n){return this.equals(n)};System.Int64.prototype.getHashCode=function(){var n=this.sign()*397+this.value.high|0;return n*397+this.value.low|0};System.Int64.prototype.toNumber=function(){return this.value.toNumber()};System.Int64.parse=function(n){if(n==null)throw new System.ArgumentNullException("str");if(!/^[+-]?[0-9]+$/.test(n))throw new System.FormatException("Input string was not in a correct format.");var t=new System.Int64(n);if(n!==t.toString())throw new System.OverflowException;return t};System.Int64.tryParse=function(n,t){try{return n==null||!/^[+-]?[0-9]+$/.test(n)?(t.v=System.Int64(Bridge.$Long.ZERO),!1):(t.v=new System.Int64(n),n!==t.v.toString())?(t.v=System.Int64(Bridge.$Long.ZERO),!1):!0}catch(i){return t.v=System.Int64(Bridge.$Long.ZERO),!1}};System.Int64.divRem=function(n,t,i){n=System.Int64(n);t=System.Int64(t);var r=n.mod(t);return i.v=r,n.sub(r).div(t)};System.Int64.min=function(){for(var t=[],i,n=0,r=arguments.length;n<r;n++)t.push(System.Int64.getValue(arguments[n]));for(n=0,i=t[0];++n<t.length;)t[n].lt(i)&&(i=t[n]);return new System.Int64(i)};System.Int64.max=function(){for(var t=[],i,n=0,r=arguments.length;n<r;n++)t.push(System.Int64.getValue(arguments[n]));for(n=0,i=t[0];++n<t.length;)t[n].gt(i)&&(i=t[n]);return new System.Int64(i)};System.Int64.prototype.and=function(n){return new this.T(this.value.and(this.T.getValue(n)))};System.Int64.prototype.not=function(){return new this.T(this.value.not())};System.Int64.prototype.or=function(n){return new this.T(this.value.or(this.T.getValue(n)))};System.Int64.prototype.shl=function(n){return new this.T(this.value.shl(n))};System.Int64.prototype.shr=function(n){return new this.T(this.value.shr(n))};System.Int64.prototype.shru=function(n){return new this.T(this.value.shru(n))};System.Int64.prototype.xor=function(n){return new this.T(this.value.xor(this.T.getValue(n)))};System.Int64.check=function(n,t){if(Bridge.Int.isInfinite(n))return t===System.Int64||t===System.UInt64?t.MinValue:t.min;if(!n)return null;var i,r;if(t===System.Int64){if(n instanceof System.Int64)return n;if(i=n.value.toString(),r=new System.Int64(i),i!==r.value.toString())throw new System.OverflowException;return r}if(t===System.UInt64){if(n instanceof System.UInt64)return n;if(n.value.isNegative())throw new System.OverflowException;if(i=n.value.toString(),r=new System.UInt64(i),i!==r.value.toString())throw new System.OverflowException;return r}return Bridge.Int.check(n.toNumber(),t)};System.Int64.clip8=function(n){return n?Bridge.Int.sxb(n.value.low&255):Bridge.Int.isInfinite(n)?System.SByte.min:null};System.Int64.clipu8=function(n){return n?n.value.low&255:Bridge.Int.isInfinite(n)?System.Byte.min:null};System.Int64.clip16=function(n){return n?Bridge.Int.sxs(n.value.low&65535):Bridge.Int.isInfinite(n)?System.Int16.min:null};System.Int64.clipu16=function(n){return n?n.value.low&65535:Bridge.Int.isInfinite(n)?System.UInt16.min:null};System.Int64.clip32=function(n){return n?n.value.low|0:Bridge.Int.isInfinite(n)?System.Int32.min:null};System.Int64.clipu32=function(n){return n?n.value.low>>>0:Bridge.Int.isInfinite(n)?System.UInt32.min:null};System.Int64.clip64=function(n){return n?new System.Int64(n.value.toSigned()):Bridge.Int.isInfinite(n)?System.Int64.MinValue:null};System.Int64.clipu64=function(n){return n?new System.UInt64(n.value.toUnsigned()):Bridge.Int.isInfinite(n)?System.UInt64.MinValue:null};System.Int64.Zero=System.Int64(Bridge.$Long.ZERO);System.Int64.MinValue=System.Int64(Bridge.$Long.MIN_VALUE);System.Int64.MaxValue=System.Int64(Bridge.$Long.MAX_VALUE);System.Int64.precision=19;System.UInt64=function(n){if(this.constructor!==System.UInt64)return new System.UInt64(n);Bridge.hasValue(n)||(n=0);this.T=System.UInt64;this.unsigned=!0;this.value=System.UInt64.getValue(n,!0)};System.UInt64.$$name="System.UInt64";System.UInt64.prototype.$$name="System.UInt64";System.UInt64.$kind="struct";System.UInt64.prototype.$kind="struct";System.UInt64.$$inherits=[];Bridge.Class.addExtend(System.UInt64,[System.IComparable,System.IFormattable,System.IComparable$1(System.UInt64),System.IEquatable$1(System.UInt64)]);System.UInt64.$is=function(n){return n instanceof System.UInt64};System.UInt64.getDefaultValue=function(){return System.UInt64.Zero};System.UInt64.getValue=function(n){return Bridge.hasValue(n)?n instanceof Bridge.$Long?n:n instanceof System.UInt64?n.value:n instanceof System.Int64?n.value.toUnsigned():Bridge.isArray(n)?new Bridge.$Long(n[0],n[1],!0):Bridge.isString(n)?Bridge.$Long.fromString(n,!0):Bridge.isNumber(n)?Bridge.$Long.fromNumber(n,!0):n instanceof System.Decimal?Bridge.$Long.fromString(n.toString(),!0):Bridge.$Long.fromValue(n):null};System.UInt64.create=function(n){return Bridge.hasValue(n)?n instanceof System.UInt64?n:new System.UInt64(n):null};System.UInt64.lift=function(n){return Bridge.hasValue(n)?System.UInt64.create(n):null};System.UInt64.prototype.toJSON=System.Int64.prototype.toJSON;System.UInt64.prototype.toString=System.Int64.prototype.toString;System.UInt64.prototype.format=System.Int64.prototype.format;System.UInt64.prototype.isNegative=System.Int64.prototype.isNegative;System.UInt64.prototype.abs=System.Int64.prototype.abs;System.UInt64.prototype.compareTo=System.Int64.prototype.compareTo;System.UInt64.prototype.add=System.Int64.prototype.add;System.UInt64.prototype.sub=System.Int64.prototype.sub;System.UInt64.prototype.isZero=System.Int64.prototype.isZero;System.UInt64.prototype.mul=System.Int64.prototype.mul;System.UInt64.prototype.div=System.Int64.prototype.div;System.UInt64.prototype.toNumberDivided=System.Int64.prototype.toNumberDivided;System.UInt64.prototype.mod=System.Int64.prototype.mod;System.UInt64.prototype.neg=System.Int64.prototype.neg;System.UInt64.prototype.inc=System.Int64.prototype.inc;System.UInt64.prototype.dec=System.Int64.prototype.dec;System.UInt64.prototype.sign=System.Int64.prototype.sign;System.UInt64.prototype.clone=System.Int64.prototype.clone;System.UInt64.prototype.ne=System.Int64.prototype.ne;System.UInt64.prototype.neq=System.Int64.prototype.neq;System.UInt64.prototype.eq=System.Int64.prototype.eq;System.UInt64.prototype.lt=System.Int64.prototype.lt;System.UInt64.prototype.lte=System.Int64.prototype.lte;System.UInt64.prototype.gt=System.Int64.prototype.gt;System.UInt64.prototype.gte=System.Int64.prototype.gte;System.UInt64.prototype.equals=System.Int64.prototype.equals;System.UInt64.prototype.equalsT=System.Int64.prototype.equalsT;System.UInt64.prototype.getHashCode=System.Int64.prototype.getHashCode;System.UInt64.prototype.toNumber=System.Int64.prototype.toNumber;System.UInt64.parse=function(n){if(n==null)throw new System.ArgumentNullException("str");if(!/^[+-]?[0-9]+$/.test(n))throw new System.FormatException("Input string was not in a correct format.");var t=new System.UInt64(n);if(t.value.isNegative())throw new System.OverflowException;if(n!==t.toString())throw new System.OverflowException;return t};System.UInt64.tryParse=function(n,t){try{return n==null||!/^[+-]?[0-9]+$/.test(n)?(t.v=System.UInt64(Bridge.$Long.UZERO),!1):(t.v=new System.UInt64(n),t.v.isNegative())?(t.v=System.UInt64(Bridge.$Long.UZERO),!1):n!==t.v.toString()?(t.v=System.UInt64(Bridge.$Long.UZERO),!1):!0}catch(i){return t.v=System.UInt64(Bridge.$Long.UZERO),!1}};System.UInt64.min=function(){for(var t=[],i,n=0,r=arguments.length;n<r;n++)t.push(System.UInt64.getValue(arguments[n]));for(n=0,i=t[0];++n<t.length;)t[n].lt(i)&&(i=t[n]);return new System.UInt64(i)};System.UInt64.max=function(){for(var t=[],i,n=0,r=arguments.length;n<r;n++)t.push(System.UInt64.getValue(arguments[n]));for(n=0,i=t[0];++n<t.length;)t[n].gt(i)&&(i=t[n]);return new System.UInt64(i)};System.UInt64.divRem=function(n,t,i){n=System.UInt64(n);t=System.UInt64(t);var r=n.mod(t);return i.v=r,n.sub(r).div(t)};System.UInt64.prototype.and=System.Int64.prototype.and;System.UInt64.prototype.not=System.Int64.prototype.not;System.UInt64.prototype.or=System.Int64.prototype.or;System.UInt64.prototype.shl=System.Int64.prototype.shl;System.UInt64.prototype.shr=System.Int64.prototype.shr;System.UInt64.prototype.shru=System.Int64.prototype.shru;System.UInt64.prototype.xor=System.Int64.prototype.xor;System.UInt64.Zero=System.UInt64(Bridge.$Long.UZERO);System.UInt64.MinValue=System.UInt64.Zero;System.UInt64.MaxValue=System.UInt64(Bridge.$Long.MAX_UNSIGNED_VALUE);System.UInt64.precision=20;!function(n){function e(n){var u,i,f,o=n.length-1,e="",t=n[0];if(o>0){for(e+=t,u=1;o>u;u++)f=n[u]+"",i=r-f.length,i&&(e+=k(i)),e+=f;t=n[u];f=t+"";i=r-f.length;i&&(e+=k(i))}else if(0===t)return"0";for(;t%10==0;)t/=10;return e+t}function c(n,t,i){if(n!==~~n||t>n||n>i)throw Error(nt+n);}function rt(n,t,i,u){for(var o,s,f,e=n[0];e>=10;e/=10)--t;return--t<0?(t+=r,o=0):(o=Math.ceil((t+1)/r),t%=r),e=h(10,r-t),f=n[o]%e|0,null==u?3>t?(0==t?f=f/100|0:1==t&&(f=f/10|0),s=4>i&&99999==f||i>3&&49999==f||5e4==f||0==f):s=(4>i&&f+1==e||i>3&&f+1==e/2)&&(n[o+1]/e/100|0)==h(10,t-2)-1||(f==e/2||0==f)&&0==(n[o+1]/e/100|0):4>t?(0==t?f=f/1e3|0:1==t?f=f/100|0:2==t&&(f=f/10|0),s=(u||4>i)&&9999==f||!u&&i>3&&4999==f):s=((u||4>i)&&f+1==e||!u&&i>3&&f+1==e/2)&&(n[o+1]/e/1e3|0)==h(10,t-3)-1,s}function w(n,t,i){for(var u,f,r=[0],e=0,s=n.length;s>e;){for(f=r.length;f--;)r[f]*=t;for(r[0]+=o.indexOf(n.charAt(e++)),u=0;u<r.length;u++)r[u]>i-1&&(void 0===r[u+1]&&(r[u+1]=0),r[u+1]+=r[u]/i|0,r[u]%=i)}return r.reverse()}function ri(n,t){var i,u,f=t.d.length,e,r;for(32>f?(i=Math.ceil(f/3),u=Math.pow(4,-i).toString()):(i=16,u="2.3283064365386962890625e-10"),n.precision+=i,t=tt(n,1,t.times(u),new n(1)),e=i;e--;)r=t.times(t),t=r.times(r).minus(r).times(8).plus(1);return n.precision-=i,t}function i(n,t,i,f){var a,c,o,s,p,w,v,e,l,b=n.constructor;n:if(null!=t){if(e=n.d,!e)return n;for(a=1,s=e[0];s>=10;s/=10)a++;if(c=t-a,0>c)c+=r,o=t,v=e[l=0],p=v/h(10,a-o-1)%10|0;else if(l=Math.ceil((c+1)/r),s=e.length,l>=s){if(!f)break n;for(;s++<=l;)e.push(0);v=p=0;a=1;c%=r;o=c-r+1}else{for(v=s=e[l],a=1;s>=10;s/=10)a++;c%=r;o=c-r+a;p=0>o?0:v/h(10,a-o-1)%10|0}if(f=f||0>t||void 0!==e[l+1]||(0>o?v:v%h(10,a-o-1)),w=4>i?(p||f)&&(0==i||i==(n.s<0?3:2)):p>5||5==p&&(4==i||f||6==i&&(c>0?o>0?v/h(10,a-o):0:e[l-1])%10&1||i==(n.s<0?8:7)),1>t||!e[0])return e.length=0,w?(t-=n.e+1,e[0]=h(10,(r-t%r)%r),n.e=-t||0):e[0]=n.e=0,n;if(0==c?(e.length=l,s=1,l--):(e.length=l+1,s=h(10,r-c),e[l]=o>0?(v/h(10,a-o)%h(10,o)|0)*s:0),w)for(;;){if(0==l){for(c=1,o=e[0];o>=10;o/=10)c++;for(o=e[0]+=s,s=1;o>=10;o/=10)s++;c!=s&&(n.e++,e[0]==y&&(e[0]=1));break}if(e[l]+=s,e[l]!=y)break;e[l--]=0;s=1}for(c=e.length;0===e[--c];)e.pop()}return u&&(n.e>b.maxE?(n.d=null,n.e=NaN):n.e<b.minE&&(n.e=0,n.d=[0])),n}function p(n,t,i){if(!n.isFinite())return wt(n);var u,o=n.e,r=e(n.d),f=r.length;return t?(i&&(u=i-f)>0?r=r.charAt(0)+"."+r.slice(1)+k(u):f>1&&(r=r.charAt(0)+"."+r.slice(1)),r=r+(n.e<0?"e":"e+")+n.e):0>o?(r="0."+k(-o-1)+r,i&&(u=i-f)>0&&(r+=k(u))):o>=f?(r+=k(o+1-f),i&&(u=i-o-1)>0&&(r=r+"."+k(u))):((u=o+1)<f&&(r=r.slice(0,u)+"."+r.slice(u)),i&&(u=i-f)>0&&(o+1===f&&(r+="."),r+=k(u))),r}function ut(n,t){for(var i=1,u=n[0];u>=10;u/=10)i++;return i+t*r-1}function ft(n,t,r){if(t>ou)throw u=!0,r&&(n.precision=r),Error(ii);return i(new n(et),t,1,!0)}function a(n,t,r){if(t>lt)throw Error(ii);return i(new n(ot),t,r,!0)}function at(n){var t=n.length-1,i=t*r+1;if(t=n[t]){for(;t%10==0;t/=10)i--;for(t=n[0];t>=10;t/=10)i++}return i}function k(n){for(var t="";n--;)t+="0";return t}function vt(n,t,i,f){var o,e=new n(1),h=Math.ceil(f/r+4);for(u=!1;;){if(i%2&&(e=e.times(t),dt(e.d,h)&&(o=!0)),i=s(i/2),0===i){i=e.d.length-1;o&&0===e.d[i]&&++e.d[i];break}t=t.times(t);dt(t.d,h)}return u=!0,e}function yt(n){return 1&n.d[n.d.length-1]}function pt(n,t,i){for(var r,u=new n(t[0]),f=0;++f<t.length;){if(r=new n(t[f]),!r.s){u=r;break}u[i](r)&&(u=r)}return u}function ht(n,t){var l,v,b,a,o,c,r,y=0,k=0,p=0,s=n.constructor,d=s.rounding,w=s.precision;if(!n.d||!n.d[0]||n.e>17)return new s(n.d?n.d[0]?n.s<0?0:1/0:1:n.s?n.s<0?0:n:NaN);for(null==t?(u=!1,r=w):r=t,c=new s(.03125);n.e>-2;)n=n.times(c),p+=5;for(v=Math.log(h(2,p))/Math.LN10*2+5|0,r+=v,l=a=o=new s(1),s.precision=r;;){if(a=i(a.times(n),r,1),l=l.times(++k),c=o.plus(f(a,l,r,1)),e(c.d).slice(0,r)===e(o.d).slice(0,r)){for(b=p;b--;)o=i(o.times(o),r,1);if(null!=t)return s.precision=w,o;if(!(3>y&&rt(o.d,r-v,d,y)))return i(o,s.precision=w,d,u=!0);s.precision=r+=10;l=a=c=new s(1);k=0;y++}o=c}}function d(n,t){var c,l,b,y,w,it,h,p,o,g,nt,ut=1,k=10,r=n,a=r.d,s=r.constructor,tt=s.rounding,v=s.precision;if(r.s<0||!a||!a[0]||!r.e&&1==a[0]&&1==a.length)return new s(a&&!a[0]?-1/0:1!=r.s?NaN:a?0:r);if(null==t?(u=!1,o=v):o=t,s.precision=o+=k,c=e(a),l=c.charAt(0),!(Math.abs(y=r.e)<15e14))return p=ft(s,o+2,v).times(y+""),r=d(new s(l+"."+c.slice(1)),o-k).plus(p),s.precision=v,null==t?i(r,v,tt,u=!0):r;for(;7>l&&1!=l||1==l&&c.charAt(1)>3;)r=r.times(n),c=e(r.d),l=c.charAt(0),ut++;for(y=r.e,l>1?(r=new s("0."+c),y++):r=new s(l+"."+c.slice(1)),g=r,h=w=r=f(r.minus(1),r.plus(1),o,1),nt=i(r.times(r),o,1),b=3;;){if(w=i(w.times(nt),o,1),p=h.plus(f(w,new s(b),o,1)),e(p.d).slice(0,o)===e(h.d).slice(0,o)){if(h=h.times(2),0!==y&&(h=h.plus(ft(s,o+2,v).times(y+""))),h=f(h,new s(ut),o,1),null!=t)return s.precision=v,h;if(!rt(h.d,o-k,tt,it))return i(h,s.precision=v,tt,u=!0);s.precision=o+=k;p=w=r=f(g.minus(1),g.plus(1),o,1);nt=i(r.times(r),o,1);b=it=1}h=p;b+=2}}function wt(n){return String(n.s*n.s/0)}function bt(n,t){var f,i,e;for((f=t.indexOf("."))>-1&&(t=t.replace(".","")),(i=t.search(/e/i))>0?(0>f&&(f=i),f+=+t.slice(i+1),t=t.substring(0,i)):0>f&&(f=t.length),i=0;48===t.charCodeAt(i);i++);for(e=t.length;48===t.charCodeAt(e-1);--e);if(t=t.slice(i,e)){if(e-=i,n.e=f=f-i-1,n.d=[],i=(f+1)%r,0>f&&(i+=r),e>i){for(i&&n.d.push(+t.slice(0,i)),e-=r;e>i;)n.d.push(+t.slice(i,i+=r));t=t.slice(i);i=r-t.length}else i-=e;for(;i--;)t+="0";n.d.push(+t);u&&(n.e>n.constructor.maxE?(n.d=null,n.e=NaN):n.e<n.constructor.minE&&(n.e=0,n.d=[0]))}else n.e=0,n.d=[0];return n}function ui(n,t){var e,s,a,i,h,c,o,r,l;if("Infinity"===t||"NaN"===t)return+t||(n.s=NaN),n.e=NaN,n.d=null,n;if(ru.test(t))e=16,t=t.toLowerCase();else if(iu.test(t))e=2;else{if(!uu.test(t))throw Error(nt+t);e=8}for(i=t.search(/p/i),i>0?(o=+t.slice(i+1),t=t.substring(2,i)):t=t.slice(2),i=t.indexOf("."),h=i>=0,s=n.constructor,h&&(t=t.replace(".",""),c=t.length,i=c-i,a=vt(s,new s(e),i,2*i)),r=w(t,e,y),l=r.length-1,i=l;0===r[i];--i)r.pop();return 0>i?new s(0*n.s):(n.e=ut(r,l),n.d=r,u=!1,h&&(n=f(n,a,4*c)),o&&(n=n.times(Math.abs(o)<54?Math.pow(2,o):v.pow(2,o))),u=!0,n)}function fi(n,t){var i,u=t.d.length;if(3>u)return tt(n,2,t,t);i=1.4*Math.sqrt(u);i=i>16?16:0|i;t=t.times(Math.pow(5,-i));t=tt(n,2,t,t);for(var r,f=new n(5),e=new n(16),o=new n(20);i--;)r=t.times(t),t=t.times(f.plus(r.times(e.times(r).minus(o))));return t}function tt(n,t,i,e,o){var h,s,c,l,y=1,a=n.precision,v=Math.ceil(a/r);for(u=!1,l=i.times(i),c=new n(e);;){if(s=f(c.times(l),new n(t++*t++),a,1),c=o?e.plus(s):e.minus(s),e=f(s.times(l),new n(t++*t++),a,1),s=c.plus(e),void 0!==s.d[v]){for(h=v;s.d[h]===c.d[h]&&h--;);if(-1==h)break}h=c;c=e;e=s;s=h;y++}return u=!0,s.d.length=v+1,s}function kt(n,t){var r,i=t.s<0,u=a(n,n.precision,1),f=u.times(.5);if(t=t.abs(),t.lte(f))return b=i?4:1,t;if(r=t.divToInt(u),r.isZero())b=i?3:2;else{if(t=t.minus(r.times(u)),t.lte(f))return b=yt(r)?i?2:3:i?4:1,t;b=yt(r)?i?1:4:i?3:2}return t.minus(u).abs()}function ct(n,t,i,r){var a,l,s,d,h,v,u,e,y,b=n.constructor,k=void 0!==i;if(k?(c(i,1,g),void 0===r?r=b.rounding:c(r,0,8)):(i=b.precision,r=b.rounding),n.isFinite()){for(u=p(n),s=u.indexOf("."),k?(a=2,16==t?i=4*i-3:8==t&&(i=3*i-2)):a=t,s>=0&&(u=u.replace(".",""),y=new b(1),y.e=u.length-s,y.d=w(p(y),10,a),y.e=y.d.length),e=w(u,10,a),l=h=e.length;0==e[--h];)e.pop();if(e[0]){if(0>s?l--:(n=new b(n),n.d=e,n.e=l,n=f(n,y,i,r,0,a),e=n.d,l=n.e,v=ni),s=e[i],d=a/2,v=v||void 0!==e[i+1],v=4>r?(void 0!==s||v)&&(0===r||r===(n.s<0?3:2)):s>d||s===d&&(4===r||v||6===r&&1&e[i-1]||r===(n.s<0?8:7)),e.length=i,v)for(;++e[--i]>a-1;)e[i]=0,i||(++l,e.unshift(1));for(h=e.length;!e[h-1];--h);for(s=0,u="";h>s;s++)u+=o.charAt(e[s]);if(k){if(h>1)if(16==t||8==t){for(s=16==t?4:3,--h;h%s;h++)u+="0";for(e=w(u,a,t),h=e.length;!e[h-1];--h);for(s=1,u="1.";h>s;s++)u+=o.charAt(e[s])}else u=u.charAt(0)+"."+u.slice(1);u=u+(0>l?"p":"p+")+l}else if(0>l){for(;++l;)u="0"+u;u="0."+u}else if(++l>h)for(l-=h;l--;)u+="0";else h>l&&(u=u.slice(0,l)+"."+u.slice(l))}else u=k?"0p+0":"0";u=(16==t?"0x":2==t?"0b":8==t?"0o":"")+u}else u=wt(n);return n.s<0?"-"+u:u}function dt(n,t){if(n.length>t)return(n.length=t,!0)}function ei(n){return new this(n).abs()}function oi(n){return new this(n).acos()}function si(n){return new this(n).acosh()}function hi(n,t){return new this(n).plus(t)}function ci(n){return new this(n).asin()}function li(n){return new this(n).asinh()}function ai(n){return new this(n).atan()}function vi(n){return new this(n).atanh()}function yi(n,t){n=new this(n);t=new this(t);var i,u=this.precision,e=this.rounding,r=u+4;return n.s&&t.s?n.d||t.d?!t.d||n.isZero()?(i=t.s<0?a(this,u,e):new this(0),i.s=n.s):!n.d||t.isZero()?(i=a(this,r,1).times(.5),i.s=n.s):t.s<0?(this.precision=r,this.rounding=1,i=this.atan(f(n,t,r,1)),t=a(this,r,1),this.precision=u,this.rounding=e,i=n.s<0?i.minus(t):i.plus(t)):i=this.atan(f(n,t,r,1)):(i=a(this,r,1).times(t.s>0?.25:.75),i.s=n.s):i=new this(NaN),i}function pi(n){return new this(n).cbrt()}function wi(n){return i(n=new this(n),n.e+1,2)}function bi(n){if(!n||"object"!=typeof n)throw Error(st+"Object expected");for(var i,t,u=["precision",1,g,"rounding",0,8,"toExpNeg",-it,0,"toExpPos",0,it,"maxE",0,it,"minE",-it,0,"modulo",0,9],r=0;r<u.length;r+=3)if(void 0!==(t=n[i=u[r]])){if(!(s(t)===t&&t>=u[r+1]&&t<=u[r+2]))throw Error(nt+i+": "+t);this[i]=t}if(n.hasOwnProperty(i="crypto"))if(void 0===(t=n[i]))this[i]=t;else{if(t!==!0&&t!==!1&&0!==t&&1!==t)throw Error(nt+i+": "+t);this[i]=!(!t||!l||!l.getRandomValues&&!l.randomBytes)}return this}function ki(n){return new this(n).cos()}function di(n){return new this(n).cosh()}function gt(n){function i(n){var r,u,f,t=this;if(!(t instanceof i))return new i(n);if(t.constructor=i,n instanceof i)return t.s=n.s,t.e=n.e,void(t.d=(n=n.d)?n.slice():n);if(f=typeof n,"number"===f){if(0===n)return t.s=0>1/n?-1:1,t.e=0,void(t.d=[0]);if(0>n?(n=-n,t.s=-1):t.s=1,n===~~n&&1e7>n){for(r=0,u=n;u>=10;u/=10)r++;return t.e=r,void(t.d=[n])}return 0*n!=0?(n||(t.s=NaN),t.e=NaN,void(t.d=null)):bt(t,n.toString())}if("string"!==f)throw Error(nt+n);return 45===n.charCodeAt(0)?(n=n.slice(1),t.s=-1):t.s=1,fu.test(n)?bt(t,n):ui(t,n)}var r,u,f;if(i.prototype=t,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=bi,i.clone=gt,i.abs=ei,i.acos=oi,i.acosh=si,i.add=hi,i.asin=ci,i.asinh=li,i.atan=ai,i.atanh=vi,i.atan2=yi,i.cbrt=pi,i.ceil=wi,i.cos=ki,i.cosh=di,i.div=gi,i.exp=nr,i.floor=tr,i.fromJSON=ir,i.hypot=rr,i.ln=ur,i.log=fr,i.log10=or,i.log2=er,i.max=sr,i.min=hr,i.mod=cr,i.mul=lr,i.pow=ar,i.random=vr,i.round=yr,i.sign=pr,i.sin=wr,i.sinh=br,i.sqrt=kr,i.sub=dr,i.tan=gr,i.tanh=nu,i.trunc=tu,void 0===n&&(n={}),n)for(f=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],r=0;r<f.length;)n.hasOwnProperty(u=f[r++])||(n[u]=this[u]);return i.config(n),i}function gi(n,t){return new this(n).div(t)}function nr(n){return new this(n).exp()}function tr(n){return i(n=new this(n),n.e+1,3)}function ir(n){var i,u,r,t;if("string"!=typeof n||!n)throw Error(nt+n);if(r=n.length,t=o.indexOf(n.charAt(0)),1===r)return new this(t>81?[-1/0,1/0,NaN][t-82]:t>40?-(t-41):t);if(64&t)u=16&t,i=u?(7&t)-3:(15&t)-7,r=1;else{if(2===r)return t=88*t+o.indexOf(n.charAt(1)),new this(t>=2816?-(t-2816)-41:t+41);if(u=32&t,!(31&t))return n=w(n.slice(1),88,10).join(""),new this(u?"-"+n:n);i=15&t;r=i+1;i=1===i?o.indexOf(n.charAt(1)):2===i?88*o.indexOf(n.charAt(1))+o.indexOf(n.charAt(2)):+w(n.slice(1,r),88,10).join("");16&t&&(i=-i)}return n=w(n.slice(r),88,10).join(""),i=i-n.length+1,n=n+"e"+i,new this(u?"-"+n:n)}function rr(){var i,n,t=new this(0);for(u=!1,i=0;i<arguments.length;)if(n=new this(arguments[i++]),n.d)t.d&&(t=t.plus(n.times(n)));else{if(n.s)return u=!0,new this(1/0);t=n}return u=!0,t.sqrt()}function ur(n){return new this(n).ln()}function fr(n,t){return new this(n).log(t)}function er(n){return new this(n).log(2)}function or(n){return new this(n).log(10)}function sr(){return pt(this,arguments,"lt")}function hr(){return pt(this,arguments,"gt")}function cr(n,t){return new this(n).mod(t)}function lr(n,t){return new this(n).mul(t)}function ar(n,t){return new this(n).pow(t)}function vr(n){var e,o,i,f,t=0,s=new this(1),u=[];if(void 0===n?n=this.precision:c(n,1,g),i=Math.ceil(n/r),this.crypto===!1)for(;i>t;)u[t++]=1e7*Math.random()|0;else if(l&&l.getRandomValues)for(e=l.getRandomValues(new Uint32Array(i));i>t;)f=e[t],f>=429e7?e[t]=l.getRandomValues(new Uint32Array(1))[0]:u[t++]=f%1e7;else if(l&&l.randomBytes){for(e=l.randomBytes(i*=4);i>t;)f=e[t]+(e[t+1]<<8)+(e[t+2]<<16)+((127&e[t+3])<<24),f>=214e7?l.randomBytes(4).copy(e,t):(u.push(f%1e7),t+=4);t=i/4}else{if(this.crypto)throw Error(st+"crypto unavailable");for(;i>t;)u[t++]=1e7*Math.random()|0}for(i=u[--t],n%=r,i&&n&&(f=h(10,r-n),u[t]=(i/f|0)*f);0===u[t];t--)u.pop();if(0>t)o=0,u=[0];else{for(o=-1;0===u[0];o-=r)u.shift();for(i=1,f=u[0];f>=10;f/=10)i++;r>i&&(o-=r-i)}return s.e=o,s.d=u,s}function yr(n){return i(n=new this(n),n.e+1,this.rounding)}function pr(n){return n=new this(n),n.d?n.d[0]?n.s:0*n.s:n.s||NaN}function wr(n){return new this(n).sin()}function br(n){return new this(n).sinh()}function kr(n){return new this(n).sqrt()}function dr(n,t){return new this(n).sub(t)}function gr(n){return new this(n).tan()}function nu(n){return new this(n).tanh()}function tu(n){return i(n=new this(n),n.e+1,1)}var ni,ti,b,it=9e15,g=1e9,o="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%()*+,-./:;=?@[]^_`{|}~",et="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ot="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",v={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-it,maxE:it,crypto:void 0},l="undefined"!=typeof crypto?crypto:null,u=!0,st="[DecimalError] ",nt=st+"Invalid argument: ",ii=st+"Precision limit exceeded",s=Math.floor,h=Math.pow,iu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ru=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,uu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,fu=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,y=1e7,r=7,eu=9007199254740991,ou=et.length-1,lt=ot.length-1,t={},f;if(t.absoluteValue=t.abs=function(){var n=new this.constructor(this);return n.s<0&&(n.s=1),i(n)},t.ceil=function(){return i(new this.constructor(this),this.e+1,2)},t.comparedTo=t.cmp=function(n){var r,h,f,e,o=this,i=o.d,u=(n=new o.constructor(n)).d,t=o.s,s=n.s;if(!i||!u)return t&&s?t!==s?t:i===u?0:!i^0>t?1:-1:NaN;if(!i[0]||!u[0])return i[0]?t:u[0]?-s:0;if(t!==s)return t;if(o.e!==n.e)return o.e>n.e^0>t?1:-1;for(f=i.length,e=u.length,r=0,h=e>f?f:e;h>r;++r)if(i[r]!==u[r])return i[r]>u[r]^0>t?1:-1;return f===e?0:f>e^0>t?1:-1},t.cosine=t.cos=function(){var u,f,t=this,n=t.constructor;return t.d?t.d[0]?(u=n.precision,f=n.rounding,n.precision=u+Math.max(t.e,t.sd())+r,n.rounding=1,t=ri(n,kt(n,t)),n.precision=u,n.rounding=f,i(2==b||3==b?t.neg():t,u,f,!0)):new n(1):new n(NaN)},t.cubeRoot=t.cbrt=function(){var r,w,n,o,v,c,l,h,y,p,t=this,a=t.constructor;if(!t.isFinite()||t.isZero())return new a(t);for(u=!1,c=t.s*Math.pow(t.s*t,1/3),c&&Math.abs(c)!=1/0?o=new a(c.toString()):(n=e(t.d),r=t.e,(c=(r-n.length+1)%3)&&(n+=1==c||-2==c?"0":"00"),c=Math.pow(n,1/3),r=s((r+1)/3)-(r%3==(0>r?-1:2)),c==1/0?n="5e"+r:(n=c.toExponential(),n=n.slice(0,n.indexOf("e")+1)+r),o=new a(n),o.s=t.s),l=(r=a.precision)+3;;)if(h=o,y=h.times(h).times(h),p=y.plus(t),o=f(p.plus(t).times(h),p.plus(y),l+2,1),e(h.d).slice(0,l)===(n=e(o.d)).slice(0,l)){if(n=n.slice(l-3,l+1),"9999"!=n&&(v||"4999"!=n)){+n&&(+n.slice(1)||"5"!=n.charAt(0))||(i(o,r+1,1),w=!o.times(o).times(o).eq(t));break}if(!v&&(i(h,r+1,0),h.times(h).times(h).eq(t))){o=h;break}l+=4;v=1}return u=!0,i(o,r,a.rounding,w)},t.decimalPlaces=t.dp=function(){var n,i=this.d,t=NaN;if(i){if(n=i.length-1,t=(n-s(this.e/r))*r,n=i[n])for(;n%10==0;n/=10)t--;0>t&&(t=0)}return t},t.dividedBy=t.div=function(n){return f(this,new this.constructor(n))},t.dividedToIntegerBy=t.divToInt=function(n){var r=this,t=r.constructor;return i(f(r,new t(n),0,1,1),t.precision,t.rounding)},t.equals=t.eq=function(n){return 0===this.cmp(n)},t.floor=function(){return i(new this.constructor(this),this.e+1,3)},t.greaterThan=t.gt=function(n){return this.cmp(n)>0},t.greaterThanOrEqualTo=t.gte=function(n){var t=this.cmp(n);return 1==t||0===t},t.hyperbolicCosine=t.cosh=function(){var r,u,f,h,e,n=this,t=n.constructor,c=new t(1),o,l,s;if(!n.isFinite())return new t(n.s?1/0:NaN);if(n.isZero())return c;for(f=t.precision,h=t.rounding,t.precision=f+Math.max(n.e,n.sd())+4,t.rounding=1,e=n.d.length,32>e?(r=Math.ceil(e/3),u=Math.pow(4,-r).toString()):(r=16,u="2.3283064365386962890625e-10"),n=tt(t,1,n.times(u),new t(1),!0),l=r,s=new t(8);l--;)o=n.times(n),n=c.minus(o.times(s.minus(o.times(s))));return i(n,t.precision=f,t.rounding=h,!0)},t.hyperbolicSine=t.sinh=function(){var r,u,f,e,n=this,t=n.constructor;if(!n.isFinite()||n.isZero())return new t(n);if(u=t.precision,f=t.rounding,t.precision=u+Math.max(n.e,n.sd())+4,t.rounding=1,e=n.d.length,3>e)n=tt(t,2,n,n,!0);else{r=1.4*Math.sqrt(e);r=r>16?16:0|r;n=n.times(Math.pow(5,-r));n=tt(t,2,n,n,!0);for(var o,s=new t(5),h=new t(16),c=new t(20);r--;)o=n.times(n),n=n.times(s.plus(o.times(h.times(o).plus(c))))}return t.precision=u,t.rounding=f,i(n,u,f,!0)},t.hyperbolicTangent=t.tanh=function(){var i,r,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,r=n.rounding,n.precision=i+7,n.rounding=1,f(t.sinh(),t.cosh(),n.precision=i,n.rounding=r)):new n(t.s)},t.inverseCosine=t.acos=function(){var u,t=this,n=t.constructor,f=t.abs().cmp(1),i=n.precision,r=n.rounding;return-1!==f?0===f?t.isNeg()?a(n,i,r):new n(0):new n(NaN):t.isZero()?a(n,i+4,r).times(.5):(n.precision=i+6,n.rounding=1,t=t.asin(),u=a(n,i+4,r).times(.5),n.precision=i,n.rounding=r,u.minus(t))},t.inverseHyperbolicCosine=t.acosh=function(){var i,r,n=this,t=n.constructor;return n.lte(1)?new t(n.eq(1)?0:NaN):n.isFinite()?(i=t.precision,r=t.rounding,t.precision=i+Math.max(Math.abs(n.e),n.sd())+4,t.rounding=1,u=!1,n=n.times(n).minus(1).sqrt().plus(n),u=!0,t.precision=i,t.rounding=r,n.ln()):new t(n)},t.inverseHyperbolicSine=t.asinh=function(){var i,r,n=this,t=n.constructor;return!n.isFinite()||n.isZero()?new t(n):(i=t.precision,r=t.rounding,t.precision=i+2*Math.max(Math.abs(n.e),n.sd())+6,t.rounding=1,u=!1,n=n.times(n).plus(1).sqrt().plus(n),u=!0,t.precision=i,t.rounding=r,n.ln())},t.inverseHyperbolicTangent=t.atanh=function(){var r,u,o,e,n=this,t=n.constructor;return n.isFinite()?n.e>=0?new t(n.abs().eq(1)?n.s/0:n.isZero()?n:NaN):(r=t.precision,u=t.rounding,e=n.sd(),Math.max(e,r)<2*-n.e-1?i(new t(n),r,u,!0):(t.precision=o=e-n.e,n=f(n.plus(1),new t(1).minus(n),o+r,1),t.precision=r+4,t.rounding=1,n=n.ln(),t.precision=r,t.rounding=u,n.times(.5))):new t(NaN)},t.inverseSine=t.asin=function(){var r,u,i,f,n=this,t=n.constructor;return n.isZero()?new t(n):(u=n.abs().cmp(1),i=t.precision,f=t.rounding,-1!==u?0===u?(r=a(t,i+4,f).times(.5),r.s=n.s,r):new t(NaN):(t.precision=i+6,t.rounding=1,n=n.div(new t(1).minus(n.times(n)).sqrt().plus(1)).atan(),t.precision=i,t.rounding=f,n.times(2)))},t.inverseTangent=t.atan=function(){var e,c,h,l,o,v,t,y,p,n=this,f=n.constructor,s=f.precision,w=f.rounding;if(n.isFinite()){if(n.isZero())return new f(n);if(n.abs().eq(1)&<>=s+4)return t=a(f,s+4,w).times(.25),t.s=n.s,t}else{if(!n.s)return new f(NaN);if(lt>=s+4)return t=a(f,s+4,w).times(.5),t.s=n.s,t}for(f.precision=y=s+10,f.rounding=1,h=Math.min(28,y/r+2|0),e=h;e;--e)n=n.div(n.times(n).plus(1).sqrt().plus(1));for(u=!1,c=Math.ceil(y/r),l=1,p=n.times(n),t=new f(n),o=n;-1!==e;)if(o=o.times(p),v=t.minus(o.div(l+=2)),o=o.times(p),t=v.plus(o.div(l+=2)),void 0!==t.d[c])for(e=c;t.d[e]===v.d[e]&&e--;);return h&&(t=t.times(2<<h-1)),u=!0,i(t,f.precision=s,f.rounding=w,!0)},t.isFinite=function(){return!!this.d},t.isInteger=t.isInt=function(){return!!this.d&&s(this.e/r)>this.d.length-2},t.isNaN=function(){return!this.s},t.isNegative=t.isNeg=function(){return this.s<0},t.isPositive=t.isPos=function(){return this.s>0},t.isZero=function(){return!!this.d&&0===this.d[0]},t.lessThan=t.lt=function(n){return this.cmp(n)<0},t.lessThanOrEqualTo=t.lte=function(n){return this.cmp(n)<1},t.logarithm=t.log=function(n){var l,t,a,o,p,v,r,s,c=this,h=c.constructor,y=h.precision,w=h.rounding;if(null==n)n=new h(10),l=!0;else{if(n=new h(n),t=n.d,n.s<0||!t||!t[0]||n.eq(1))return new h(NaN);l=n.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new h(t&&!t[0]?-1/0:1!=c.s?NaN:t?0:1/0);if(l)if(t.length>1)p=!0;else{for(o=t[0];o%10==0;)o/=10;p=1!==o}if(u=!1,r=y+5,v=d(c,r),a=l?ft(h,r+10):d(n,r),s=f(v,a,r,1),rt(s.d,o=y,w))do if(r+=10,v=d(c,r),a=l?ft(h,r+10):d(n,r),s=f(v,a,r,1),!p){+e(s.d).slice(o+1,o+15)+1==1e14&&(s=i(s,y+1,0));break}while(rt(s.d,o+=10,w));return u=!0,i(s,y,w)},t.minus=t.sub=function(n){var l,p,f,w,c,o,k,b,t,d,v,e,h=this,a=h.constructor;if(n=new a(n),!h.d||!n.d)return h.s&&n.s?h.d?n.s=-n.s:n=new a(n.d||h.s!==n.s?h:NaN):n=new a(NaN),n;if(h.s!=n.s)return n.s=-n.s,h.plus(n);if(t=h.d,e=n.d,k=a.precision,b=a.rounding,!t[0]||!e[0]){if(e[0])n.s=-n.s;else{if(!t[0])return new a(3===b?-0:0);n=new a(h)}return u?i(n,k,b):n}if(p=s(n.e/r),d=s(h.e/r),t=t.slice(),c=d-p){for(v=0>c,v?(l=t,c=-c,o=e.length):(l=e,p=d,o=t.length),f=Math.max(Math.ceil(k/r),o)+2,c>f&&(c=f,l.length=1),l.reverse(),f=c;f--;)l.push(0);l.reverse()}else{for(f=t.length,o=e.length,v=o>f,v&&(o=f),f=0;o>f;f++)if(t[f]!=e[f]){v=t[f]<e[f];break}c=0}for(v&&(l=t,t=e,e=l,n.s=-n.s),o=t.length,f=e.length-o;f>0;--f)t[o++]=0;for(f=e.length;f>c;){if(t[--f]<e[f]){for(w=f;w&&0===t[--w];)t[w]=y-1;--t[w];t[f]+=y}t[f]-=e[f]}for(;0===t[--o];)t.pop();for(;0===t[0];t.shift())--p;return t[0]?(n.d=t,n.e=ut(t,p),u?i(n,k,b):n):new a(3===b?-0:0)},t.modulo=t.mod=function(n){var e,t=this,r=t.constructor;return n=new r(n),!t.d||!n.s||n.d&&!n.d[0]?new r(NaN):!n.d||t.d&&!t.d[0]?i(new r(t),r.precision,r.rounding):(u=!1,9==r.modulo?(e=f(t,n.abs(),0,3,1),e.s*=n.s):e=f(t,n,0,r.modulo,1),e=e.times(n),u=!0,t.minus(e))},t.naturalExponential=t.exp=function(){return ht(this)},t.naturalLogarithm=t.ln=function(){return d(this)},t.negated=t.neg=function(){var n=new this.constructor(this);return n.s=-n.s,i(n)},t.plus=t.add=function(n){var v,c,p,f,l,e,w,b,t,h,o=this,a=o.constructor;if(n=new a(n),!o.d||!n.d)return o.s&&n.s?o.d||(n=new a(n.d||o.s===n.s?o:NaN)):n=new a(NaN),n;if(o.s!=n.s)return n.s=-n.s,o.minus(n);if(t=o.d,h=n.d,w=a.precision,b=a.rounding,!t[0]||!h[0])return h[0]||(n=new a(o)),u?i(n,w,b):n;if(l=s(o.e/r),p=s(n.e/r),t=t.slice(),f=l-p){for(0>f?(c=t,f=-f,e=h.length):(c=h,p=l,e=t.length),l=Math.ceil(w/r),e=l>e?l+1:e+1,f>e&&(f=e,c.length=1),c.reverse();f--;)c.push(0);c.reverse()}for(e=t.length,f=h.length,0>e-f&&(f=e,c=h,h=t,t=c),v=0;f;)v=(t[--f]=t[f]+h[f]+v)/y|0,t[f]%=y;for(v&&(t.unshift(v),++p),e=t.length;0==t[--e];)t.pop();return n.d=t,n.e=ut(t,p),u?i(n,w,b):n},t.precision=t.sd=function(n){var t,i=this;if(void 0!==n&&n!==!!n&&1!==n&&0!==n)throw Error(nt+n);return i.d?(t=at(i.d),n&&i.e+1>t&&(t=i.e+1)):t=NaN,t},t.round=function(){var n=this,t=n.constructor;return i(new t(n),n.e+1,t.rounding)},t.sine=t.sin=function(){var u,f,n=this,t=n.constructor;return n.isFinite()?n.isZero()?new t(n):(u=t.precision,f=t.rounding,t.precision=u+Math.max(n.e,n.sd())+r,t.rounding=1,n=fi(t,kt(t,n)),t.precision=u,t.rounding=f,i(b>2?n.neg():n,u,f,!0)):new t(NaN)},t.squareRoot=t.sqrt=function(){var p,n,l,r,y,c,h=this,a=h.d,t=h.e,o=h.s,v=h.constructor;if(1!==o||!a||!a[0])return new v(!o||0>o&&(!a||a[0])?NaN:a?h:1/0);for(u=!1,o=Math.sqrt(+h),0==o||o==1/0?(n=e(a),(n.length+t)%2==0&&(n+="0"),o=Math.sqrt(n),t=s((t+1)/2)-(0>t||t%2),o==1/0?n="1e"+t:(n=o.toExponential(),n=n.slice(0,n.indexOf("e")+1)+t),r=new v(n)):r=new v(o.toString()),l=(t=v.precision)+3;;)if(c=r,r=c.plus(f(h,c,l+2,1)).times(.5),e(c.d).slice(0,l)===(n=e(r.d)).slice(0,l)){if(n=n.slice(l-3,l+1),"9999"!=n&&(y||"4999"!=n)){+n&&(+n.slice(1)||"5"!=n.charAt(0))||(i(r,t+1,1),p=!r.times(r).eq(h));break}if(!y&&(i(c,t+1,0),c.times(c).eq(h))){r=c;break}l+=4;y=1}return u=!0,i(r,t,v.rounding,p)},t.tangent=t.tan=function(){var r,u,n=this,t=n.constructor;return n.isFinite()?n.isZero()?new t(n):(r=t.precision,u=t.rounding,t.precision=r+10,t.rounding=1,n=n.sin(),n.s=1,n=f(n,new t(1).minus(n.times(n)).sqrt(),r+10,0),t.precision=r,t.rounding=u,i(2==b||4==b?n.neg():n,r,u,!0)):new t(NaN)},t.times=t.mul=function(n){var a,b,f,h,t,v,k,c,l,p=this,w=p.constructor,e=p.d,o=(n=new w(n)).d;if(n.s*=p.s,!(e&&e[0]&&o&&o[0]))return new w(!n.s||e&&!e[0]&&!o||o&&!o[0]&&!e?NaN:e&&o?0*n.s:n.s/0);for(b=s(p.e/r)+s(n.e/r),c=e.length,l=o.length,l>c&&(t=e,e=o,o=t,v=c,c=l,l=v),t=[],v=c+l,f=v;f--;)t.push(0);for(f=l;--f>=0;){for(a=0,h=c+f;h>f;)k=t[h]+o[f]*e[h-f-1]+a,t[h--]=k%y|0,a=k/y|0;t[h]=(t[h]+a)%y|0}for(;!t[--v];)t.pop();for(a?++b:t.shift(),f=t.length;!t[--f];)t.pop();return n.d=t,n.e=ut(t,b),u?i(n,w.precision,w.rounding):n},t.toBinary=function(n,t){return ct(this,2,n,t)},t.toDecimalPlaces=t.toDP=function(n,t){var r=this,u=r.constructor;return r=new u(r),void 0===n?r:(c(n,0,g),void 0===t?t=u.rounding:c(t,0,8),i(r,n+r.e+1,t))},t.toExponential=function(n,t){var u,r=this,f=r.constructor;return void 0===n?u=p(r,!0):(c(n,0,g),void 0===t?t=f.rounding:c(t,0,8),r=i(new f(r),n+1,t),u=p(r,!0,n+1)),r.isNeg()&&!r.isZero()?"-"+u:u},t.toFixed=function(n,t){var u,f,r=this,e=r.constructor;return void 0===n?u=p(r):(c(n,0,g),void 0===t?t=e.rounding:c(t,0,8),f=i(new e(r),n+r.e+1,t),u=p(f,!1,n+f.e+1)),r.isNeg()&&!r.isZero()?"-"+u:u},t.toFraction=function(n){var s,a,c,t,y,w,i,v,o,d,b,g,p=this,k=p.d,l=p.constructor;if(!k)return new l(p);if(o=a=new l(1),c=v=new l(0),s=new l(c),y=s.e=at(k)-p.e-1,w=y%r,s.d[0]=h(10,0>w?r+w:w),null==n)n=y>0?s:o;else{if(i=new l(n),!i.isInt()||i.lt(o))throw Error(nt+i);n=i.gt(s)?y>0?s:o:i}for(u=!1,i=new l(e(k)),d=l.precision,l.precision=y=k.length*r*2;b=f(i,s,0,1,1),t=a.plus(b.times(c)),1!=t.cmp(n);)a=c,c=t,t=o,o=v.plus(b.times(t)),v=t,t=s,s=i.minus(b.times(t)),i=t;return t=f(n.minus(a),c,0,1,1),v=v.plus(t.times(o)),a=a.plus(t.times(c)),v.s=o.s=p.s,g=f(o,c,y,1).minus(p).abs().cmp(f(v,a,y,1).minus(p).abs())<1?[o,c]:[v,a],l.precision=d,u=!0,g},t.toHexadecimal=t.toHex=function(n,t){return ct(this,16,n,t)},t.toJSON=function(){var h,n,r,i,c,t,u,l,f=this,s=f.s<0;if(!f.d)return o.charAt(f.s?s?82:83:84);if(n=f.e,1===f.d.length&&4>n&&n>=0&&(t=f.d[0],2857>t))return 41>t?o.charAt(s?t+41:t):(t-=41,s&&(t+=2816),i=t/88|0,o.charAt(i)+o.charAt(t-88*i));if(l=e(f.d),u="",!s&&8>=n&&n>=-7)i=64+n+7;else if(s&&4>=n&&n>=-3)i=80+n+3;else if(l.length===n+1)i=32*s;else if(i=32*s+16*(0>n),n=Math.abs(n),88>n)i+=1,u=o.charAt(n);else if(7744>n)i+=2,t=n/88|0,u=o.charAt(t)+o.charAt(n-88*t);else for(h=w(String(n),10,88),c=h.length,i+=c,r=0;c>r;r++)u+=o.charAt(h[r]);for(u=o.charAt(i)+u,h=w(l,10,88),c=h.length,r=0;c>r;r++)u+=o.charAt(h[r]);return u},t.toNearest=function(n,t){var r=this,e=r.constructor;if(r=new e(r),null==n){if(!r.d)return r;n=new e(1);t=e.rounding}else{if(n=new e(n),void 0!==t&&c(t,0,8),!r.d)return n.s?r:n;if(!n.d)return n.s&&(n.s=r.s),n}return n.d[0]?(u=!1,4>t&&(t=[4,5,7,8][t]),r=f(r,n,0,t,1).times(n),u=!0,i(r)):(n.s=r.s,r=n),r},t.toNumber=function(){return+this},t.toOctal=function(n,t){return ct(this,8,n,t)},t.toPower=t.pow=function(n){var l,a,o,c,v,y,w,t=this,f=t.constructor,p=+(n=new f(n));if(!(t.d&&n.d&&t.d[0]&&n.d[0]))return new f(h(+t,p));if(t=new f(t),t.eq(1))return t;if(o=f.precision,v=f.rounding,n.eq(1))return i(t,o,v);if(l=s(n.e/r),a=n.d.length-1,w=l>=a,y=t.s,w){if((a=0>p?-p:p)<=eu)return c=vt(f,t,a,o),n.s<0?new f(1).div(c):i(c,o,v)}else if(0>y)return new f(NaN);return y=0>y&&1&n.d[Math.max(l,a)]?-1:1,a=h(+t,p),l=0!=a&&isFinite(a)?new f(a+"").e:s(p*(Math.log("0."+e(t.d))/Math.LN10+t.e+1)),l>f.maxE+1||l<f.minE-1?new f(l>0?y/0:0):(u=!1,f.rounding=t.s=1,a=Math.min(12,(l+"").length),c=ht(n.times(d(t,o+a)),o),c=i(c,o+5,1),rt(c.d,o,v)&&(l=o+10,c=i(ht(n.times(d(t,l+a)),l),l+5,1),+e(c.d).slice(o+1,o+15)+1==1e14&&(c=i(c,o+1,0))),c.s=y,u=!0,f.rounding=v,i(c,o,v))},t.toPrecision=function(n,t){var f,r=this,u=r.constructor;return void 0===n?f=p(r,r.e<=u.toExpNeg||r.e>=u.toExpPos):(c(n,1,g),void 0===t?t=u.rounding:c(t,0,8),r=i(new u(r),n,t),f=p(r,n<=r.e||r.e<=u.toExpNeg,n)),r.isNeg()&&!r.isZero()?"-"+f:f},t.toSignificantDigits=t.toSD=function(n,t){var u=this,r=u.constructor;return void 0===n?(n=r.precision,t=r.rounding):(c(n,1,g),void 0===t?t=r.rounding:c(t,0,8)),i(new r(u),n,t)},t.toString=function(){var n=this,t=n.constructor,i=p(n,n.e<=t.toExpNeg||n.e>=t.toExpPos);return n.isNeg()&&!n.isZero()?"-"+i:i},t.truncated=t.trunc=function(){return i(new this.constructor(this),this.e+1,1)},t.valueOf=function(){var n=this,t=n.constructor,i=p(n,n.e<=t.toExpNeg||n.e>=t.toExpPos);return n.isNeg()?"-"+i:i},f=function(){function n(n,t,i){var u,r=0,f=n.length;for(n=n.slice();f--;)u=n[f]*t+r,n[f]=u%i|0,r=u/i|0;return r&&n.unshift(r),n}function t(n,t,i,r){var u,f;if(i!=r)f=i>r?1:-1;else for(u=f=0;i>u;u++)if(n[u]!=t[u]){f=n[u]>t[u]?1:-1;break}return f}function u(n,t,i,r){for(var u=0;i--;)n[i]-=u,u=n[i]<t[i]?1:0,n[i]=u*r+n[i]-t[i];for(;!n[0]&&n.length>1;)n.shift()}return function(f,e,o,h,c,l){var g,et,w,v,it,ot,nt,ft,rt,ut,p,b,ht,tt,vt,ct,st,yt,d,lt,at=f.constructor,pt=f.s==e.s?1:-1,k=f.d,a=e.d;if(!(k&&k[0]&&a&&a[0]))return new at(f.s&&e.s&&(k?!a||k[0]!=a[0]:a)?k&&0==k[0]||!a?0*pt:pt/0:NaN);for(l?(it=1,et=f.e-e.e):(l=y,it=r,et=s(f.e/it)-s(e.e/it)),d=a.length,st=k.length,rt=new at(pt),ut=rt.d=[],w=0;a[w]==(k[w]||0);w++);if(a[w]>(k[w]||0)&&et--,null==o?(tt=o=at.precision,h=at.rounding):tt=c?o+(f.e-e.e)+1:o,0>tt)ut.push(1),ot=!0;else{if(tt=tt/it+2|0,w=0,1==d){for(v=0,a=a[0],tt++;(st>w||v)&&tt--;w++)vt=v*l+(k[w]||0),ut[w]=vt/a|0,v=vt%a|0;ot=v||st>w}else{for(v=l/(a[0]+1)|0,v>1&&(a=n(a,v,l),k=n(k,v,l),d=a.length,st=k.length),ct=d,p=k.slice(0,d),b=p.length;d>b;)p[b++]=0;lt=a.slice();lt.unshift(0);yt=a[0];a[1]>=l/2&&++yt;do v=0,g=t(a,p,d,b),0>g?(ht=p[0],d!=b&&(ht=ht*l+(p[1]||0)),v=ht/yt|0,v>1?(v>=l&&(v=l-1),nt=n(a,v,l),ft=nt.length,b=p.length,g=t(nt,p,ft,b),1==g&&(v--,u(nt,ft>d?lt:a,ft,l))):(0==v&&(g=v=1),nt=a.slice()),ft=nt.length,b>ft&&nt.unshift(0),u(p,nt,b,l),-1==g&&(b=p.length,g=t(a,p,d,b),1>g&&(v++,u(p,b>d?lt:a,b,l))),b=p.length):0===g&&(v++,p=[0]),ut[w++]=v,g&&p[0]?p[b++]=k[ct]||0:(p=[k[ct]],b=1);while((ct++<st||void 0!==p[0])&&tt--);ot=void 0!==p[0]}ut[0]||ut.shift()}if(1==it)rt.e=et,ni=ot;else{for(w=1,v=ut[0];v>=10;v/=10)w++;rt.e=w+et*it-1;i(rt,c?o+rt.e+1:o,h,ot)}return rt}}(),v=gt(v),et=new v(et),ot=new v(ot),Bridge.$Decimal=v,"function"==typeof define&&define.amd)define(function(){return v});else if("undefined"!=typeof module&&module.exports){if(module.exports=v,!l)try{l=require("crypto")}catch(su){}}else n||(n="undefined"!=typeof self&&self&&self.self==self?self:Function("return this")()),ti=n.Decimal,v.noConflict=function(){return n.Decimal=ti,v},n.Decimal=v}(Bridge.global);System.Decimal=function(n,t,i){var r;if(this.constructor!==System.Decimal)return new System.Decimal(n,t,i);if(n==null&&(n=0),typeof n=="string"){if(t=t||System.Globalization.CultureInfo.getCurrentCulture(),r=t&&t.getFormat(System.Globalization.NumberFormatInfo),r&&r.numberDecimalSeparator!=="."&&(n=n.replace(r.numberDecimalSeparator,".")),!/^\s*[+-]?(\d+|\d+.|\d*\.\d+)((e|E)[+-]?\d+)?\s*$/.test(n))throw new System.FormatException;n=n.replace(/\s/g,"")}if(i&&i.precision&&typeof n=="number"){var f=Bridge.Int.trunc(n),e=(f+"").length,u=i.precision-e;u<0&&(u=0);n=n.toFixed(u)}this.value=System.Decimal.getValue(n)};System.Decimal.$$name="System.Decimal";System.Decimal.prototype.$$name="System.Decimal";System.Decimal.$kind="struct";System.Decimal.prototype.$kind="struct";System.Decimal.$$inherits=[];Bridge.Class.addExtend(System.Decimal,[System.IComparable,System.IFormattable,System.IComparable$1(System.Decimal),System.IEquatable$1(System.Decimal)]);System.Decimal.$is=function(n){return n instanceof System.Decimal};System.Decimal.getDefaultValue=function(){return new System.Decimal(0)};System.Decimal.getValue=function(n){return Bridge.hasValue(n)?n instanceof System.Decimal?n.value:n instanceof System.Int64||n instanceof System.UInt64?new Bridge.$Decimal(n.toString()):new Bridge.$Decimal(n):this.getDefaultValue()};System.Decimal.create=function(n){return Bridge.hasValue(n)?n instanceof System.Decimal?n:new System.Decimal(n):null};System.Decimal.lift=function(n){return n==null?null:System.Decimal.create(n)};System.Decimal.prototype.toString=function(n,t){return!n&&!t?this.value.toString():Bridge.Int.format(this,n,t)};System.Decimal.prototype.toFloat=function(){return this.value.toNumber()};System.Decimal.prototype.toJSON=function(){return this.value.toNumber()};System.Decimal.prototype.format=function(n,t){return Bridge.Int.format(this.toFloat(),n,t)};System.Decimal.prototype.decimalPlaces=function(){return this.value.decimalPlaces()};System.Decimal.prototype.dividedToIntegerBy=function(n){return new System.Decimal(this.value.dividedToIntegerBy(System.Decimal.getValue(n)))};System.Decimal.prototype.exponential=function(){return new System.Decimal(this.value.exponential())};System.Decimal.prototype.abs=function(){return new System.Decimal(this.value.abs())};System.Decimal.prototype.floor=function(){return new System.Decimal(this.value.floor())};System.Decimal.prototype.ceil=function(){return new System.Decimal(this.value.ceil())};System.Decimal.prototype.trunc=function(){return new System.Decimal(this.value.trunc())};System.Decimal.round=function(n,t){var i,r;return n=System.Decimal.create(n),i=Bridge.$Decimal.rounding,Bridge.$Decimal.rounding=t,r=new System.Decimal(n.value.round()),Bridge.$Decimal.rounding=i,r};System.Decimal.toDecimalPlaces=function(n,t,i){n=System.Decimal.create(n);return new System.Decimal(n.value.toDecimalPlaces(t,i))};System.Decimal.prototype.compareTo=function(n){return this.value.comparedTo(System.Decimal.getValue(n))};System.Decimal.prototype.add=function(n){return new System.Decimal(this.value.plus(System.Decimal.getValue(n)))};System.Decimal.prototype.sub=function(n){return new System.Decimal(this.value.minus(System.Decimal.getValue(n)))};System.Decimal.prototype.isZero=function(){return this.value.isZero};System.Decimal.prototype.mul=function(n){return new System.Decimal(this.value.times(System.Decimal.getValue(n)))};System.Decimal.prototype.div=function(n){return new System.Decimal(this.value.dividedBy(System.Decimal.getValue(n)))};System.Decimal.prototype.mod=function(n){return new System.Decimal(this.value.modulo(System.Decimal.getValue(n)))};System.Decimal.prototype.neg=function(){return new System.Decimal(this.value.negated())};System.Decimal.prototype.inc=function(){return new System.Decimal(this.value.plus(System.Decimal.getValue(1)))};System.Decimal.prototype.dec=function(){return new System.Decimal(this.value.minus(System.Decimal.getValue(1)))};System.Decimal.prototype.sign=function(){return this.value.isZero()?0:this.value.isNegative()?-1:1};System.Decimal.prototype.clone=function(){return new System.Decimal(this)};System.Decimal.prototype.ne=function(n){return!!this.compareTo(n)};System.Decimal.prototype.lt=function(n){return this.compareTo(n)<0};System.Decimal.prototype.lte=function(n){return this.compareTo(n)<=0};System.Decimal.prototype.gt=function(n){return this.compareTo(n)>0};System.Decimal.prototype.gte=function(n){return this.compareTo(n)>=0};System.Decimal.prototype.equals=function(n){return!this.compareTo(n)};System.Decimal.prototype.equalsT=function(n){return!this.compareTo(n)};System.Decimal.prototype.getHashCode=function(){for(var n=this.sign()*397+this.value.e|0,t=0;t<this.value.d.length;t++)n=n*397+this.value.d[t]|0;return n};System.Decimal.toInt=function(n,t){var i,r,u;if(!n)return null;if(t){if(t===System.Int64){if(i=n.value.trunc().toString(),r=new System.Int64(i),i!==r.value.toString())throw new System.OverflowException;return r}if(t===System.UInt64){if(n.value.isNegative())throw new System.OverflowException;if(i=n.value.trunc().toString(),r=new System.UInt64(i),i!==r.value.toString())throw new System.OverflowException;return r}return Bridge.Int.check(Bridge.Int.trunc(n.value.toNumber()),t)}if(u=Bridge.Int.trunc(System.Decimal.getValue(n).toNumber()),!Bridge.Int.$is(u))throw new System.OverflowException;return u};System.Decimal.tryParse=function(n,t,i){try{return i.v=new System.Decimal(n,t),!0}catch(r){return i.v=new System.Decimal(0),!1}};System.Decimal.toFloat=function(n){return n?System.Decimal.getValue(n).toNumber():null};System.Decimal.setConfig=function(n){Bridge.$Decimal.config(n)};System.Decimal.min=function(){for(var t=[],n=0,i=arguments.length;n<i;n++)t.push(System.Decimal.getValue(arguments[n]));return new System.Decimal(Bridge.$Decimal.min.apply(Bridge.$Decimal,t))};System.Decimal.max=function(){for(var t=[],n=0,i=arguments.length;n<i;n++)t.push(System.Decimal.getValue(arguments[n]));return new System.Decimal(Bridge.$Decimal.max.apply(Bridge.$Decimal,t))};System.Decimal.random=function(n){return new System.Decimal(Bridge.$Decimal.random(n))};System.Decimal.exp=function(n){return new System.Decimal(System.Decimal.getValue(n).exp())};System.Decimal.exp=function(n){return new System.Decimal(System.Decimal.getValue(n).exp())};System.Decimal.ln=function(n){return new System.Decimal(System.Decimal.getValue(n).ln())};System.Decimal.log=function(n,t){return new System.Decimal(System.Decimal.getValue(n).log(t))};System.Decimal.pow=function(n,t){return new System.Decimal(System.Decimal.getValue(n).pow(t))};System.Decimal.sqrt=function(n){return new System.Decimal(System.Decimal.getValue(n).sqrt())};System.Decimal.prototype.isFinite=function(){return this.value.isFinite()};System.Decimal.prototype.isInteger=function(){return this.value.isInteger()};System.Decimal.prototype.isNaN=function(){return this.value.isNaN()};System.Decimal.prototype.isNegative=function(){return this.value.isNegative()};System.Decimal.prototype.isZero=function(){return this.value.isZero()};System.Decimal.prototype.log=function(n){return new System.Decimal(this.value.log(n))};System.Decimal.prototype.ln=function(){return new System.Decimal(this.value.ln())};System.Decimal.prototype.precision=function(){return this.value.precision()};System.Decimal.prototype.round=function(){var t=Bridge.$Decimal.rounding,n;return Bridge.$Decimal.rounding=6,n=new System.Decimal(this.value.round()),Bridge.$Decimal.rounding=t,n};System.Decimal.prototype.sqrt=function(){return new System.Decimal(this.value.sqrt())};System.Decimal.prototype.toDecimalPlaces=function(n,t){return new System.Decimal(this.value.toDecimalPlaces(n,t))};System.Decimal.prototype.toExponential=function(n,t){return this.value.toExponential(n,t)};System.Decimal.prototype.toFixed=function(n,t){return this.value.toFixed(n,t)};System.Decimal.prototype.pow=function(n){return new System.Decimal(this.value.pow(n))};System.Decimal.prototype.toPrecision=function(n,t){return this.value.toPrecision(n,t)};System.Decimal.prototype.toSignificantDigits=function(n,t){return new System.Decimal(this.value.toSignificantDigits(n,t))};System.Decimal.prototype.valueOf=function(){return this.value.valueOf()};System.Decimal.prototype.toFormat=function(n,t,i){var f=Bridge.$Decimal.format,u,e,r;return i&&!i.getFormat?(e=Bridge.merge({},f||{}),Bridge.$Decimal.format=Bridge.merge(e,i),u=this.value.toFormat(n,t)):(i=i||System.Globalization.CultureInfo.getCurrentCulture(),r=i&&i.getFormat(System.Globalization.NumberFormatInfo),r&&(Bridge.$Decimal.format.decimalSeparator=r.numberDecimalSeparator,Bridge.$Decimal.format.groupSeparator=r.numberGroupSeparator,Bridge.$Decimal.format.groupSize=r.numberGroupSizes[0]),u=this.value.toFormat(n,t)),Bridge.$Decimal.format=f,u};Bridge.$Decimal.config({precision:29});System.Decimal.Zero=System.Decimal(0);System.Decimal.One=System.Decimal(1);System.Decimal.MinusOne=System.Decimal(-1);System.Decimal.MinValue=System.Decimal("-79228162514264337593543950335");System.Decimal.MaxValue=System.Decimal("79228162514264337593543950335");System.Decimal.precision=29;Bridge.define("System.DayOfWeek",{$kind:"enum",$statics:{Sunday:0,Monday:1,Tuesday:2,Wednesday:3,Thursday:4,Friday:5,Saturday:6}});pt={getDefaultValue:function(){return new Date(-864e13)},utcNow:function(){var n=new Date;return new Date(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),n.getUTCMilliseconds())},today:function(){var n=new Date;return new Date(n.getFullYear(),n.getMonth(),n.getDate())},timeOfDay:function(n){return new System.TimeSpan((n-new Date(n.getFullYear(),n.getMonth(),n.getDate()))*1e4)},isUseGenitiveForm:function(n,t,i,r){for(var f=0,u=t-1;u>=0&&n[u]!==r;u--);if(u>=0){while(--u>=0&&n[u]===r)f++;if(f<=1)return!0}for(u=t+i;u<n.length&&n[u]!==r;u++);if(u<n.length){for(f=0;++u<n.length&&n[u]===r;)f++;if(f<=1)return!0}return!1},format:function(n,t,i){var c=this,r=(i||System.Globalization.CultureInfo.getCurrentCulture()).getFormat(System.Globalization.DateTimeFormatInfo),o=n.getFullYear(),u=n.getMonth(),f=n.getDate(),l=n.getDay(),e=n.getHours(),a=n.getMinutes(),v=n.getSeconds(),y=n.getMilliseconds(),s=n.getTimezoneOffset(),h;return t=t||"G",t.length===1?(h=r.getAllDateTimePatterns(t,!0),t=h?h[0]:t):t.length===2&&t.charAt(0)==="%"&&(t=t.charAt(1)),t.replace(/(\\.|'[^']*'|"[^"]*"|d{1,4}|M{1,4}|yyyy|yy|y|HH?|hh?|mm?|ss?|tt?|f{1,3}|z{1,3}|\:|\/)/g,function(n,i,h){var p=n;switch(n){case"dddd":p=r.dayNames[l];break;case"ddd":p=r.abbreviatedDayNames[l];break;case"dd":p=f<10?"0"+f:f;break;case"d":p=f;break;case"MMMM":p=c.isUseGenitiveForm(t,h,4,"d")?r.monthGenitiveNames[u]:r.monthNames[u];break;case"MMM":p=c.isUseGenitiveForm(t,h,3,"d")?r.abbreviatedMonthGenitiveNames[u]:r.abbreviatedMonthNames[u];break;case"MM":p=u+1<10?"0"+(u+1):u+1;break;case"M":p=u+1;break;case"yyyy":p=o;break;case"yy":p=(o%100).toString();p.length===1&&(p="0"+p);break;case"y":p=o%100;break;case"h":case"hh":p=e%12;p?n==="hh"&&p.length===1&&(p="0"+p):p="12";break;case"HH":p=e.toString();p.length===1&&(p="0"+p);break;case"H":p=e;break;case"mm":p=a.toString();p.length===1&&(p="0"+p);break;case"m":p=a;break;case"ss":p=v.toString();p.length===1&&(p="0"+p);break;case"s":p=v;break;case"t":case"tt":p=e<12?r.amDesignator:r.pmDesignator;n==="t"&&(p=p.charAt(0));break;case"f":case"ff":case"fff":p=y.toString();p.length<3&&(p=Array(3-p.length).join("0")+p);n==="ff"?p=p.substr(0,2):n==="f"&&(p=p.charAt(0));break;case"z":p=s/60;p=(p>=0?"-":"+")+Math.floor(Math.abs(p));break;case"zz":case"zzz":p=s/60;p=(p>=0?"-":"+")+System.String.alignString(Math.floor(Math.abs(p)).toString(),2,"0",2);n==="zzz"&&(p+=r.timeSeparator+System.String.alignString(Math.floor(Math.abs(s%60)).toString(),2,"0",2));break;case":":p=r.timeSeparator;break;case"/":p=r.dateSeparator;break;default:p=n.substr(1,n.length-1-(n.charAt(0)!=="\\"))}return p})},parse:function(n,t,i,r){var u=this.parseExact(n,null,t,i,!0);if(u!==null)return u;if(u=Date.parse(n),isNaN(u)){if(!r)throw new System.FormatException("String does not contain a valid string representation of a date and time.");}else return new Date(u)},parseExact:function(n,t,i,r,u){var ft,ct;if(t||(t=["G","g","F","f","D","d","R","r","s","S","U","u","O","o","Y","y","M","m","T","t"]),Bridge.isArray(t)){for(ft=0,ft;ft<t.length;ft++)if(ct=Bridge.Date.parseExact(n,t[ft],i,r,!0),ct!=null)return ct;if(u)return null;throw new System.FormatException("String does not contain a valid string representation of a date and time.");}var y=(i||System.Globalization.CultureInfo.getCurrentCulture()).getFormat(System.Globalization.DateTimeFormatInfo),et=y.amDesignator,ot=y.pmDesignator,e=0,k=0,b=0,st,f,c=0,l=1,w=1,h=0,d=0,g=0,v=0,nt="",a=0,ht=0,tt,it,rt,ut,s,o=!1,p=!1,lt,at;if(n==null)throw new System.ArgumentNullException("str");for(t=t||"G",t.length===1?(at=y.getAllDateTimePatterns(t,!0),t=at?at[0]:t):t.length===2&&t.charAt(0)==="%"&&(t=t.charAt(1));k<t.length;){if(st=t.charAt(k),f="",p==="\\")f+=st,k++;else while(t.charAt(k)===st&&k<t.length)f+=st,k++;if(lt=!0,!p)if(f==="yyyy"||f==="yy"||f==="y"){if(f==="yyyy"?c=this.subparseInt(n,e,4,4):f==="yy"?c=this.subparseInt(n,e,2,2):f==="y"&&(c=this.subparseInt(n,e,2,4)),c==null){o=!0;break}e+=c.length;c.length===2&&(c=~~c,c=(c>30?1900:2e3)+c)}else if(f==="MMM"||f==="MMMM"){for(l=0,ut=f==="MMM"?this.isUseGenitiveForm(t,k,3,"d")?y.abbreviatedMonthGenitiveNames:y.abbreviatedMonthNames:this.isUseGenitiveForm(t,k,4,"d")?y.monthGenitiveNames:y.monthNames,b=0;b<ut.length;b++)if(s=ut[b],n.substring(e,e+s.length).toLowerCase()===s.toLowerCase()){l=b%12+1;e+=s.length;break}if(l<1||l>12){o=!0;break}}else if(f==="MM"||f==="M"){if(l=this.subparseInt(n,e,f.length,2),l==null||l<1||l>12){o=!0;break}e+=l.length}else if(f==="dddd"||f==="ddd"){for(ut=f==="ddd"?y.abbreviatedDayNames:y.dayNames,b=0;b<ut.length;b++)if(s=ut[b],n.substring(e,e+s.length).toLowerCase()===s.toLowerCase()){e+=s.length;break}}else if(f==="dd"||f==="d"){if(w=this.subparseInt(n,e,f.length,2),w==null||w<1||w>31){o=!0;break}e+=w.length}else if(f==="hh"||f==="h"){if(h=this.subparseInt(n,e,f.length,2),h==null||h<1||h>12){o=!0;break}e+=h.length}else if(f==="HH"||f==="H"){if(h=this.subparseInt(n,e,f.length,2),h==null||h<0||h>23){o=!0;break}e+=h.length}else if(f==="mm"||f==="m"){if(d=this.subparseInt(n,e,f.length,2),d==null||d<0||d>59)return null;e+=d.length}else if(f==="ss"||f==="s"){if(g=this.subparseInt(n,e,f.length,2),g==null||g<0||g>59){o=!0;break}e+=g.length}else if(f==="u"){if(v=this.subparseInt(n,e,1,7),v==null){o=!0;break}e+=v.length;v.length>3&&(v=v.substring(0,3))}else if(f==="fffffff"||f==="ffffff"||f==="fffff"||f==="ffff"||f==="fff"||f==="ff"||f==="f"){if(v=this.subparseInt(n,e,f.length,7),v==null){o=!0;break}e+=v.length;v.length>3&&(v=v.substring(0,3))}else if(f==="t"){if(n.substring(e,e+1).toLowerCase()===et.charAt(0).toLowerCase())nt=et;else if(n.substring(e,e+1).toLowerCase()===ot.charAt(0).toLowerCase())nt=ot;else{o=!0;break}e+=1}else if(f==="tt"){if(n.substring(e,e+2).toLowerCase()===et.toLowerCase())nt=et;else if(n.substring(e,e+2).toLowerCase()===ot.toLowerCase())nt=ot;else{o=!0;break}e+=2}else if(f==="z"||f==="zz"){if(it=n.charAt(e),it==="-")rt=!0;else if(it==="+")rt=!1;else{o=!0;break}if(e++,a=this.subparseInt(n,e,1,2),a==null||a>14){o=!0;break}e+=a.length;rt&&(a=-a)}else if(f==="zzz"){if(s=n.substring(e,e+6),e+=6,s.length!==6){o=!0;break}if(it=s.charAt(0),it==="-")rt=!0;else if(it==="+")rt=!1;else{o=!0;break}if(tt=1,a=this.subparseInt(s,tt,1,2),a==null||a>14){o=!0;break}if(tt+=a.length,rt&&(a=-a),s.charAt(tt)!==y.timeSeparator){o=!0;break}if(tt++,ht=this.subparseInt(s,tt,1,2),ht==null||a>59){o=!0;break}}else lt=!1;if(p||!lt){if(s=n.substring(e,e+f.length),!p&&(f===":"&&s!==y.timeSeparator||f==="/"&&s!==y.dateSeparator)||s!==f&&f!=="'"&&f!=='"'&&f!=="\\"){o=!0;break}if(p==="\\"&&(p=!1),f!=="'"&&f!=='"'&&f!=="\\")e+=f.length;else if(p===!1)p=f;else{if(p!==f){o=!0;break}p=!1}}}if(p&&(o=!0),o||(e!==n.length?o=!0:l===2?c%4==0&&c%100!=0||c%400==0?w>29&&(o=!0):w>28&&(o=!0):(l===4||l===6||l===9||l===11)&&w>30&&(o=!0)),o){if(u)return null;throw new System.FormatException("String does not contain a valid string representation of a date and time.");}return(h<12&&nt===ot?h=+h+12:h>11&&nt===et&&(h-=12),a===0&&ht===0&&!r)?new Date(c,l-1,w,h,d,g,v):new Date(Date.UTC(c,l-1,w,h-a,d-ht,g,v))},subparseInt:function(n,t,i,r){for(var f,u=r;u>=i;u--){if(f=n.substring(t,t+u),f.length<i)return null;if(/^\d+$/.test(f))return f}return null},tryParse:function(n,t,i,r){return(i.v=this.parse(n,t,r,!0),i.v==null)?(i.v=new Date(-864e13),!1):!0},tryParseExact:function(n,t,i,r,u){return(r.v=this.parseExact(n,t,i,u,!0),r.v==null)?(r.v=new Date(-864e13),!1):!0},isDaylightSavingTime:function(n){var t=Bridge.Date.today();return t.setMonth(0),t.setDate(1),t.getTimezoneOffset()!==n.getTimezoneOffset()},toUTC:function(n){return new Date(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),n.getUTCMilliseconds())},toLocal:function(n){return new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds()))},dateAddSubTimespan:function(n,t,i){var r=new Date(n.getTime());return r.setDate(r.getDate()+i*t.getDays()),r.setHours(r.getHours()+i*t.getHours()),r.setMinutes(r.getMinutes()+i*t.getMinutes()),r.setSeconds(r.getSeconds()+i*t.getSeconds()),r.setMilliseconds(r.getMilliseconds()+i*t.getMilliseconds()),r},subdt:function(n,t){return Bridge.hasValue$1(n,t)?this.dateAddSubTimespan(n,t,-1):null},adddt:function(n,t){return Bridge.hasValue$1(n,t)?this.dateAddSubTimespan(n,t,1):null},subdd:function(n,t){return Bridge.hasValue$1(n,t)?new System.TimeSpan((n-t)*1e4):null},gt:function(n,t){return Bridge.hasValue$1(n,t)?n>t:!1},gte:function(n,t){return Bridge.hasValue$1(n,t)?n>=t:!1},lt:function(n,t){return Bridge.hasValue$1(n,t)?n<t:!1},lte:function(n,t){return Bridge.hasValue$1(n,t)?n<=t:!1}};Bridge.Date=pt;Bridge.define("System.TimeSpan",{inherits:[System.IComparable],config:{alias:["compareTo","System$IComparable$compareTo"]},$kind:"struct",statics:{fromDays:function(n){return new System.TimeSpan(n*864e9)},fromHours:function(n){return new System.TimeSpan(n*36e9)},fromMilliseconds:function(n){return new System.TimeSpan(n*1e4)},fromMinutes:function(n){return new System.TimeSpan(n*6e8)},fromSeconds:function(n){return new System.TimeSpan(n*1e7)},fromTicks:function(n){return new System.TimeSpan(n)},ctor:function(){this.zero=new System.TimeSpan(System.Int64.Zero);this.maxValue=new System.TimeSpan(System.Int64.MaxValue);this.minValue=new System.TimeSpan(System.Int64.MinValue)},getDefaultValue:function(){return new System.TimeSpan(System.Int64.Zero)},neg:function(n){return Bridge.hasValue(n)?new System.TimeSpan(n.ticks.neg()):null},sub:function(n,t){return Bridge.hasValue$1(n,t)?new System.TimeSpan(n.ticks.sub(t.ticks)):null},eq:function(n,t){return Bridge.hasValue$1(n,t)?n.ticks.eq(t.ticks):null},neq:function(n,t){return Bridge.hasValue$1(n,t)?n.ticks.ne(t.ticks):null},plus:function(n){return Bridge.hasValue(n)?new System.TimeSpan(n.ticks):null},add:function(n,t){return Bridge.hasValue$1(n,t)?new System.TimeSpan(n.ticks.add(t.ticks)):null},gt:function(n,t){return Bridge.hasValue$1(n,t)?n.ticks.gt(t.ticks):!1},gte:function(n,t){return Bridge.hasValue$1(n,t)?n.ticks.gte(t.ticks):!1},lt:function(n,t){return Bridge.hasValue$1(n,t)?n.ticks.lt(t.ticks):!1},lte:function(n,t){return Bridge.hasValue$1(n,t)?n.ticks.lte(t.ticks):!1}},ctor:function(){this.$initialize();this.ticks=System.Int64.Zero;arguments.length===1?this.ticks=arguments[0]instanceof System.Int64?arguments[0]:new System.Int64(arguments[0]):arguments.length===3?this.ticks=new System.Int64(arguments[0]).mul(60).add(arguments[1]).mul(60).add(arguments[2]).mul(1e7):arguments.length===4?this.ticks=new System.Int64(arguments[0]).mul(24).add(arguments[1]).mul(60).add(arguments[2]).mul(60).add(arguments[3]).mul(1e7):arguments.length===5&&(this.ticks=new System.Int64(arguments[0]).mul(24).add(arguments[1]).mul(60).add(arguments[2]).mul(60).add(arguments[3]).mul(1e3).add(arguments[4]).mul(1e4))},getTicks:function(){return this.ticks},getDays:function(){return this.ticks.div(864e9).toNumber()},getHours:function(){return this.ticks.div(36e9).mod(24).toNumber()},getMilliseconds:function(){return this.ticks.div(1e4).mod(1e3).toNumber()},getMinutes:function(){return this.ticks.div(6e8).mod(60).toNumber()},getSeconds:function(){return this.ticks.div(1e7).mod(60).toNumber()},getTotalDays:function(){return this.ticks.toNumberDivided(864e9)},getTotalHours:function(){return this.ticks.toNumberDivided(36e9)},getTotalMilliseconds:function(){return this.ticks.toNumberDivided(1e4)},getTotalMinutes:function(){return this.ticks.toNumberDivided(6e8)},getTotalSeconds:function(){return this.ticks.toNumberDivided(1e7)},get12HourHour:function(){return this.getHours()>12?this.getHours()-12:this.getHours()===0?12:this.getHours()},add:function(n){return new System.TimeSpan(this.ticks.add(n.ticks))},subtract:function(n){return new System.TimeSpan(this.ticks.sub(n.ticks))},duration:function(){return new System.TimeSpan(this.ticks.abs())},negate:function(){return new System.TimeSpan(this.ticks.neg())},compareTo:function(n){return this.ticks.compareTo(n.ticks)},equals:function(n){return n.ticks.eq(this.ticks)},equalsT:function(n){return n.ticks.eq(this.ticks)},format:function(n,t){return this.toString(n,t)},getHashCode:function(){return this.ticks.getHashCode()},toString:function(n,t){var i=this.ticks,f="",r=this,e=(t||System.Globalization.CultureInfo.getCurrentCulture()).getFormat(System.Globalization.DateTimeFormatInfo),u=function(n,t,i,r){return System.String.alignString((n|0).toString(),t||2,"0",i||2,r||!1)};return n?n.replace(/(\\.|'[^']*'|"[^"]*"|dd?|HH?|hh?|mm?|ss?|tt?|f{1,7}|\:|\/)/g,function(n){var t=n;switch(n){case"d":return r.getDays();case"dd":return u(r.getDays());case"H":return r.getHours();case"HH":return u(r.getHours());case"h":return r.get12HourHour();case"hh":return u(r.get12HourHour());case"m":return r.getMinutes();case"mm":return u(r.getMinutes());case"s":return r.getSeconds();case"ss":return u(r.getSeconds());case"t":return(r.getHours()<12?e.amDesignator:e.pmDesignator).substring(0,1);case"tt":return r.getHours()<12?e.amDesignator:e.pmDesignator;case"f":case"ff":case"fff":case"ffff":case"fffff":case"ffffff":case"fffffff":return u(r.getMilliseconds(),n.length,1,!0);default:return n.substr(1,n.length-1-(n.charAt(0)!=="\\"))}}):(i.abs().gte(864e9)&&(f+=u(i.toNumberDivided(864e9))+".",i=i.mod(864e9)),f+=u(i.toNumberDivided(36e9))+":",i=i.mod(36e9),f+=u(i.toNumberDivided(6e8)|0)+":",i=i.mod(6e8),f+=u(i.toNumberDivided(1e7)),i=i.mod(1e7),i.gt(0)&&(f+="."+u(i.toNumber(),7)),f)}});Bridge.Class.addExtend(System.TimeSpan,[System.IComparable$1(System.TimeSpan),System.IEquatable$1(System.TimeSpan)]);Bridge.define("System.Text.StringBuilder",{ctor:function(){this.$initialize();this.buffer=[];this.capacity=16;arguments.length===1?this.append(arguments[0]):arguments.length===2?(this.append(arguments[0]),this.setCapacity(arguments[1])):arguments.length===3&&this.append(arguments[0],arguments[1],arguments[2])},getLength:function(){if(this.buffer.length<2)return this.buffer[0]?this.buffer[0].length:0;var n=this.buffer.join("");return this.buffer=[],this.buffer[0]=n,n.length},getCapacity:function(){var n=this.getLength();return this.capacity>n?this.capacity:n},setCapacity:function(n){var t=this.getLength();n>t&&(this.capacity=n)},toString:function(){var n=this.buffer.join(""),t,i;return(this.buffer=[],this.buffer[0]=n,arguments.length===2)?(t=arguments[0],i=arguments[1],this.checkLimits(n,t,i),n.substr(t,i)):n},append:function(n){var i,t;if(n==null)return this;if(arguments.length===2){if(t=arguments[1],t===0)return this;if(t<0)throw new System.ArgumentOutOfRangeException("count","cannot be less than zero");n=Array(t+1).join(n).toString()}else if(arguments.length===3){if(i=arguments[1],t=arguments[2],t===0)return this;this.checkLimits(n,i,t);n=n.substr(i,t)}return this.buffer[this.buffer.length]=n,this},appendFormat:function(){return this.append(System.String.format.apply(System.String,arguments))},clear:function(){return this.buffer=[],this},appendLine:function(){return arguments.length===1&&this.append(arguments[0]),this.append("\r\n")},equals:function(n){return n==null?!1:n===this?!0:this.toString()===n.toString()},remove:function(n,t){var i=this.buffer.join("");return(this.checkLimits(i,n,t),i.length===t&&n===0)?this.clear():(t>0&&(this.buffer=[],this.buffer[0]=i.substring(0,n),this.buffer[1]=i.substring(n+t,i.length)),this)},insert:function(n,t){var r,i;if(t==null)return this;if(arguments.length===3){if(r=arguments[2],r===0)return this;if(r<0)throw new System.ArgumentOutOfRangeException("count","cannot be less than zero");t=Array(r+1).join(t).toString()}return i=this.buffer.join(""),this.buffer=[],n<1?(this.buffer[0]=t,this.buffer[1]=i):n>=i.length?(this.buffer[0]=i,this.buffer[1]=t):(this.buffer[0]=i.substring(0,n),this.buffer[1]=t,this.buffer[2]=i.substring(n,i.length)),this},replace:function(n,t){var f=new RegExp(n,"g"),i=this.buffer.join("");if(this.buffer=[],arguments.length===4){var r=arguments[2],u=arguments[3],e=i.substr(r,u);this.checkLimits(i,r,u);this.buffer[0]=i.substring(0,r);this.buffer[1]=e.replace(f,t);this.buffer[2]=i.substring(r+u,i.length)}else this.buffer[0]=i.replace(f,t);return this},checkLimits:function(n,t,i){if(i<0)throw new System.ArgumentOutOfRangeException("length","must be non-negative");if(t<0)throw new System.ArgumentOutOfRangeException("startIndex","startIndex cannot be less than zero");if(i>n.length-t)throw new System.ArgumentOutOfRangeException("Index and length must refer to a location within the string");}}),function(){var n=RegExp("[-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]","g"),t=function(t){return t.replace(n,"\\$&")};Bridge.regexpEscape=t}();System.Diagnostics.Debug={writeln:function(n){Bridge.Console.debug(n)},_fail:function(n){System.Diagnostics.Debug.writeln(n)},assert:function(n,t){n||(t="Assert failed: "+t,confirm(t+"\r\n\r\nBreak into debugger?")&&System.Diagnostics.Debug._fail(t))},fail:function(n){System.Diagnostics.Debug._fail(n)}};Bridge.define("System.Diagnostics.Stopwatch",{ctor:function(){this.$initialize();this._stopTime=System.Int64.Zero;this._startTime=System.Int64.Zero;this.isRunning=!1},reset:function(){this._stopTime=this._startTime=System.Diagnostics.Stopwatch.getTimestamp();this.isRunning=!1},ticks:function(){return(this.isRunning?System.Diagnostics.Stopwatch.getTimestamp():this._stopTime).sub(this._startTime)},milliseconds:function(){return this.ticks().mul(1e3).div(System.Diagnostics.Stopwatch.frequency)},timeSpan:function(){return new System.TimeSpan(this.milliseconds().mul(1e4))},start:function(){this.isRunning||(this._startTime=System.Diagnostics.Stopwatch.getTimestamp(),this.isRunning=!0)},stop:function(){this.isRunning&&(this._stopTime=System.Diagnostics.Stopwatch.getTimestamp(),this.isRunning=!1)},restart:function(){this.isRunning=!1;this.start()},statics:{startNew:function(){var n=new System.Diagnostics.Stopwatch;return n.start(),n}}});typeof window!="undefined"&&window.performance&&window.performance.now?(System.Diagnostics.Stopwatch.frequency=new System.Int64(1e6),System.Diagnostics.Stopwatch.isHighResolution=!0,System.Diagnostics.Stopwatch.getTimestamp=function(){return new System.Int64(Math.round(window.performance.now()*1e3))}):typeof process!="undefined"&&process.hrtime?(System.Diagnostics.Stopwatch.frequency=new System.Int64(1e9),System.Diagnostics.Stopwatch.isHighResolution=!0,System.Diagnostics.Stopwatch.getTimestamp=function(){var n=process.hrtime();return new System.Int64(n[0]).mul(1e9).add(n[1])}):(System.Diagnostics.Stopwatch.frequency=new System.Int64(1e3),System.Diagnostics.Stopwatch.isHighResolution=!1,System.Diagnostics.Stopwatch.getTimestamp=function(){return new System.Int64((new Date).valueOf())});System.Diagnostics.Contracts.Contract={reportFailure:function(n,t,i,r,u){var f=i.toString(),e,o;if(f=f.substring(f.indexOf("return")+7),f=f.substr(0,f.lastIndexOf(";")),e=f?"Contract '"+f+"' failed":"Contract failed",o=t?e+": "+t:e,u)throw new u(f,t);else throw new System.Diagnostics.Contracts.ContractException(n,o,t,f,r);},assert:function(n,t,i){t()||System.Diagnostics.Contracts.Contract.reportFailure(n,i,t,null)},requires:function(n,t,i){t()||System.Diagnostics.Contracts.Contract.reportFailure(0,i,t,null,n)},forAll:function(n,t,i){if(!i)throw new System.ArgumentNullException("predicate");for(;n<t;n++)if(!i(n))return!1;return!0},forAll$1:function(n,t){if(!n)throw new System.ArgumentNullException("collection");if(!t)throw new System.ArgumentNullException("predicate");var i=Bridge.getEnumerator(n);try{while(i.moveNext())if(!t(i.getCurrent()))return!1;return!0}finally{i.dispose()}},exists:function(n,t,i){if(!i)throw new System.ArgumentNullException("predicate");for(;n<t;n++)if(i(n))return!0;return!1},exists$1:function(n,t){if(!n)throw new System.ArgumentNullException("collection");if(!t)throw new System.ArgumentNullException("predicate");var i=Bridge.getEnumerator(n);try{while(i.moveNext())if(t(i.getCurrent()))return!0;return!1}finally{i.dispose()}}};Bridge.define("System.Diagnostics.Contracts.ContractFailureKind",{$kind:"enum",$statics:{precondition:0,postcondition:1,postconditionOnException:2,invarian:3,assert:4,assume:5}});Bridge.define("System.Diagnostics.Contracts.ContractException",{inherits:[System.Exception],ctor:function(n,t,i,r,u){this.$initialize();System.Exception.ctor.call(this,t,u);this._kind=n;this._failureMessage=t||null;this._userMessage=i||null;this._condition=r||null},getKind:function(){return this._kind},getFailure:function(){return this._failureMessage},getUserMessage:function(){return this._userMessage},getCondition:function(){return this._condition}});k={toIndex:function(n,t){if(t.length!==(n.$s?n.$s.length:1))throw new System.ArgumentException("Invalid number of indices");if(t[0]<0||t[0]>=(n.$s?n.$s[0]:n.length))throw new System.ArgumentException("Index 0 out of range");var r=t[0],i;if(n.$s)for(i=1;i<n.$s.length;i++){if(t[i]<0||t[i]>=n.$s[i])throw new System.ArgumentException("Index "+i+" out of range");r=r*n.$s[i]+t[i]}return r},$get:function(n){var t=this[System.Array.toIndex(this,n)];return typeof t!="undefined"?t:this.$v},get:function(n){var t,i,r;if(arguments.length<2)throw new System.ArgumentNullException("indices");for(t=Array.prototype.slice.call(arguments,1),i=0;i<t.length;i++)if(!Bridge.hasValue(t[i]))throw new System.ArgumentNullException("indices");return r=n[System.Array.toIndex(n,t)],typeof r!="undefined"?r:n.$v},$set:function(n,t){this[System.Array.toIndex(this,Array.prototype.slice.call(n,0))]=t},set:function(n,t){var i=Array.prototype.slice.call(arguments,2);n[System.Array.toIndex(n,i)]=t},getLength:function(n,t){if(t<0||t>=(n.$s?n.$s.length:1))throw new System.IndexOutOfRangeException;return n.$s?n.$s[t]:n.length},getRank:function(n){return n.$s?n.$s.length:1},getLower:function(n,t){return System.Array.getLength(n,t),0},create:function(n,t){var i=[],h=arguments.length>2?1:0,r,f,e,u,o,s;for(i.$v=n,i.$s=[],i.get=System.Array.$get,i.set=System.Array.$set,r=2;r<arguments.length;r++)h*=arguments[r],i.$s[r-2]=arguments[r];if(i.length=h,t)for(r=0;r<i.length;r++){for(o=[],s=r,f=i.$s.length-1;f>=0;f--)u=s%i.$s[f],o.unshift(u),s=Bridge.Int.div(s-u,i.$s[f]);for(e=t,u=0;u<o.length;u++)e=e[o[u]];i[r]=e}return i},init:function(n,t,i){for(var u=new Array(n),f=i!==!0&&Bridge.isFunction(t),r=0;r<n;r++)u[r]=f?t():t;return u},toEnumerable:function(n){return new Bridge.ArrayEnumerable(n)},toEnumerator:function(n,t){return new Bridge.ArrayEnumerator(n,t)},_typedArrays:{Float32Array:!0,Float64Array:!0,Int8Array:!0,Int16Array:!0,Int32Array:!0,Uint8Array:!0,Uint8ClampedArray:!0,Uint16Array:!0,Uint32Array:!0},is:function(n,t){return n instanceof Bridge.ArrayEnumerator?n.constructor===t||n instanceof t||t===Bridge.ArrayEnumerator||t.$$name&&System.String.startsWith(t.$$name,"System.Collections.IEnumerator")||t.$$name&&System.String.startsWith(t.$$name,"System.Collections.Generic.IEnumerator")?!0:!1:Bridge.isArray(n)?n.constructor===t||n instanceof t?!0:t===System.Collections.IEnumerable||t===System.Collections.ICollection||t===System.ICloneable||t.$$name&&System.String.startsWith(t.$$name,"System.Collections.Generic.IEnumerable$1")||t.$$name&&System.String.startsWith(t.$$name,"System.Collections.Generic.ICollection$1")||t.$$name&&System.String.startsWith(t.$$name,"System.Collections.Generic.IList$1")?!0:!!System.Array._typedArrays[String.prototype.slice.call(Object.prototype.toString.call(n),8,-1)]:!1},clone:function(n){return n.length===1?[n[0]]:n.slice(0)},getCount:function(n,t){var i;return Bridge.isArray(n)?n.length:Bridge.isFunction(n[i="System$Collections$ICollection$getCount"])||t&&Bridge.isFunction(n[i="System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(t)+"$getCount"])?n[i]():Bridge.isFunction(n.getCount)?n.getCount():0},getIsReadOnly:function(n,t){var i;return Bridge.isArray(n)?t?!0:!1:Bridge.isFunction(n[i="System$Collections$ICollection$getIsReadOnly"])||t&&Bridge.isFunction(n[i="System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(t)+"$getIsReadOnly"])?n[i]():Bridge.isFunction(n.getIsReadOnly)?n.getIsReadOnly():0},add:function(n,t,i){var r;Bridge.isArray(n)?n.push(t):i&&Bridge.isFunction(n[r="System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(i)+"$add"])?n[r](t):Bridge.isFunction(n.add)&&n.add(t)},clear:function(n,t){var i;Bridge.isArray(n)?System.Array.fill(n,t?t.getDefaultValue||Bridge.getDefaultValue(t):null,0,n.length):t&&Bridge.isFunction(n[i="System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(t)+"$clear"])?n[i]():Bridge.isFunction(n.clear)&&n.clear()},fill:function(n,t,i,r){if(!Bridge.hasValue(n))throw new System.ArgumentNullException("dst");if(i<0||r<0||i+r>n.length)throw new System.IndexOutOfRangeException;for(var u=Bridge.isFunction(t);--r>=0;)n[i+r]=u?t():t},copy:function(n,t,i,r,u){if(!i)throw new System.ArgumentNullException("dest","Value cannot be null");if(!n)throw new System.ArgumentNullException("src","Value cannot be null");if(t<0||r<0||u<0)throw new System.ArgumentOutOfRangeException("Number was less than the array's lower bound in the first dimension");if(u>n.length-t||u>i.length-r)throw new System.ArgumentException("Destination array was not long enough. Check destIndex and length, and the array's lower bounds");if(t<r&&n===i)while(--u>=0)i[r+u]=n[t+u];else for(var f=0;f<u;f++)i[r+f]=n[t+f]},copyTo:function(n,t,i,r){var u;if(Bridge.isArray(n))System.Array.copy(n,0,t,i,n?n.length:0);else if(Bridge.isFunction(n.copyTo))n.copyTo(t,i);else if(r&&Bridge.isFunction(n[u="System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(r)+"$copyTo"]))n[u](t,i);else throw new System.NotImplementedException("copyTo");},indexOf:function(n,t,i,r,u){var o,f,e,s;if(Bridge.isArray(n)){for(i=i||0,r=r||n.length,s=i+r,f=i;f<s;f++)if(e=n[f],e===t||System.Collections.Generic.EqualityComparer$1.$default.equals2(e,t))return f}else{if(u&&Bridge.isFunction(n[o="System$Collections$Generic$IList$1$"+Bridge.getTypeAlias(u)+"$indexOf"]))return n[o](t);if(Bridge.isFunction(n.indexOf))return n.indexOf(t)}return-1},contains:function(n,t,i){var r;return Bridge.isArray(n)?System.Array.indexOf(n,t)>-1:i&&Bridge.isFunction(n[r="System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(i)+"$contains"])?n[r](t):Bridge.isFunction(n.contains)?n.contains(t):!1},remove:function(n,t,i){var u,r;if(Bridge.isArray(n)){if(r=System.Array.indexOf(n,t),r>-1)return n.splice(r,1),!0}else{if(i&&Bridge.isFunction(n[u="System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(i)+"$remove"]))return n[u](t);if(Bridge.isFunction(n.remove))return n.remove(t)}return!1},insert:function(n,t,i,r){var u;Bridge.isArray(n)?n.splice(t,0,i):r&&Bridge.isFunction(n[u="System$Collections$Generic$IList$1$"+Bridge.getTypeAlias(r)+"$insert"])?n[u](t,i):Bridge.isFunction(n.insert)&&n.insert(t,i)},removeAt:function(n,t,i){var r;Bridge.isArray(n)?n.splice(t,1):i&&Bridge.isFunction(n[r="System$Collections$Generic$IList$1$"+Bridge.getTypeAlias(i)+"$removeAt"])?n[r](t):Bridge.isFunction(n.removeAt)&&n.removeAt(t)},getItem:function(n,t,i){var r;return Bridge.isArray(n)?n[t]:Bridge.isFunction(n.get)?n.get(t):Bridge.isFunction(n.getItem)?n.getItem(t):i&&Bridge.isFunction(n[r="System$Collections$Generic$IList$1$"+Bridge.getTypeAlias(i)+"$getItem"])?n[r](t):Bridge.isFunction(n.get_Item)?n.get_Item(t):void 0},setItem:function(n,t,i,r){var u;if(Bridge.isArray(n))n[t]=i;else if(Bridge.isFunction(n.set))n.set(t,i);else if(Bridge.isFunction(n.setItem))n.setItem(t,i);else{if(r&&Bridge.isFunction(n[u="System$Collections$Generic$IList$1$"+Bridge.getTypeAlias(r)+"$setItem"]))return n[u](t,i);Bridge.isFunction(n.set_Item)&&n.set_Item(t,i)}},resize:function(n,t,i){var u;if(t<0)throw new System.ArgumentOutOfRangeException("newSize",null,null,t);var f=0,e=Bridge.isFunction(i),r=n.v;for(r?(f=r.length,r.length=t):r=new Array(t),u=f;u<t;u++)r[u]=e?i():i;n.v=r},reverse:function(n,t,i){var r,u,f;if(!k)throw new System.ArgumentNullException("arr");if(t||t===0||(t=0,i=n.length),t<0||i<0)throw new System.ArgumentOutOfRangeException(t<0?"index":"length","Non-negative number required.");if(k.length-t<i)throw new System.ArgumentException("Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.");if(System.Array.getRank(n)!==1)throw new System.Exception("Only single dimension arrays are supported here.");for(r=t,u=t+i-1;r<u;)f=n[r],n[r]=n[u],n[u]=f,r++,u--},binarySearch:function(n,t,i,r,u){var o,f,s,e,h;if(!n)throw new System.ArgumentNullException("array");if(o=0,t<o||i<0)throw new System.ArgumentOutOfRangeException(t<o?"index":"length","Non-negative number required.");if(n.length-(t-o)<i)throw new System.ArgumentException("Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.");if(System.Array.getRank(n)!==1)throw new System.RankException("Only single dimensional arrays are supported for the requested action.");for(u||(u=System.Collections.Generic.Comparer$1.$default),f=t,s=t+i-1;f<=s;){e=f+(s-f>>1);try{h=u.compare(n[e],r)}catch(c){throw new System.InvalidOperationException("Failed to compare two elements in the array.",c);}if(h===0)return e;h<0?f=e+1:s=e-1}return~f},sort:function(n,t,i,r){var f,u;if(!n)throw new System.ArgumentNullException("array");if(arguments.length===2&&typeof t=="object"&&(r=t,t=null),Bridge.isNumber(t)||(t=0),Bridge.isNumber(i)||(i=n.length),r||(r=System.Collections.Generic.Comparer$1.$default),t===0&&i===n.length)n.sort(Bridge.fn.bind(r,r.compare));else for(f=n.slice(t,t+i),f.sort(Bridge.fn.bind(r,r.compare)),u=t;u<t+i;u++)n[u]=f[u-t]},min:function(n,t){for(var r=n[0],u=n.length,i=0;i<u;i++)!(n[i]<r||r<t)||n[i]<t||(r=n[i]);return r},max:function(n,t){for(var r=n[0],u=n.length,i=0;i<u;i++)!(n[i]>r||r>t)||n[i]>t||(r=n[i]);return r},addRange:function(n,t){if(Bridge.isArray(t))n.push.apply(n,t);else{var i=Bridge.getEnumerator(t);try{while(i.moveNext())n.push(i.getCurrent())}finally{Bridge.is(i,System.IDisposable)&&i.dispose()}}},convertAll:function(n,t){if(!Bridge.hasValue(n))throw new System.ArgumentNullException("array");if(!Bridge.hasValue(t))throw new System.ArgumentNullException("converter");return n.map(t)},find:function(n,t,i){if(!Bridge.hasValue(t))throw new System.ArgumentNullException("array");if(!Bridge.hasValue(i))throw new System.ArgumentNullException("match");for(var r=0;r<t.length;r++)if(i(t[r]))return t[r];return Bridge.getDefaultValue(n)},findAll:function(n,t){var r,i;if(!Bridge.hasValue(n))throw new System.ArgumentNullException("array");if(!Bridge.hasValue(t))throw new System.ArgumentNullException("match");for(r=[],i=0;i<n.length;i++)t(n[i])&&r.push(n[i]);return r},findIndex:function(n,t,i,r){var f,u;if(!Bridge.hasValue(n))throw new System.ArgumentNullException("array");if(arguments.length===2?(r=t,t=0,i=n.length):arguments.length===3&&(r=i,i=n.length-t),t<0||t>n.length)throw new System.ArgumentOutOfRangeException("startIndex");if(i<0||t>n.length-i)throw new System.ArgumentOutOfRangeException("count");if(!Bridge.hasValue(r))throw new System.ArgumentNullException("match");for(f=t+i,u=t;u<f;u++)if(r(n[u]))return u;return-1},findLast:function(n,t,i){if(!Bridge.hasValue(t))throw new System.ArgumentNullException("array");if(!Bridge.hasValue(i))throw new System.ArgumentNullException("match");for(var r=t.length-1;r>=0;r--)if(i(t[r]))return t[r];return Bridge.getDefaultValue(n)},findLastIndex:function(n,t,i,r){var f,u;if(!Bridge.hasValue(n))throw new System.ArgumentNullException("array");if(arguments.length===2?(r=t,t=n.length-1,i=n.length):arguments.length===3&&(r=i,i=t+1),!Bridge.hasValue(r))throw new System.ArgumentNullException("match");if(n.length===0){if(t!==-1)throw new System.ArgumentOutOfRangeException("startIndex");}else if(t<0||t>=n.length)throw new System.ArgumentOutOfRangeException("startIndex");if(i<0||t-i+1<0)throw new System.ArgumentOutOfRangeException("count");for(f=t-i,u=t;u>f;u--)if(r(n[u]))return u;return-1},forEach:function(n,t){if(!Bridge.hasValue(n))throw new System.ArgumentNullException("array");if(!Bridge.hasValue(t))throw new System.ArgumentNullException("action");for(var i=0;i<n.length;i++)t(n[i],i,n)},indexOfT:function(n,t,i,r){if(!Bridge.hasValue(n))throw new System.ArgumentNullException("array");if(arguments.length===2?(i=0,r=n.length):arguments.length===3&&(r=n.length-i),i<0||i>=n.length&&n.length>0)throw new System.ArgumentOutOfRangeException("startIndex","out of range");if(r<0||r>n.length-i)throw new System.ArgumentOutOfRangeException("count","out of range");return System.Array.indexOf(n,t,i,r)},lastIndexOfT:function(n,t,i,r){var e,u,f;if(!Bridge.hasValue(n))throw new System.ArgumentNullException("array");if(arguments.length===2?(i=n.length-1,r=n.length):arguments.length===3&&(r=n.length===0?0:i+1),i<0||i>=n.length&&n.length>0)throw new System.ArgumentOutOfRangeException("startIndex","out of range");if(r<0||i-r+1<0)throw new System.ArgumentOutOfRangeException("count","out of range");for(e=i-r+1,u=i;u>=e;u--)if(f=n[u],f===t||System.Collections.Generic.EqualityComparer$1.$default.equals2(f,t))return u;return-1},trueForAll:function(n,t){if(!Bridge.hasValue(n))throw new System.ArgumentNullException("array");if(!Bridge.hasValue(t))throw new System.ArgumentNullException("match");for(var i=0;i<n.length;i++)if(!t(n[i]))return!1;return!0}};System.Array=k;Bridge.define("System.ArraySegment",{ctor:function(n,t,i){this.$initialize();this.array=n;this.offset=t||0;this.count=i||n.length},getArray:function(){return this.array},getCount:function(){return this.count},getOffset:function(){return this.offset}});Bridge.define("System.Collections.IEnumerable",{$kind:"interface"});Bridge.define("System.Collections.IEnumerator",{$kind:"interface"});Bridge.define("System.Collections.IEqualityComparer",{$kind:"interface"});Bridge.define("System.Collections.ICollection",{inherits:[System.Collections.IEnumerable],$kind:"interface"});Bridge.define("System.Collections.Generic.IEnumerator$1",function(){return{inherits:[System.Collections.IEnumerator],$kind:"interface"}});Bridge.define("System.Collections.Generic.IEnumerable$1",function(){return{inherits:[System.Collections.IEnumerable],$kind:"interface"}});Bridge.define("System.Collections.Generic.ICollection$1",function(n){return{inherits:[System.Collections.Generic.IEnumerable$1(n)],$kind:"interface"}});Bridge.define("System.Collections.Generic.IEqualityComparer$1",function(){return{$kind:"interface"}});Bridge.define("System.Collections.Generic.IDictionary$2",function(n,t){return{inherits:[System.Collections.Generic.IEnumerable$1(System.Collections.Generic.KeyValuePair$2(n,t))],$kind:"interface"}});Bridge.define("System.Collections.Generic.IList$1",function(n){return{inherits:[System.Collections.Generic.ICollection$1(n)],$kind:"interface"}});Bridge.define("System.Collections.Generic.IComparer$1",function(){return{$kind:"interface"}});Bridge.define("System.Collections.Generic.ISet$1",function(n){return{inherits:[System.Collections.Generic.ICollection$1(n)],$kind:"interface"}});Bridge.define("System.Collections.Generic.IReadOnlyCollection$1",function(n){return{inherits:[System.Collections.Generic.IEnumerable$1(n)],$kind:"interface"}});Bridge.define("System.Collections.Generic.IReadOnlyList$1",function(n){return{inherits:[System.Collections.Generic.IReadOnlyCollection$1(n)],$kind:"interface"}});Bridge.define("Bridge.CustomEnumerator",{inherits:[System.Collections.IEnumerator],config:{alias:["getCurrent","System$Collections$IEnumerator$getCurrent","moveNext","System$Collections$IEnumerator$moveNext","reset","System$Collections$IEnumerator$reset"]},ctor:function(n,t,i,r,u){this.$initialize();this.$moveNext=n;this.$getCurrent=t;this.$dispose=r;this.$reset=i;this.scope=u},moveNext:function(){try{return this.$moveNext.call(this.scope)}catch(n){this.dispose.call(this.scope);throw n;}},getCurrent:function(){return this.$getCurrent.call(this.scope)},getCurrent$1:function(){return this.$getCurrent.call(this.scope)},reset:function(){this.$reset&&this.$reset.call(this.scope)},dispose:function(){this.$dispose&&this.$dispose.call(this.scope)}});Bridge.define("Bridge.ArrayEnumerator",{inherits:[System.Collections.IEnumerator,System.IDisposable],statics:{$isArrayEnumerator:!0},config:{alias:["getCurrent","System$Collections$IEnumerator$getCurrent","moveNext","System$Collections$IEnumerator$moveNext","reset","System$Collections$IEnumerator$reset","dispose","System$IDisposable$dispose"]},ctor:function(n,t){this.$initialize();this.array=n;this.reset();t&&(this["System$Collections$Generic$IEnumerator$1$"+Bridge.getTypeAlias(t)+"$getCurrent$1"]=this.getCurrent)},moveNext:function(){return this.index++,this.index<this.array.length},getCurrent:function(){return this.array[this.index]},getCurrent$1:function(){return this.array[this.index]},reset:function(){this.index=-1},dispose:Bridge.emptyFn});Bridge.define("Bridge.ArrayEnumerable",{inherits:[System.Collections.IEnumerable],config:{alias:["getEnumerator","System$Collections$IEnumerable$getEnumerator"]},ctor:function(n){this.$initialize();this.array=n},getEnumerator:function(){return new Bridge.ArrayEnumerator(this.array)}});Bridge.define("System.Collections.Generic.EqualityComparer$1",function(n){return{inherits:[System.Collections.Generic.IEqualityComparer$1(n)],statics:{config:{init:function(){this.def=new(System.Collections.Generic.EqualityComparer$1(n))}}},config:{alias:["equals2","System$Collections$Generic$IEqualityComparer$1$"+Bridge.getTypeAlias(n)+"$equals2","getHashCode2","System$Collections$Generic$IEqualityComparer$1$"+Bridge.getTypeAlias(n)+"$getHashCode2"]},equals2:function(n,t){if(Bridge.isDefined(n,!0)){if(Bridge.isDefined(t,!0)){var i=n&&n.$$name;if(i){if(Bridge.isFunction(n.equalsT))return Bridge.equalsT(n,t);if(Bridge.isFunction(n.equals))return Bridge.equals(n,t)}else return Bridge.equals(n,t);return n===t}}else return!Bridge.isDefined(t,!0);return!1},getHashCode2:function(n){return Bridge.isDefined(n,!0)?Bridge.getHashCode(n):0}}});System.Collections.Generic.EqualityComparer$1.$default=new(System.Collections.Generic.EqualityComparer$1(Object));Bridge.define("System.Collections.Generic.Comparer$1",function(n){return{inherits:[System.Collections.Generic.IComparer$1(n)],config:{alias:["compare","System$Collections$Generic$IComparer$1$"+Bridge.getTypeAlias(n)+"$compare"]},ctor:function(n){this.$initialize();this.fn=n;this.compare=n}}});System.Collections.Generic.Comparer$1.$default=new(System.Collections.Generic.Comparer$1(Object))(function(n,t){if(Bridge.hasValue(n)){if(!Bridge.hasValue(t))return 1}else return Bridge.hasValue(t)?-1:0;return Bridge.compare(n,t)});Bridge.define("System.Collections.Generic.KeyValuePair$2",function(n,t){return{$kind:"struct",statics:{getDefaultValue:function(){return new(System.Collections.Generic.KeyValuePair$2(n,t))(Bridge.getDefaultValue(n),Bridge.getDefaultValue(t))}},ctor:function(i,r){i===undefined&&(i=Bridge.getDefaultValue(n));r===undefined&&(r=Bridge.getDefaultValue(t));this.$initialize();this.key=i;this.value=r},toString:function(){var n="[";return this.key!=null&&(n+=this.key.toString()),n+=", ",this.value!=null&&(n+=this.value.toString()),n+"]"}}});Bridge.define("System.Collections.Generic.Dictionary$2",function(n,t){return{inherits:[System.Collections.Generic.IDictionary$2(n,t)],config:{alias:["getCount","System$Collections$Generic$IDictionary$2$"+Bridge.getTypeAlias(n)+"$"+Bridge.getTypeAlias(t)+"$getCount","getKeys","System$Collections$Generic$IDictionary$2$"+Bridge.getTypeAlias(n)+"$"+Bridge.getTypeAlias(t)+"$getKeys","getValues","System$Collections$Generic$IDictionary$2$"+Bridge.getTypeAlias(n)+"$"+Bridge.getTypeAlias(t)+"$getValues","get","System$Collections$Generic$IDictionary$2$"+Bridge.getTypeAlias(n)+"$"+Bridge.getTypeAlias(t)+"$getItem","set","System$Collections$Generic$IDictionary$2$"+Bridge.getTypeAlias(n)+"$"+Bridge.getTypeAlias(t)+"$setItem","add","System$Collections$Generic$IDictionary$2$"+Bridge.getTypeAlias(n)+"$"+Bridge.getTypeAlias(t)+"$add","containsKey","System$Collections$Generic$IDictionary$2$"+Bridge.getTypeAlias(n)+"$"+Bridge.getTypeAlias(t)+"$containsKey","getEnumerator","System$Collections$Generic$IEnumerable$1$System$Collections$Generic$KeyValuePair$2$"+Bridge.getTypeAlias(n)+"$"+Bridge.getTypeAlias(t)+"$getEnumerator","remove","System$Collections$Generic$IDictionary$2$"+Bridge.getTypeAlias(n)+"$"+Bridge.getTypeAlias(t)+"$remove","tryGetValue","System$Collections$Generic$IDictionary$2$"+Bridge.getTypeAlias(n)+"$"+Bridge.getTypeAlias(t)+"$tryGetValue"]},ctor:function(i,r){var f,e,o,s,u;if(this.$initialize(),this.comparer=r||System.Collections.Generic.EqualityComparer$1(n).def,this.clear(),Bridge.is(i,System.Collections.Generic.Dictionary$2(n,t)))for(f=Bridge.getEnumerator(i);f.moveNext();)e=f.getCurrent(),this.add(e.key,e.value);else if(Object.prototype.toString.call(i)==="[object Object]")for(o=Object.keys(i),u=0;u<o.length;u++)s=o[u],this.add(s,i[s])},getKeys:function(){return new(System.Collections.Generic.DictionaryCollection$1(n))(this,!0)},getValues:function(){return new(System.Collections.Generic.DictionaryCollection$1(t))(this,!1)},clear:function(){this.entries={};this.count=0},findEntry:function(n){var r=this.comparer.getHashCode2(n),i,t;if(Bridge.isDefined(this.entries[r]))for(i=this.entries[r],t=0;t<i.length;t++)if(this.comparer.equals2(i[t].key,n))return i[t]},containsKey:function(n){return!!this.findEntry(n)},containsValue:function(n){var i,t,r;for(i in this.entries)if(this.entries.hasOwnProperty(i))for(r=this.entries[i],t=0;t<r.length;t++)if(this.comparer.equals2(r[t].value,n))return!0;return!1},get:function(n){var t=this.findEntry(n);if(!t)throw new System.Collections.Generic.KeyNotFoundException("Key "+n+" does not exist.");return t.value},getItem:function(n){return this.get(n)},set:function(i,r,u){var f=this.findEntry(i),e;if(f){if(u)throw new System.ArgumentException("Key "+i+" already exists.");f.value=r;return}e=this.comparer.getHashCode2(i);f=new(System.Collections.Generic.KeyValuePair$2(n,t))(i,r);this.entries[e]?this.entries[e].push(f):this.entries[e]=[f];this.count++},setItem:function(n,t,i){this.set(n,t,i)},add:function(n,t){this.set(n,t,!0)},remove:function(n){var r=this.comparer.getHashCode2(n),t,i;if(!this.entries[r])return!1;for(t=this.entries[r],i=0;i<t.length;i++)if(this.comparer.equals2(t[i].key,n))return t.splice(i,1),t.length==0&&delete this.entries[r],this.count--,!0;return!1},getCount:function(){return this.count},getComparer:function(){return this.comparer},tryGetValue:function(n,i){var r=this.findEntry(n);return i.v=r?r.value:Bridge.getDefaultValue(t),!!r},getCustomEnumerator:function(n){var r=Bridge.getPropertyNames(this.entries),t=-1,i;return new Bridge.CustomEnumerator(function(){return((t<0||i>=this.entries[r[t]].length-1)&&(i=-1,t++),t>=r.length)?!1:(i++,!0)},function(){return n(this.entries[r[t]][i])},function(){t=-1},null,this)},getEnumerator:function(){return this.getCustomEnumerator(function(n){return n})}}});Bridge.define("System.Collections.Generic.DictionaryCollection$1",function(n){return{inherits:[System.Collections.Generic.ICollection$1(n)],config:{alias:["getEnumerator","System$Collections$Generic$IEnumerable$1$"+Bridge.getTypeAlias(n)+"$getEnumerator","getCount","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$getCount","add","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$add","clear","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$clear","contains","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$contains","remove","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$remove"]},ctor:function(n,t){this.$initialize();this.dictionary=n;this.keys=t},getCount:function(){return this.dictionary.getCount()},getEnumerator:function(){return this.dictionary.getCustomEnumerator(this.keys?function(n){return n.key}:function(n){return n.value})},contains:function(n){return this.keys?this.dictionary.containsKey(n):this.dictionary.containsValue(n)},add:function(){throw new System.NotSupportedException;},clear:function(){throw new System.NotSupportedException;},remove:function(){throw new System.NotSupportedException;}}});Bridge.define("System.Collections.Generic.List$1",function(n){return{inherits:[System.Collections.Generic.ICollection$1(n),System.Collections.ICollection,System.Collections.Generic.IList$1(n)],config:{alias:["getItem","System$Collections$Generic$IList$1$"+Bridge.getTypeAlias(n)+"$getItem","setItem","System$Collections$Generic$IList$1$"+Bridge.getTypeAlias(n)+"$setItem","getCount","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$getCount","getIsReadOnly","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$getIsReadOnly","add","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$add","clear","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$clear","contains","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$contains","copyTo","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$copyTo","getEnumerator","System$Collections$Generic$IEnumerable$1$"+Bridge.getTypeAlias(n)+"$getEnumerator","indexOf","System$Collections$Generic$IList$1$"+Bridge.getTypeAlias(n)+"$indexOf","insert","System$Collections$Generic$IList$1$"+Bridge.getTypeAlias(n)+"$insert","remove","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$remove","removeAt","System$Collections$Generic$IList$1$"+Bridge.getTypeAlias(n)+"$removeAt"]},ctor:function(n){this.$initialize();this.items=Object.prototype.toString.call(n)==="[object Array]"?System.Array.clone(n):Bridge.is(n,System.Collections.IEnumerable)?Bridge.toArray(n):[];this.clear.$clearCallbacks=[]},checkIndex:function(n){if(n<0||n>this.items.length-1)throw new System.ArgumentOutOfRangeException("Index out of range");},getCount:function(){return this.items.length},getIsReadOnly:function(){return!!this.readOnly},get:function(n){return this.checkIndex(n),this.items[n]},getItem:function(n){return this.get(n)},set:function(n,t){this.checkReadOnly();this.checkIndex(n);this.items[n]=t},setItem:function(n,t){this.set(n,t)},add:function(n){this.checkReadOnly();this.items.push(n)},addRange:function(n){this.checkReadOnly();for(var i=Bridge.toArray(n),t=0,r=i.length;t<r;++t)this.items.push(i[t])},clear:function(){this.checkReadOnly();this.items=[];for(var n=0;n<this.clear.$clearCallbacks.length;n++)this.clear.$clearCallbacks[n](this)},onClear:function(n){this.clear.$clearCallbacks.push(n)},indexOf:function(n,t){var i,r;for(Bridge.isDefined(t)||(t=0),t!==0&&this.checkIndex(t),i=t;i<this.items.length;i++)if(r=this.items[i],System.Collections.Generic.EqualityComparer$1.$default.equals2(r,n))return i;return-1},insertRange:function(n,t){var r,i;for(this.checkReadOnly(),n!==this.items.length&&this.checkIndex(n),r=Bridge.toArray(t),i=0;i<r.length;i++)this.insert(n++,r[i])},contains:function(n){return this.indexOf(n)>-1},copyTo:function(n,t){System.Array.copy(this.items,0,n,t,this.items.length)},getEnumerator:function(){return new Bridge.ArrayEnumerator(this.items,n)},getRange:function(t,i){Bridge.isDefined(t)||(t=0);Bridge.isDefined(i)||(i=this.items.length);t!==0&&this.checkIndex(t);this.checkIndex(t+i-1);for(var u=[],f=t+i,r=t;r<f;r++)u.push(this.items[r]);return new(System.Collections.Generic.List$1(n))(u)},insert:function(n,t){if(this.checkReadOnly(),n!==this.items.length&&this.checkIndex(n),Bridge.isArray(t))for(var i=0;i<t.length;i++)this.insert(n++,t[i]);else this.items.splice(n,0,t)},join:function(n){return this.items.join(n)},lastIndexOf:function(n,t){Bridge.isDefined(t)||(t=this.items.length-1);t!==0&&this.checkIndex(t);for(var i=t;i>=0;i--)if(n===this.items[i])return i;return-1},remove:function(n){this.checkReadOnly();var t=this.indexOf(n);return t<0?!1:(this.checkIndex(t),this.items.splice(t,1),!0)},removeAt:function(n){this.checkReadOnly();this.checkIndex(n);this.items.splice(n,1)},removeRange:function(n,t){this.checkReadOnly();this.checkIndex(n);this.items.splice(n,t)},reverse:function(){this.checkReadOnly();this.items.reverse()},slice:function(n,t){this.checkReadOnly();var i=this.$$name.substr(this.$$name.lastIndexOf("$")+1);return new(System.Collections.Generic.List$1(Bridge.unroll(i)))(this.items.slice(n,t))},sort:function(n){this.checkReadOnly();this.items.sort(n||System.Collections.Generic.Comparer$1.$default.compare)},splice:function(n,t,i){this.checkReadOnly();this.items.splice(n,t,i)},unshift:function(){this.checkReadOnly();this.items.unshift()},toArray:function(){return Bridge.toArray(this)},checkReadOnly:function(){if(this.readOnly)throw new System.NotSupportedException;},binarySearch:function(n,t,i,r){return arguments.length===1&&(i=n,n=null),arguments.length===2&&(i=n,r=t,n=null,t=null),Bridge.isNumber(n)||(n=0),Bridge.isNumber(t)||(t=this.items.length),r||(r=System.Collections.Generic.Comparer$1.$default),System.Array.binarySearch(this.items,n,t,i,r)},convertAll:function(n,t){var r,i;if(!Bridge.hasValue(t))throw new System.ArgumentNullException("converter is null.");for(r=new(System.Collections.Generic.List$1(n))(this.items.length),i=0;i<this.items.length;i++)r.items[i]=t(this.items[i]);return r}}});Bridge.define("System.Collections.ObjectModel.ReadOnlyCollection$1",function(n){return{inherits:[System.Collections.Generic.List$1(n),System.Collections.Generic.IReadOnlyList$1(n)],ctor:function(t){if(this.$initialize(),t==null)throw new System.ArgumentNullException("list");if(System.Collections.Generic.List$1(n).ctor.call(this,[]),this.readOnly=!0,Object.prototype.toString.call(t)==="[object Array]")this.items=t;else if(Bridge.is(t,System.Collections.Generic.List$1(n))){var i=this;this.items=t.items;t.onClear(function(n){i.items=n.items})}else Bridge.is(t,System.Collections.IEnumerable)&&(this.items=Bridge.toArray(t))}}});Bridge.define("System.Threading.Tasks.Task",{inherits:[System.IDisposable],config:{alias:["dispose","System$IDisposable$dispose"]},ctor:function(n,t){this.$initialize();this.action=n;this.state=t;this.exception=null;this.status=System.Threading.Tasks.TaskStatus.created;this.callbacks=[];this.result=null},statics:{delay:function(n,t){var i=new System.Threading.Tasks.TaskCompletionSource;return setTimeout(function(){i.setResult(t)},n),i.task},fromResult:function(n){var t=new System.Threading.Tasks.Task;return t.status=System.Threading.Tasks.TaskStatus.ranToCompletion,t.result=n,t},run:function(n){var t=new System.Threading.Tasks.TaskCompletionSource;return setTimeout(function(){try{t.setResult(n())}catch(i){t.setException(System.Exception.create(i))}},0),t.task},whenAll:function(n){var t=new System.Threading.Tasks.TaskCompletionSource,r,f,e=!1,u=[],i;if(Bridge.is(n,System.Collections.IEnumerable)?n=Bridge.toArray(n):Bridge.isArray(n)||(n=Array.prototype.slice.call(arguments,0)),n.length===0)return t.setResult([]),t.task;for(f=n.length,r=new Array(n.length),i=0;i<n.length;i++)(function(i){n[i].continueWith(function(n){switch(n.status){case System.Threading.Tasks.TaskStatus.ranToCompletion:r[i]=n.getResult();break;case System.Threading.Tasks.TaskStatus.canceled:e=!0;break;case System.Threading.Tasks.TaskStatus.faulted:System.Array.addRange(u,n.exception.innerExceptions);break;default:throw new System.InvalidOperationException("Invalid task status: "+n.status);}--f==0&&(u.length>0?t.setException(u):e?t.setCanceled():t.setResult(r))})})(i);return t.task},whenAny:function(n){if(Bridge.is(n,System.Collections.IEnumerable)?n=Bridge.toArray(n):Bridge.isArray(n)||(n=Array.prototype.slice.call(arguments,0)),!n.length)throw new System.ArgumentException("At least one task is required");for(var t=new System.Threading.Tasks.TaskCompletionSource,i=0;i<n.length;i++)n[i].continueWith(function(n){switch(n.status){case System.Threading.Tasks.TaskStatus.ranToCompletion:t.trySetResult(n);break;case System.Threading.Tasks.TaskStatus.canceled:t.trySetCanceled();break;case System.Threading.Tasks.TaskStatus.faulted:t.trySetException(n.exception.innerExceptions);break;default:throw new System.InvalidOperationException("Invalid task status: "+n.status);}});return t.task},fromCallback:function(n,t){var i=new System.Threading.Tasks.TaskCompletionSource,r=Array.prototype.slice.call(arguments,2),u;return u=function(n){i.setResult(n)},r.push(u),n[t].apply(n,r),i.task},fromCallbackResult:function(n,t,i){var r=new System.Threading.Tasks.TaskCompletionSource,u=Array.prototype.slice.call(arguments,3),f;return f=function(n){r.setResult(n)},i(u,f),n[t].apply(n,u),r.task},fromCallbackOptions:function(n,t,i){var u=new System.Threading.Tasks.TaskCompletionSource,r=Array.prototype.slice.call(arguments,3),f;return f=function(n){u.setResult(n)},r[0]=r[0]||{},r[0][i]=f,n[t].apply(n,r),u.task},fromPromise:function(n,t,i,r){var u=new System.Threading.Tasks.TaskCompletionSource;return n.then||(n=n.promise()),typeof t=="number"?t=function(n){return function(){return arguments[n>=0?n:arguments.length+n]}}(t):typeof t!="function"&&(t=function(){return Array.prototype.slice.call(arguments,0)}),n.then(function(){u.setResult(t?t.apply(null,arguments):Array.prototype.slice.call(arguments,0))},function(){u.setException(i?i.apply(null,arguments):new Bridge.PromiseException(Array.prototype.slice.call(arguments,0)))},r),u.task}},continueWith:function(n,t){var i=new System.Threading.Tasks.TaskCompletionSource,r=this,u=t?function(){i.setResult(n(r))}:function(){try{i.setResult(n(r))}catch(t){i.setException(System.Exception.create(t))}};return this.isCompleted()?setTimeout(u,0):this.callbacks.push(u),i.task},start:function(){if(this.status!==System.Threading.Tasks.TaskStatus.created)throw new System.InvalidOperationException("Task was already started.");var n=this;this.status=System.Threading.Tasks.TaskStatus.running;setTimeout(function(){try{var t=n.action(n.state);delete n.action;delete n.state;n.complete(t)}catch(i){n.fail(new System.AggregateException(null,[System.Exception.create(i)]))}},0)},runCallbacks:function(){var n=this;setTimeout(function(){for(var t=0;t<n.callbacks.length;t++)n.callbacks[t](n);delete n.callbacks},0)},complete:function(n){return this.isCompleted()?!1:(this.result=n,this.status=System.Threading.Tasks.TaskStatus.ranToCompletion,this.runCallbacks(),!0)},fail:function(n){return this.isCompleted()?!1:(this.exception=n,this.status=System.Threading.Tasks.TaskStatus.faulted,this.runCallbacks(),!0)},cancel:function(){return this.isCompleted()?!1:(this.status=System.Threading.Tasks.TaskStatus.canceled,this.runCallbacks(),!0)},isCanceled:function(){return this.status===System.Threading.Tasks.TaskStatus.canceled},isCompleted:function(){return this.status===System.Threading.Tasks.TaskStatus.ranToCompletion||this.status===System.Threading.Tasks.TaskStatus.canceled||this.status===System.Threading.Tasks.TaskStatus.faulted},isFaulted:function(){return this.status===System.Threading.Tasks.TaskStatus.faulted},_getResult:function(n){switch(this.status){case System.Threading.Tasks.TaskStatus.ranToCompletion:return this.result;case System.Threading.Tasks.TaskStatus.canceled:var t=new System.Threading.Tasks.TaskCanceledException(null,this);throw n?t:new System.AggregateException(null,[t]);case System.Threading.Tasks.TaskStatus.faulted:throw n?this.exception.innerExceptions.getCount()>0?this.exception.innerExceptions.get(0):null:this.exception;default:throw new System.InvalidOperationException("Task is not yet completed.");}},getResult:function(){return this._getResult(!1)},dispose:function(){},getAwaiter:function(){return this},getAwaitedResult:function(){return this._getResult(!0)}});Bridge.define("System.Threading.Tasks.TaskStatus",{$kind:"enum",$statics:{created:0,waitingForActivation:1,waitingToRun:2,running:3,waitingForChildrenToComplete:4,ranToCompletion:5,canceled:6,faulted:7}});Bridge.define("System.Threading.Tasks.TaskCompletionSource",{ctor:function(){this.$initialize();this.task=new System.Threading.Tasks.Task;this.task.status=System.Threading.Tasks.TaskStatus.running},setCanceled:function(){if(!this.task.cancel())throw new System.InvalidOperationException("Task was already completed.");},setResult:function(n){if(!this.task.complete(n))throw new System.InvalidOperationException("Task was already completed.");},setException:function(n){if(!this.trySetException(n))throw new System.InvalidOperationException("Task was already completed.");},trySetCanceled:function(){return this.task.cancel()},trySetResult:function(n){return this.task.complete(n)},trySetException:function(n){return Bridge.is(n,System.Exception)&&(n=[n]),this.task.fail(new System.AggregateException(null,n))}});Bridge.define("System.Threading.CancellationTokenSource",{inherits:[System.IDisposable],config:{alias:["dispose","System$IDisposable$dispose"]},ctor:function(n){this.$initialize();this.timeout=typeof n=="number"&&n>=0?setTimeout(Bridge.fn.bind(this,this.cancel),n,-1):null;this.isCancellationRequested=!1;this.token=new System.Threading.CancellationToken(this);this.handlers=[]},cancel:function(n){var i,r,t;if(!this.isCancellationRequested){for(this.isCancellationRequested=!0,i=[],r=this.handlers,this.clean(),t=0;t<r.length;t++)try{r[t].f(r[t].s)}catch(u){if(n&&n!==-1)throw u;i.push(u)}if(i.length>0&&n!==-1)throw new System.AggregateException(null,i);}},cancelAfter:function(n){this.isCancellationRequested||(this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(Bridge.fn.bind(this,this.cancel),n,-1))},register:function(n,t){if(this.isCancellationRequested)return n(t),new System.Threading.CancellationTokenRegistration;var i={f:n,s:t};return this.handlers.push(i),new System.Threading.CancellationTokenRegistration(this,i)},deregister:function(n){var t=this.handlers.indexOf(n);t>=0&&this.handlers.splice(t,1)},dispose:function(){this.clean()},clean:function(){if(this.timeout&&clearTimeout(this.timeout),this.timeout=null,this.handlers=[],this.links){for(var n=0;n<this.links.length;n++)this.links[n].dispose();this.links=null}},statics:{createLinked:function(){var n=new System.Threading.CancellationTokenSource,i,t;for(n.links=[],i=Bridge.fn.bind(n,n.cancel),t=0;t<arguments.length;t++)n.links.push(arguments[t].register(i));return n}}});Bridge.define("System.Threading.CancellationToken",{$kind:"struct",ctor:function(n){this.$initialize();Bridge.is(n,System.Threading.CancellationTokenSource)||(n=n?System.Threading.CancellationToken.sourceTrue:System.Threading.CancellationToken.sourceFalse);this.source=n},getCanBeCanceled:function(){return!this.source.uncancellable},getIsCancellationRequested:function(){return this.source.isCancellationRequested},throwIfCancellationRequested:function(){if(this.source.isCancellationRequested)throw new System.OperationCanceledException(this);},register:function(n,t){return this.source.register(n,t)},getHashCode:function(){return Bridge.getHashCode(this.source)},equals:function(n){return n.source===this.source},equalsT:function(n){return n.source===this.source},statics:{sourceTrue:{isCancellationRequested:!0,register:function(n,t){return n(t),new System.Threading.CancellationTokenRegistration}},sourceFalse:{uncancellable:!0,isCancellationRequested:!1,register:function(){return new System.Threading.CancellationTokenRegistration}},getDefaultValue:function(){return new System.Threading.CancellationToken}}});System.Threading.CancellationToken.none=new System.Threading.CancellationToken;Bridge.define("System.Threading.CancellationTokenRegistration",{inherits:function(){return[System.IDisposable,System.IEquatable$1(System.Threading.CancellationTokenRegistration)]},$kind:"struct",config:{alias:["dispose","System$IDisposable$dispose"]},ctor:function(n,t){this.$initialize();this.cts=n;this.o=t},dispose:function(){this.cts&&(this.cts.deregister(this.o),this.cts=this.o=null)},equalsT:function(n){return this===n},equals:function(n){return this===n},statics:{getDefaultValue:function(){return new System.Threading.CancellationTokenRegistration}}});wt={isNull:function(n){return!Bridge.isDefined(n,!0)},isEmpty:function(n){return n==null||n.length===0||Bridge.is(n,System.Collections.ICollection)?n.getCount()===0:!1},isNotEmptyOrWhitespace:function(n){return Bridge.isDefined(n,!0)&&!/^$|\s+/.test(n)},isNotNull:function(n){return Bridge.isDefined(n,!0)},isNotEmpty:function(n){return!Bridge.Validation.isEmpty(n)},email:function(n){return/^(")?(?:[^\."])(?:(?:[\.])?(?:[\w\-!#$%&'*+/=?^_`{|}~]))*\1@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/.test(n)},url:function(n){return/(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:\.\d{1,3}){3})(?!(?:\.\d{1,3}){2})(?!\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?$/.test(n)},alpha:function(n){return/^[a-zA-Z_]+$/.test(n)},alphaNum:function(n){return/^[a-zA-Z_]+$/.test(n)},creditCard:function(n,t){var r,u,i,f,e=!1;if(t==="Visa")r=/^4\d{3}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}$/;else if(t==="MasterCard")r=/^5[1-5]\d{2}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}$/;else if(t==="Discover")r=/^6011[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}$/;else if(t==="AmericanExpress")r=/^3[4,7]\d{13}$/;else if(t==="DinersClub")r=/^(3[0,6,8]\d{12})|(5[45]\d{14})$/;else{if(!n||n.length<13||n.length>19)return!1;r=/[^0-9 \-]+/;e=!0}if(!r.test(n))return!1;for(n=n.split(e?"-":/[- ]/).join(""),u=0,i=2-n.length%2;i<=n.length;i+=2)u+=parseInt(n.charAt(i-1));for(i=n.length%2+1;i<n.length;i+=2)f=parseInt(n.charAt(i-1))*2,u+=f<10?f:f-9;return u%10==0}};Bridge.Validation=wt;Bridge.define("System.Version",{inherits:function(){return[System.ICloneable,System.IComparable$1(System.Version),System.IEquatable$1(System.Version)]},statics:{separatorsArray:".",ZERO_CHAR_VALUE:48,appendPositiveNumber:function(n,t){var r=t.getLength(),i;do i=n%10,n=Bridge.Int.div(n,10)|0,t.insert(r,String.fromCharCode((System.Version.ZERO_CHAR_VALUE+i|0)&65535));while(n>0)},parse:function(n){if(n==null)throw new System.ArgumentNullException("input");var t={v:new System.Version.VersionResult};if(t.v.init("input",!0),!System.Version.tryParseVersion(n,t))throw t.v.getVersionParseException();return t.v.m_parsedVersion},tryParse:function(n,t){var i={v:new System.Version.VersionResult},r;return i.v.init("input",!1),r=System.Version.tryParseVersion(n,i),t.v=i.v.m_parsedVersion,r},tryParseVersion:function(n,t){var u={},f={},e={},o={},r,i;if(n==null)return t.v.setFailure(System.Version.ParseFailureKind.ArgumentNullException),!1;if(r=n.split(System.Version.separatorsArray),i=r.length,i<2||i>4)return t.v.setFailure(System.Version.ParseFailureKind.ArgumentException),!1;if(!System.Version.tryParseComponent(r[0],"version",t,u)||!System.Version.tryParseComponent(r[1],"version",t,f))return!1;if(i=i-2|0,i>0){if(!System.Version.tryParseComponent(r[2],"build",t,e))return!1;if(i=i-1|0,i>0)if(System.Version.tryParseComponent(r[3],"revision",t,o))t.v.m_parsedVersion=new System.Version.$ctor3(u.v,f.v,e.v,o.v);else return!1;else t.v.m_parsedVersion=new System.Version.$ctor2(u.v,f.v,e.v)}else t.v.m_parsedVersion=new System.Version.$ctor1(u.v,f.v);return!0},tryParseComponent:function(n,t,i,r){return System.Int32.tryParse(n,r)?r.v<0?(i.v.setFailure$1(System.Version.ParseFailureKind.ArgumentOutOfRangeException,t),!1):!0:(i.v.setFailure$1(System.Version.ParseFailureKind.FormatException,n),!1)},op_Equality:function(n,t){return Bridge.referenceEquals(n,null)?Bridge.referenceEquals(t,null):n.equalsT(t)},op_Inequality:function(n,t){return!System.Version.op_Equality(n,t)},op_LessThan:function(n,t){if(n==null)throw new System.ArgumentNullException("v1");return n.compareTo(t)<0},op_LessThanOrEqual:function(n,t){if(n==null)throw new System.ArgumentNullException("v1");return n.compareTo(t)<=0},op_GreaterThan:function(n,t){return System.Version.op_LessThan(t,n)},op_GreaterThanOrEqual:function(n,t){return System.Version.op_LessThanOrEqual(t,n)}},_Major:0,_Minor:0,_Build:-1,_Revision:-1,config:{alias:["clone","System$ICloneable$clone","compareTo","System$IComparable$1$System$Version$compareTo","equalsT","System$IEquatable$1$System$Version$equalsT"]},$ctor3:function(n,t,i,r){if(this.$initialize(),n<0)throw new System.ArgumentOutOfRangeException("major","Cannot be < 0");if(t<0)throw new System.ArgumentOutOfRangeException("minor","Cannot be < 0");if(i<0)throw new System.ArgumentOutOfRangeException("build","Cannot be < 0");if(r<0)throw new System.ArgumentOutOfRangeException("revision","Cannot be < 0");this._Major=n;this._Minor=t;this._Build=i;this._Revision=r},$ctor2:function(n,t,i){if(this.$initialize(),n<0)throw new System.ArgumentOutOfRangeException("major","Cannot be < 0");if(t<0)throw new System.ArgumentOutOfRangeException("minor","Cannot be < 0");if(i<0)throw new System.ArgumentOutOfRangeException("build","Cannot be < 0");this._Major=n;this._Minor=t;this._Build=i},$ctor1:function(n,t){if(this.$initialize(),n<0)throw new System.ArgumentOutOfRangeException("major","Cannot be < 0");if(t<0)throw new System.ArgumentOutOfRangeException("minor","Cannot be < 0");this._Major=n;this._Minor=t},$ctor4:function(n){this.$initialize();var t=System.Version.parse(n);this._Major=t.getMajor();this._Minor=t.getMinor();this._Build=t.getBuild();this._Revision=t.getRevision()},ctor:function(){this.$initialize();this._Major=0;this._Minor=0},getMajor:function(){return this._Major},getMinor:function(){return this._Minor},getBuild:function(){return this._Build},getRevision:function(){return this._Revision},getMajorRevision:function(){return Bridge.Int.sxs(this._Revision>>16&65535)},getMinorRevision:function(){return Bridge.Int.sxs(this._Revision&65535)},clone:function(){var n=new System.Version.ctor;return n._Major=this._Major,n._Minor=this._Minor,n._Build=this._Build,n._Revision=this._Revision,n},compareTo$1:function(n){if(n==null)return 1;var t=Bridge.as(n,System.Version);if(System.Version.op_Equality(t,null))throw new System.ArgumentException("version should be of System.Version type");return this._Major!==t._Major?this._Major>t._Major?1:-1:this._Minor!==t._Minor?this._Minor>t._Minor?1:-1:this._Build!==t._Build?this._Build>t._Build?1:-1:this._Revision!==t._Revision?this._Revision>t._Revision?1:-1:0},compareTo:function(n){return System.Version.op_Equality(n,null)?1:this._Major!==n._Major?this._Major>n._Major?1:-1:this._Minor!==n._Minor?this._Minor>n._Minor?1:-1:this._Build!==n._Build?this._Build>n._Build?1:-1:this._Revision!==n._Revision?this._Revision>n._Revision?1:-1:0},equals:function(n){return this.equalsT(Bridge.as(n,System.Version))},equalsT:function(n){return System.Version.op_Equality(n,null)?!1:this._Major!==n._Major||this._Minor!==n._Minor||this._Build!==n._Build||this._Revision!==n._Revision?!1:!0},getHashCode:function(){var n=0;return n=n|(this._Major&15)<<28,n=n|(this._Minor&255)<<20,n=n|(this._Build&255)<<12,n|this._Revision&4095},toString:function(){return this._Build===-1?this.toString$1(2):this._Revision===-1?this.toString$1(3):this.toString$1(4)},toString$1:function(n){var t;switch(n){case 0:return"";case 1:return this._Major.toString();case 2:return t=new System.Text.StringBuilder,System.Version.appendPositiveNumber(this._Major,t),t.append(String.fromCharCode(46)),System.Version.appendPositiveNumber(this._Minor,t),t.toString();default:if(this._Build===-1)throw new System.ArgumentException("Build should be > 0 if fieldCount > 2","fieldCount");if(n===3)return t=new System.Text.StringBuilder,System.Version.appendPositiveNumber(this._Major,t),t.append(String.fromCharCode(46)),System.Version.appendPositiveNumber(this._Minor,t),t.append(String.fromCharCode(46)),System.Version.appendPositiveNumber(this._Build,t),t.toString();if(this._Revision===-1)throw new System.ArgumentException("Revision should be > 0 if fieldCount > 3","fieldCount");if(n===4)return t=new System.Text.StringBuilder,System.Version.appendPositiveNumber(this._Major,t),t.append(String.fromCharCode(46)),System.Version.appendPositiveNumber(this._Minor,t),t.append(String.fromCharCode(46)),System.Version.appendPositiveNumber(this._Build,t),t.append(String.fromCharCode(46)),System.Version.appendPositiveNumber(this._Revision,t),t.toString();throw new System.ArgumentException("Should be < 5","fieldCount");}}});Bridge.define("System.Version.ParseFailureKind",{$kind:"enum",statics:{ArgumentNullException:0,ArgumentException:1,ArgumentOutOfRangeException:2,FormatException:3}});Bridge.define("System.Version.VersionResult",{$kind:"struct",statics:{getDefaultValue:function(){return new System.Version.VersionResult}},m_parsedVersion:null,m_failure:0,m_exceptionArgument:null,m_argumentName:null,m_canThrow:!1,ctor:function(){this.$initialize()},init:function(n,t){this.m_canThrow=t;this.m_argumentName=n},setFailure:function(n){this.setFailure$1(n,"")},setFailure$1:function(n,t){if(this.m_failure=n,this.m_exceptionArgument=t,this.m_canThrow)throw this.getVersionParseException();},getVersionParseException:function(){switch(this.m_failure){case System.Version.ParseFailureKind.ArgumentNullException:return new System.ArgumentNullException(this.m_argumentName);case System.Version.ParseFailureKind.ArgumentException:return new System.ArgumentException("VersionString");case System.Version.ParseFailureKind.ArgumentOutOfRangeException:return new System.ArgumentOutOfRangeException(this.m_exceptionArgument,"Cannot be < 0");case System.Version.ParseFailureKind.FormatException:try{System.Int32.parse(this.m_exceptionArgument)}catch(n){n=System.Exception.create(n);var t;if(Bridge.is(n,System.FormatException)||Bridge.is(n,System.OverflowException))return t=n;throw n;}return new System.FormatException("InvalidString");default:return new System.ArgumentException("VersionString")}},getHashCode:function(){return Bridge.addHash([5139482776,this.m_parsedVersion,this.m_failure,this.m_exceptionArgument,this.m_argumentName,this.m_canThrow])},equals:function(n){return Bridge.is(n,System.Version.VersionResult)?Bridge.equals(this.m_parsedVersion,n.m_parsedVersion)&&Bridge.equals(this.m_failure,n.m_failure)&&Bridge.equals(this.m_exceptionArgument,n.m_exceptionArgument)&&Bridge.equals(this.m_argumentName,n.m_argumentName)&&Bridge.equals(this.m_canThrow,n.m_canThrow):!1},$clone:function(n){var t=n||new System.Version.VersionResult;return t.m_parsedVersion=this.m_parsedVersion,t.m_failure=this.m_failure,t.m_exceptionArgument=this.m_exceptionArgument,t.m_argumentName=this.m_argumentName,t.m_canThrow=this.m_canThrow,t}});Bridge.define("System.Attribute",{statics:{getCustomAttributes:function(n,t){if(n==null)throw new System.ArgumentNullException("element");if(t==null)throw new System.ArgumentNullException("attributeType");var i=n.at||[];return t?i.filter(function(n){return Bridge.is(n,t)}):i},getCustomAttributes$1:function(n,t,i){if(n==null)throw new System.ArgumentNullException("element");if(t==null)throw new System.ArgumentNullException("attributeType");return n.getCustomAttributes(t||i)}}});Bridge.define("System.ComponentModel.INotifyPropertyChanged",{$kind:"interface"});Bridge.define("System.ComponentModel.PropertyChangedEventArgs",{ctor:function(n,t,i){this.$initialize();this.propertyName=n;this.newValue=t;this.oldValue=i}});t={};t.convert={typeCodes:{Empty:0,Object:1,DBNull:2,Boolean:3,Char:4,SByte:5,Byte:6,Int16:7,UInt16:8,Int32:9,UInt32:10,Int64:11,UInt64:12,Single:13,Double:14,Decimal:15,DateTime:16,String:18},toBoolean:function(n,i){var r,u;switch(typeof n){case"boolean":return n;case"number":return n!==0;case"string":if(r=n.toLowerCase().trim(),r==="true")return!0;if(r==="false")return!1;throw new System.FormatException("String was not recognized as a valid Boolean.");case"object":if(n==null)return!1;if(n instanceof System.Decimal)return!n.isZero();if(System.Int64.is64Bit(n))return n.ne(0)}return u=t.internal.suggestTypeCode(n),t.internal.throwInvalidCastEx(u,t.convert.typeCodes.Boolean),t.convert.convertToType(t.convert.typeCodes.Boolean,n,i||null)},toChar:function(n,i,r){var u=t.convert.typeCodes,f,e;if(n instanceof System.Decimal&&(n=n.toFloat()),(n instanceof System.Int64||n instanceof System.UInt64)&&(n=n.toNumber()),f=typeof n,r=r||t.internal.suggestTypeCode(n),r===u.String&&n==null&&(f="string"),r!==u.Object)switch(f){case"boolean":t.internal.throwInvalidCastEx(u.Boolean,u.Char);case"number":return e=t.internal.isFloatingType(r),(e||n%1!=0)&&t.internal.throwInvalidCastEx(r,u.Char),t.internal.validateNumberRange(n,u.Char,!0),n;case"string":if(n==null)throw new System.ArgumentNullException("value");if(n.length!==1)throw new System.FormatException("String must be exactly one character long.");return n.charCodeAt(0)}if(r===u.Object||f==="object"){if(n==null)return 0;Bridge.isDate(n)&&t.internal.throwInvalidCastEx(u.DateTime,u.Char)}return t.internal.throwInvalidCastEx(r,t.convert.typeCodes.Char),t.convert.convertToType(u.Char,n,i||null)},toSByte:function(n,i,r){return t.internal.toNumber(n,i||null,t.convert.typeCodes.SByte,r||null)},toByte:function(n,i){return t.internal.toNumber(n,i||null,t.convert.typeCodes.Byte)},toInt16:function(n,i){return t.internal.toNumber(n,i||null,t.convert.typeCodes.Int16)},toUInt16:function(n,i){return t.internal.toNumber(n,i||null,t.convert.typeCodes.UInt16)},toInt32:function(n,i){return t.internal.toNumber(n,i||null,t.convert.typeCodes.Int32)},toUInt32:function(n,i){return t.internal.toNumber(n,i||null,t.convert.typeCodes.UInt32)},toInt64:function(n,i){var r=t.internal.toNumber(n,i||null,t.convert.typeCodes.Int64);return new System.Int64(r)},toUInt64:function(n,i){var r=t.internal.toNumber(n,i||null,t.convert.typeCodes.UInt64);return new System.UInt64(r)},toSingle:function(n,i){return t.internal.toNumber(n,i||null,t.convert.typeCodes.Single)},toDouble:function(n,i){return t.internal.toNumber(n,i||null,t.convert.typeCodes.Double)},toDecimal:function(n,i){return n instanceof System.Decimal?n:new System.Decimal(t.internal.toNumber(n,i||null,t.convert.typeCodes.Decimal))},toDateTime:function(n,i){var r=t.convert.typeCodes,u,f;switch(typeof n){case"boolean":t.internal.throwInvalidCastEx(r.Boolean,r.DateTime);case"number":u=t.internal.suggestTypeCode(n);t.internal.throwInvalidCastEx(u,r.DateTime);case"string":return Bridge.Date.parse(n,i||null);case"object":if(n==null)return t.internal.getMinValue(r.DateTime);if(Bridge.isDate(n))return n;n instanceof System.Decimal&&t.internal.throwInvalidCastEx(r.Decimal,r.DateTime);n instanceof System.Int64&&t.internal.throwInvalidCastEx(r.Int64,r.DateTime);n instanceof System.UInt64&&t.internal.throwInvalidCastEx(r.UInt64,r.DateTime)}return f=t.internal.suggestTypeCode(n),t.internal.throwInvalidCastEx(f,t.convert.typeCodes.DateTime),t.convert.convertToType(r.DateTime,n,i||null)},toString:function(n,i,r){var u=t.convert.typeCodes,f=typeof n;switch(f){case"boolean":return n?"True":"False";case"number":return(r||null)===u.Char?String.fromCharCode(n):isNaN(n)?"NaN":(n%1!=0&&(n=parseFloat(n.toPrecision(15))),n.toString());case"string":return n;case"object":return n==null?"":Bridge.isDate(n)?Bridge.Date.format(n,null,i||null):n instanceof System.Decimal?n.isInteger()?n.toFixed(0,4):n.toPrecision(n.precision()):System.Int64.is64Bit(n)?n.toString():n.format?n.format(null,i||null):Bridge.getTypeName(n)}return t.convert.convertToType(t.convert.typeCodes.String,n,i||null)},toNumberInBase:function(n,i,r){var h,o,v,c,b,y,p,u,k,s,e,d;if(i!==2&&i!==8&&i!==10&&i!==16)throw new System.ArgumentException("Invalid Base.");if(h=t.convert.typeCodes,n==null)return r===h.Int64?System.Int64.Zero:r===h.UInt64?System.UInt64.Zero:0;if(n.length===0)throw new System.ArgumentOutOfRangeException("Index was out of range. Must be non-negative and less than the size of the collection.");n=n.toLowerCase();var l=t.internal.getMinValue(r),a=t.internal.getMaxValue(r),w=!1,f=0;if(n[f]==="-"){if(i!==10)throw new System.ArgumentException("String cannot contain a minus sign if the base is not 10.");if(l>=0)throw new System.OverflowException("The string was being parsed as an unsigned number and could not have a negative sign.");w=!0;++f}else n[f]==="+"&&++f;if(i===16&&n.length>=2&&n[f]==="0"&&n[f+1]==="x"&&(f+=2),i===2)o=t.internal.charsToCodes("01");else if(i===8)o=t.internal.charsToCodes("01234567");else if(i===10)o=t.internal.charsToCodes("0123456789");else if(i===16)o=t.internal.charsToCodes("0123456789abcdef");else throw new System.ArgumentException("Invalid Base.");for(v={},c=0;c<o.length;c++)b=o[c],v[b]=c;if(y=o[0],p=o[o.length-1],r===h.Int64||r===h.UInt64){for(e=f;e<n.length;e++)if(s=n[e].charCodeAt(0),!(s>=y&&s<=p))if(e===f)throw new System.FormatException("Could not find any recognizable digits.");else throw new System.FormatException("Additional non-parsable characters are at the end of the string.");if(d=r===h.Int64,u=d?new System.Int64(Bridge.$Long.fromString(n,!1,i)):new System.UInt64(Bridge.$Long.fromString(n,!0,i)),u.toString(i)!==n)throw new System.OverflowException("Value was either too large or too small.");return u}for(u=0,k=a-l+1,e=f;e<n.length;e++)if(s=n[e].charCodeAt(0),s>=y&&s<=p){if(u*=i,u+=v[s],u>t.internal.typeRanges.Int64_MaxValue)throw new System.OverflowException("Value was either too large or too small.");}else if(e===f)throw new System.FormatException("Could not find any recognizable digits.");else throw new System.FormatException("Additional non-parsable characters are at the end of the string.");if(w&&(u*=-1),u>a&&i!==10&&l<0&&(u=u-k),u<l||u>a)throw new System.OverflowException("Value was either too large or too small.");return u},toStringInBase:function(n,i,r){var w=t.convert.typeCodes,v,e,h,y,p,o,u,f,c;if(i!==2&&i!==8&&i!==10&&i!==16)throw new System.ArgumentException("Invalid Base.");var l=t.internal.getMinValue(r),a=t.internal.getMaxValue(r),s=System.Int64.is64Bit(n);if(s){if(n.lt(l)||n.gt(a))throw new System.OverflowException("Value was either too large or too small for an unsigned byte.");}else if(n<l||n>a)throw new System.OverflowException("Value was either too large or too small for an unsigned byte.");if(v=!1,s)return i===10?n.toString():n.value.toUnsigned().toString(i);if(n<0&&(i===10?(v=!0,n*=-1):n=a+1-l+n),i===2)e="01";else if(i===8)e="01234567";else if(i===10)e="0123456789";else if(i===16)e="0123456789abcdef";else throw new System.ArgumentException("Invalid Base.");for(h={},y=e.split(""),o=0;o<y.length;o++)p=y[o],h[o]=p;if(u="",n===0||s&&n.eq(0))u="0";else if(s)while(n.gt(0))f=n.mod(i),n=n.sub(f).div(i),c=h[f.toNumber()],u+=c;else while(n>0)f=n%i,n=(n-f)/i,c=h[f],u+=c;return v&&(u+="-"),u.split("").reverse().join("")},toBase64String:function(n,i,r,u){var f;if(n==null)throw new System.ArgumentNullException("inArray");if(i=i||0,r=r!=null?r:n.length,u=u||0,r<0)throw new System.ArgumentOutOfRangeException("length","Index was out of range. Must be non-negative and less than the size of the collection.");if(i<0)throw new System.ArgumentOutOfRangeException("offset","Value must be positive.");if(u<0||u>1)throw new System.ArgumentException("Illegal enum value.");if(f=n.length,i>f-r)throw new System.ArgumentOutOfRangeException("offset","Offset and length must refer to a position in the string.");if(f===0)return"";var o=u===1,s=t.internal.toBase64_CalculateAndValidateOutputLength(r,o),e=[];return e.length=s,t.internal.convertToBase64Array(e,n,i,r,o),e.join("")},toBase64CharArray:function(n,i,r,u,f,e){var o,s,c;if(n==null)throw new System.ArgumentNullException("inArray");if(u==null)throw new System.ArgumentNullException("outArray");if(r<0)throw new System.ArgumentOutOfRangeException("length","Index was out of range. Must be non-negative and less than the size of the collection.");if(i<0)throw new System.ArgumentOutOfRangeException("offsetIn","Value must be positive.");if(f<0)throw new System.ArgumentOutOfRangeException("offsetOut","Value must be positive.");if(e=e||0,e<0||e>1)throw new System.ArgumentException("Illegal enum value.");if(o=n.length,i>o-r)throw new System.ArgumentOutOfRangeException("offsetIn","Offset and length must refer to a position in the string.");if(o===0)return 0;var h=e===1,l=u.length,a=t.internal.toBase64_CalculateAndValidateOutputLength(r,h);if(f>l-a)throw new System.ArgumentOutOfRangeException("offsetOut","Either offset did not refer to a position in the string, or there is an insufficient length of destination character array.");return s=[],c=t.internal.convertToBase64Array(s,n,i,r,h),t.internal.charsToCodes(s,u,f),c},fromBase64String:function(n){if(n==null)throw new System.ArgumentNullException("s");var i=n.split("");return t.internal.fromBase64CharPtr(i,0,i.length)},fromBase64CharArray:function(n,i,r){if(n==null)throw new System.ArgumentNullException("inArray");if(r<0)throw new System.ArgumentOutOfRangeException("length","Index was out of range. Must be non-negative and less than the size of the collection.");if(i<0)throw new System.ArgumentOutOfRangeException("offset","Value must be positive.");if(i>n.length-r)throw new System.ArgumentOutOfRangeException("offset","Offset and length must refer to a position in the string.");var u=t.internal.codesToChars(n);return t.internal.fromBase64CharPtr(u,i,r)},convertToType:function(){throw new System.NotSupportedException("IConvertible interface is not supported.");}};t.internal={base64Table:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","+","/","="],typeRanges:{Char_MinValue:0,Char_MaxValue:65535,Byte_MinValue:0,Byte_MaxValue:255,SByte_MinValue:-128,SByte_MaxValue:127,Int16_MinValue:-32768,Int16_MaxValue:32767,UInt16_MinValue:0,UInt16_MaxValue:65535,Int32_MinValue:-2147483648,Int32_MaxValue:2147483647,UInt32_MinValue:0,UInt32_MaxValue:4294967295,Int64_MinValue:System.Int64.MinValue,Int64_MaxValue:System.Int64.MaxValue,UInt64_MinValue:System.UInt64.MinValue,UInt64_MaxValue:System.UInt64.MaxValue,Single_MinValue:-340282347e30,Single_MaxValue:340282347e30,Double_MinValue:-17976931348623157e292,Double_MaxValue:17976931348623157e292,Decimal_MinValue:System.Decimal.MinValue,Decimal_MaxValue:System.Decimal.MaxValue},base64LineBreakPosition:76,getTypeCodeName:function(n){var r=t.convert.typeCodes,u,i,e,f;if(t.internal.typeCodeNames==null){u={};for(i in r)r.hasOwnProperty(i)&&(e=r[i],u[e]=i);t.internal.typeCodeNames=u}if(f=t.internal.typeCodeNames[n],f==null)throw System.ArgumentOutOfRangeException("typeCode","The specified typeCode is undefined.");return f},suggestTypeCode:function(n){var i=t.convert.typeCodes,r=typeof n;switch(r){case"boolean":return i.Boolean;case"number":return n%1!=0?i.Double:i.Int32;case"string":return i.String;case"object":if(Bridge.isDate(n))return i.DateTime;if(n!=null)return i.Object}return null},getMinValue:function(n){var i=t.convert.typeCodes,r;switch(n){case i.Char:return t.internal.typeRanges.Char_MinValue;case i.SByte:return t.internal.typeRanges.SByte_MinValue;case i.Byte:return t.internal.typeRanges.Byte_MinValue;case i.Int16:return t.internal.typeRanges.Int16_MinValue;case i.UInt16:return t.internal.typeRanges.UInt16_MinValue;case i.Int32:return t.internal.typeRanges.Int32_MinValue;case i.UInt32:return t.internal.typeRanges.UInt32_MinValue;case i.Int64:return t.internal.typeRanges.Int64_MinValue;case i.UInt64:return t.internal.typeRanges.UInt64_MinValue;case i.Single:return t.internal.typeRanges.Single_MinValue;case i.Double:return t.internal.typeRanges.Double_MinValue;case i.Decimal:return t.internal.typeRanges.Decimal_MinValue;case i.DateTime:return r=new Date(0),r.setFullYear(1),r;default:return null}},getMaxValue:function(n){var i=t.convert.typeCodes;switch(n){case i.Char:return t.internal.typeRanges.Char_MaxValue;case i.SByte:return t.internal.typeRanges.SByte_MaxValue;case i.Byte:return t.internal.typeRanges.Byte_MaxValue;case i.Int16:return t.internal.typeRanges.Int16_MaxValue;case i.UInt16:return t.internal.typeRanges.UInt16_MaxValue;case i.Int32:return t.internal.typeRanges.Int32_MaxValue;case i.UInt32:return t.internal.typeRanges.UInt32_MaxValue;case i.Int64:return t.internal.typeRanges.Int64_MaxValue;case i.UInt64:return t.internal.typeRanges.UInt64_MaxValue;case i.Single:return t.internal.typeRanges.Single_MaxValue;case i.Double:return t.internal.typeRanges.Double_MaxValue;case i.Decimal:return t.internal.typeRanges.Decimal_MaxValue;default:throw new System.ArgumentOutOfRangeException("typeCode","The specified typeCode is undefined.");}},isFloatingType:function(n){var i=t.convert.typeCodes;return n===i.Single||n===i.Double||n===i.Decimal},toNumber:function(n,i,r,u){var f=t.convert.typeCodes,e=typeof n,o=t.internal.isFloatingType(r),h,c,s;u===f.String&&(e="string");(System.Int64.is64Bit(n)||n instanceof System.Decimal)&&(e="number");switch(e){case"boolean":return n?1:0;case"number":return r===f.Decimal?(t.internal.validateNumberRange(n,r,!0),new System.Decimal(n,i)):r===f.Int64?(t.internal.validateNumberRange(n,r,!0),new System.Int64(n)):r===f.UInt64?(t.internal.validateNumberRange(n,r,!0),new System.UInt64(n)):(System.Int64.is64Bit(n)?n=n.toNumber():n instanceof System.Decimal&&(n=n.toFloat()),o||n%1==0||(n=t.internal.roundToInt(n,r)),o&&(h=t.internal.getMinValue(r),c=t.internal.getMaxValue(r),n>c?n=Infinity:n<h&&(n=-Infinity)),t.internal.validateNumberRange(n,r,!1),n);case"string":if(n==null){if(i!=null)throw new System.ArgumentNullException("String","Value cannot be null.");return 0}if(o)if(r===f.Decimal){if(!/^[+-]?(\d+|\d+.|\d*\.\d+)$/.test(n)&&!/^[+-]?[0-9]+$/.test(n))throw new System.FormatException("Input string was not in a correct format.");n=System.Decimal(n,i)}else{if(!/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/.test(n))throw new System.FormatException("Input string was not in a correct format.");n=parseFloat(n)}else{if(!/^[+-]?[0-9]+$/.test(n))throw new System.FormatException("Input string was not in a correct format.");s=n;r===f.Int64?(n=new System.Int64(n),s!==n.toString()&&this.throwOverflow(t.internal.getTypeCodeName(r))):r===f.UInt64?(n=new System.UInt64(n),s!==n.toString()&&this.throwOverflow(t.internal.getTypeCodeName(r))):n=parseInt(n,10)}if(isNaN(n))throw new System.FormatException("Input string was not in a correct format.");return t.internal.validateNumberRange(n,r,!0),n;case"object":if(n==null)return 0;Bridge.isDate(n)&&t.internal.throwInvalidCastEx(t.convert.typeCodes.DateTime,r)}return u=u||t.internal.suggestTypeCode(n),t.internal.throwInvalidCastEx(u,r),t.convert.convertToType(r,n,i)},validateNumberRange:function(n,i,r){var u=t.convert.typeCodes,e=t.internal.getMinValue(i),o=t.internal.getMaxValue(i),f=t.internal.getTypeCodeName(i);(i!==u.Single&&i!==u.Double||r||n!==Infinity&&n!==-Infinity)&&(i===u.Decimal||i===u.Int64||i===u.UInt64?i===u.Decimal?(System.Int64.is64Bit(n)||(e.gt(n)||o.lt(n))&&this.throwOverflow(f),n=new System.Decimal(n)):i===u.Int64?(n instanceof System.UInt64?n.gt(System.Int64.MaxValue)&&this.throwOverflow(f):n instanceof System.Decimal?(n.gt(new System.Decimal(o))||n.lt(new System.Decimal(e)))&&this.throwOverflow(f):n instanceof System.Int64||(e.toNumber()>n||o.toNumber()<n)&&this.throwOverflow(f),n=new System.Int64(n)):i===u.UInt64&&(n instanceof System.Int64?n.isNegative()&&this.throwOverflow(f):n instanceof System.Decimal?(n.gt(new System.Decimal(o))||n.lt(new System.Decimal(e)))&&this.throwOverflow(f):n instanceof System.UInt64||(e.toNumber()>n||o.toNumber()<n)&&this.throwOverflow(f),n=new System.UInt64(n)):(n<e||n>o)&&this.throwOverflow(f))},throwOverflow:function(n){throw new System.OverflowException("Value was either too large or too small for '"+n+"'.");},roundToInt:function(n,i){var r,f;if(n%1==0)return n;r=n>=0?Math.floor(n):-1*Math.floor(-n);var u=n-r,e=t.internal.getMinValue(i),o=t.internal.getMaxValue(i);if(n>=0){if(n<o+.5)return(u>.5||u===.5&&(r&1)!=0)&&++r,r}else if(n>=e-.5)return(u<-.5||u===-.5&&(r&1)!=0)&&--r,r;f=t.internal.getTypeCodeName(i);throw new System.OverflowException("Value was either too large or too small for an '"+f+"'.");},toBase64_CalculateAndValidateOutputLength:function(n,i){var f=t.internal.base64LineBreakPosition,r=~~(n/3)*4,u;if(r+=n%3!=0?4:0,r===0)return 0;if(i&&(u=~~(r/f),r%f==0&&--u,r+=u*2),r>2147483647)throw new System.OutOfMemoryException;return r},convertToBase64Array:function(n,i,r,u,f){for(var s=t.internal.base64Table,a=t.internal.base64LineBreakPosition,c=u%3,l=r+(u-c),h=0,e=0,o=r;o<l;o+=3)f&&(h===a&&(n[e++]="\r",n[e++]="\n",h=0),h+=4),n[e]=s[(i[o]&252)>>2],n[e+1]=s[(i[o]&3)<<4|(i[o+1]&240)>>4],n[e+2]=s[(i[o+1]&15)<<2|(i[o+2]&192)>>6],n[e+3]=s[i[o+2]&63],e+=4;o=l;f&&c!==0&&h===t.internal.base64LineBreakPosition&&(n[e++]="\r",n[e++]="\n");switch(c){case 2:n[e]=s[(i[o]&252)>>2];n[e+1]=s[(i[o]&3)<<4|(i[o+1]&240)>>4];n[e+2]=s[(i[o+1]&15)<<2];n[e+3]=s[64];e+=4;break;case 1:n[e]=s[(i[o]&252)>>2];n[e+1]=s[(i[o]&3)<<4];n[e+2]=s[64];n[e+3]=s[64];e+=4}return e},fromBase64CharPtr:function(n,i,r){var u,f,e;if(r<0)throw new System.ArgumentOutOfRangeException("inputLength","Index was out of range. Must be non-negative and less than the size of the collection.");if(i<0)throw new System.ArgumentOutOfRangeException("offset","Value must be positive.");while(r>0){if(u=n[i+r-1],u!==" "&&u!=="\n"&&u!=="\r"&&u!=="\t")break;r--}if(f=t.internal.fromBase64_ComputeResultLength(n,i,r),0>f)throw new System.InvalidOperationException("Contract voilation: 0 <= resultLength.");return e=[],e.length=f,t.internal.fromBase64_Decode(n,i,r,e,0,f),e},fromBase64_Decode:function(n,t,i,r,u,f){for(var k=u,a="A".charCodeAt(0),v="a".charCodeAt(0),y="0".charCodeAt(0),p="=".charCodeAt(0),d="+".charCodeAt(0),g="/".charCodeAt(0),nt=" ".charCodeAt(0),tt="\t".charCodeAt(0),it="\n".charCodeAt(0),rt="\r".charCodeAt(0),w="Z".charCodeAt(0)-"A".charCodeAt(0),ut="9".charCodeAt(0)-"0".charCodeAt(0),h=t+i,l=u+f,o,e=255,b=!1,c=!1,s;;){if(t>=h){b=!0;break}if(o=n[t].charCodeAt(0),t++,o-a>>>0<=w)o-=a;else if(o-v>>>0<=w)o-=v-26;else if(o-y>>>0<=ut)o-=y-52;else switch(o){case d:o=62;break;case g:o=63;break;case rt:case it:case nt:case tt:continue;case p:c=!0;break;default:throw new System.FormatException("The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.");}if(c)break;if(e=e<<6|o,(e&2147483648)!=0){if(l-u<3)return-1;r[u]=255&e>>16;r[u+1]=255&e>>8;r[u+2]=255&e;u+=3;e=255}}if(!b&&!c)throw new System.InvalidOperationException("Contract violation: should never get here.");if(c){if(o!==p)throw new System.InvalidOperationException("Contract violation: currCode == intEq.");if(t===h){if(e<<=6,(e&2147483648)==0)throw new System.FormatException("Invalid length for a Base-64 char array or string.");if(l-u<2)return-1;r[u]=255&e>>16;r[u+1]=255&e>>8;u+=2;e=255}else{while(t<h-1){if(s=n[t],s!==" "&&s!=="\n"&&s!=="\r"&&s!=="\t")break;t++}if(t===h-1&&n[t]==="="){if(e<<=12,(e&2147483648)==0)throw new System.FormatException("Invalid length for a Base-64 char array or string.");if(l-u<1)return-1;r[u]=255&e>>16;u++;e=255}else throw new System.FormatException("The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.");}}if(e!==255)throw new System.FormatException("Invalid length for a Base-64 char array or string.");return u-k},fromBase64_ComputeResultLength:function(n,t,i){var f;if(i<0)throw new System.ArgumentOutOfRangeException("inputLength","Index was out of range. Must be non-negative and less than the size of the collection.");for(var e=t+i,u=i,r=0;t<e;)f=n[t],t++,f<=" "?u--:f==="="&&(u--,r++);if(0>u)throw new System.InvalidOperationException("Contract violation: 0 <= usefulInputLength.");if(0>r)throw new System.InvalidOperationException("Contract violation: 0 <= padding.");if(r!==0)if(r===1)r=2;else if(r===2)r=1;else throw new System.FormatException("The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.");return~~(u/4)*3+r},charsToCodes:function(n,t,i){if(n==null)return null;i=i||0;t==null&&(t=[],t.length=n.length);for(var r=0;r<n.length;r++)t[r+i]=n[r].charCodeAt(0);return t},codesToChars:function(n,t){var i,r;if(n==null)return null;for(t=t||[],i=0;i<n.length;i++)r=n[i],t[i]=String.fromCharCode(r);return t},throwInvalidCastEx:function(n,i){var r=t.internal.getTypeCodeName(n),u=t.internal.getTypeCodeName(i);throw new System.InvalidCastException("Invalid cast from '"+r+"' to '"+u+"'.");}};System.Convert=t.convert;Bridge.define("System.Net.WebSockets.ClientWebSocket",{inherits:[System.IDisposable],ctor:function(){this.$initialize();this.messageBuffer=[];this.state="none";this.options=new System.Net.WebSockets.ClientWebSocketOptions;this.disposed=!1;this.closeStatus=null;this.closeStatusDescription=null},getCloseStatus:function(){return this.closeStatus},getState:function(){return this.state},getCloseStatusDescription:function(){return this.closeStatusDescription},getSubProtocol:function(){return this.socket?this.socket.protocol:null},connectAsync:function(n){if(this.state!=="none")throw new System.InvalidOperationException("Socket is not in initial state");this.options.setToReadOnly();this.state="connecting";var i=new System.Threading.Tasks.TaskCompletionSource,t=this;try{this.socket=new WebSocket(n.getAbsoluteUri(),this.options.requestedSubProtocols);this.socket.binaryType="arraybuffer";this.socket.onopen=function(){t.state="open";i.setResult(null)};this.socket.onmessage=function(n){var u=n.data,r={},i,f;if(r.bytes=[],typeof u=="string"){for(i=0;i<u.length;++i)r.bytes.push(u.charCodeAt(i));r.messageType="text";t.messageBuffer.push(r);return}if(u instanceof ArrayBuffer){for(f=new Uint8Array(u),i=0;i<f.length;i++)r.bytes.push(f[i]);r.messageType="binary";t.messageBuffer.push(r);return}throw new System.ArgumentException("Invalid message type.");};this.socket.onclose=function(n){t.state="closed";t.closeStatus=n.code;t.closeStatusDescription=n.reason}}catch(r){i.setException(System.Exception.create(r))}return i.task},sendAsync:function(n,t){var u,i,f,e,r;this.throwIfNotConnected();u=new System.Threading.Tasks.TaskCompletionSource;try{i=n.getArray();switch(t){case"binary":for(f=new ArrayBuffer(i.length),e=new Int8Array(f),r=0;r<i.length;r++)e[r]=i[r];break;case"text":f=String.fromCharCode.apply(null,i)}t==="close"?this.socket.close():this.socket.send(f);u.setResult(null)}catch(o){u.setException(System.Exception.create(o))}return u.task},receiveAsync:function(n,t){this.throwIfNotConnected();var u,i=new System.Threading.Tasks.TaskCompletionSource,r=this,f=Bridge.fn.bind(this,function(){var e,o,s,c,h;try{if(t.getIsCancellationRequested()){i.setException(new System.Threading.Tasks.TaskCanceledException("Receive has been cancelled.",i.task));return}if(r.messageBuffer.length===0){u=System.Threading.Tasks.Task.delay(0);u.continueWith(f);return}for(e=r.messageBuffer[0],o=n.getArray(),e.bytes.length<=o.length?(r.messageBuffer.shift(),s=e.bytes,c=!0):(s=e.bytes.slice(0,o.length),e.bytes=e.bytes.slice(o.length,e.bytes.length),c=!1),h=0;h<s.length;h++)o[h]=s[h];i.setResult(new System.Net.WebSockets.WebSocketReceiveResult(s.length,e.messageType,c))}catch(l){i.setException(System.Exception.create(l))}},arguments);return f(),i.task},closeAsync:function(n,t,i){if(this.throwIfNotConnected(),this.state!=="open")throw new System.InvalidOperationException("Socket is not in connected state");var r=new System.Threading.Tasks.TaskCompletionSource,e=this,u,f=function(){if(e.state==="closed"){r.setResult(null);return}if(i.getIsCancellationRequested()){r.setException(new System.Threading.Tasks.TaskCanceledException("Closing has been cancelled.",r.task));return}u=System.Threading.Tasks.Task.delay(0);u.continueWith(f)};try{this.state="closesent";this.socket.close(n,t)}catch(o){r.setException(System.Exception.create(o))}return f(),r.task},closeOutputAsync:function(n,t){if(this.throwIfNotConnected(),this.state!=="open")throw new System.InvalidOperationException("Socket is not in connected state");var i=new System.Threading.Tasks.TaskCompletionSource;try{this.state="closesent";this.socket.close(n,t);i.setResult(null)}catch(r){i.setException(System.Exception.create(r))}return i.task},abort:function(){this.dispose()},dispose:function(){this.disposed||(this.disposed=!0,this.messageBuffer=[],state==="open"&&(this.state="closesent",this.socket.close()))},throwIfNotConnected:function(){if(this.disposed)throw new System.InvalidOperationException("Socket is disposed.");if(this.socket.readyState!==1)throw new System.InvalidOperationException("Socket is not connected.");}});Bridge.define("System.Net.WebSockets.ClientWebSocketOptions",{ctor:function(){this.$initialize();this.isReadOnly=!1;this.requestedSubProtocols=[]},setToReadOnly:function(){if(this.isReadOnly)throw new System.InvalidOperationException("Options are already readonly.");this.isReadOnly=!0},addSubProtocol:function(n){if(this.isReadOnly)throw new System.InvalidOperationException("Socket already started.");if(this.requestedSubProtocols.indexOf(n)>-1)throw new System.ArgumentException("Socket cannot have duplicate sub-protocols.","subProtocol");this.requestedSubProtocols.push(n)}});Bridge.define("System.Net.WebSockets.WebSocketReceiveResult",{ctor:function(n,t,i,r,u){this.$initialize();this.count=n;this.messageType=t;this.endOfMessage=i;this.closeStatus=r;this.closeStatusDescription=u},getCount:function(){return this.count},getMessageType:function(){return this.messageType},getEndOfMessage:function(){return this.endOfMessage},getCloseStatus:function(){return this.closeStatus},getCloseStatusDescription:function(){return this.closeStatusDescription}});Bridge.define("System.Uri",{ctor:function(n){this.$initialize();this.absoluteUri=n},getAbsoluteUri:function(){return this.absoluteUri}}),function(n,t){var f={Identity:function(n){return n},True:function(){return!0},Blank:function(){}},o={Boolean:"boolean",Number:"number",String:"string",Object:"object",Undefined:typeof t,Function:typeof function(){}},w={"":f.Identity},r={createLambda:function(n){var t,l,i,a,u,e,r,s,h,v,c;if(n==null)return f.Identity;if(typeof n===o.String){if(t=w[n],t!=null)return t;if(n.indexOf("=>")===-1){for(l=new RegExp("[$]+","g"),i=0;(a=l.exec(n))!=null;)u=a[0].length,u>i&&(i=u);for(e=[],r=1;r<=i;r++){for(s="",h=0;h<r;h++)s+="$";e.push(s)}return v=Array.prototype.join.call(e,","),t=new Function(v,"return "+n),w[n]=t,t}return c=n.match(/^[(\s]*([^()]*?)[)\s]*=>(.*)/),t=new Function(c[1],"return "+c[2]),w[n]=t,t}return n},isIEnumerable:function(n){if(typeof Enumerator!==o.Undefined)try{return new Enumerator(n),!0}catch(t){}return!1},defineProperty:Object.defineProperties!=null?function(n,t,i){Object.defineProperty(n,t,{enumerable:!1,configurable:!0,writable:!0,value:i})}:function(n,t,i){n[t]=i},compare:function(n,t){return n===t?0:n>t?1:-1},dispose:function(n){n!=null&&n.dispose()}},l={Before:0,Running:1,After:2},u=function(n,t,i){var u=new b,r=l.Before;this.getCurrent=u.getCurrent;this.reset=function(){throw new Error("Reset is not supported");};this.moveNext=function(){try{switch(r){case l.Before:r=l.Running;n();case l.Running:return t.apply(u)?!0:(this.dispose(),!1);case l.After:return!1}}catch(i){this.dispose();throw i;}};this.dispose=function(){if(r==l.Running)try{i()}finally{r=l.After}};this.getCurrent$1=this.getCurrent;this.System$Collections$IEnumerator$getCurrent=this.getCurrent;this.System$Collections$IEnumerator$moveNext=this.moveNext;this.System$Collections$IEnumerator$reset=this.reset},b,i,k,s,a,y,e,h,c,p,v;u.$$inherits=[];Bridge.Class.addExtend(u,[System.IDisposable,System.Collections.IEnumerator]);b=function(){var n=null;this.getCurrent=function(){return n};this.yieldReturn=function(t){return n=t,!0};this.yieldBreak=function(){return!1}};i=function(n){this.getEnumerator=n};i.$$inherits=[];Bridge.Class.addExtend(i,[System.Collections.IEnumerable]);i.Utils={};i.Utils.createLambda=function(n){return r.createLambda(n)};i.Utils.createEnumerable=function(n){return new i(n)};i.Utils.createEnumerator=function(n,t,i){return new u(n,t,i)};i.Utils.extendTo=function(n){var u=n.prototype,o,t,f;n===Array?(o=e.prototype,r.defineProperty(u,"getSource",function(){return this})):(o=i.prototype,r.defineProperty(u,"getEnumerator",function(){return i.from(this).getEnumerator()}));for(t in o)(f=o[t],u[t]!=f)&&(u[t]==null||(t=t+"ByLinq",u[t]!=f))&&f instanceof Function&&r.defineProperty(u,t,f)};i.choice=function(){var n=arguments;return new i(function(){return new u(function(){n=n[0]instanceof Array?n[0]:n[0].getEnumerator!=null?n[0].toArray():n},function(){return this.yieldReturn(n[Math.floor(Math.random()*n.length)])},f.Blank)})};i.cycle=function(){var n=arguments;return new i(function(){var t=0;return new u(function(){n=n[0]instanceof Array?n[0]:n[0].getEnumerator!=null?n[0].toArray():n},function(){return t>=n.length&&(t=0),this.yieldReturn(n[t++])},f.Blank)})};k=new i(function(){return new u(f.Blank,function(){return!1},f.Blank)});i.empty=function(){return k};i.from=function(n){if(n==null)return i.empty();if(n instanceof i)return n;if(typeof n==o.Number||typeof n==o.Boolean)return i.repeat(n,1);if(typeof n==o.String)return new i(function(){var t=0;return new u(f.Blank,function(){return t<n.length?this.yieldReturn(n.charCodeAt(t++)):!1},f.Blank)});var t=Bridge.as(n,System.Collections.IEnumerable);if(t)return new i(function(){var n;return new u(function(){n=Bridge.getEnumerator(t)},function(){var t=n.moveNext();return t?this.yieldReturn(n.getCurrent()):!1},function(){var t=Bridge.as(n,System.IDisposable);t&&t.dispose()})});if(typeof n!=o.Function){if(typeof n.length==o.Number)return new e(n);if(!(n instanceof Object)&&r.isIEnumerable(n))return new i(function(){var i=!0,t;return new u(function(){t=new Enumerator(n)},function(){return i?i=!1:t.moveNext(),t.atEnd()?!1:this.yieldReturn(t.item())},f.Blank)});if(typeof Windows===o.Object&&typeof n.first===o.Function)return new i(function(){var i=!0,t;return new u(function(){t=n.first()},function(){return i?i=!1:t.moveNext(),t.hasCurrent?this.yieldReturn(t.current):this.yieldBreak()},f.Blank)})}return new i(function(){var t=[],i=0;return new u(function(){var i,r;for(i in n)r=n[i],r instanceof Function||!Object.prototype.hasOwnProperty.call(n,i)||t.push({key:i,value:r})},function(){return i<t.length?this.yieldReturn(t[i++]):!1},f.Blank)})};i.make=function(n){return i.repeat(n,1)};i.matches=function(n,t,r){return r==null&&(r=""),t instanceof RegExp&&(r+=t.ignoreCase?"i":"",r+=t.multiline?"m":"",t=t.source),r.indexOf("g")===-1&&(r+="g"),new i(function(){var i;return new u(function(){i=new RegExp(t,r)},function(){var t=i.exec(n);return t?this.yieldReturn(t):!1},f.Blank)})};i.range=function(n,t,r){return r==null&&(r=1),new i(function(){var i,e=0;return new u(function(){i=n-r},function(){return e++<t?this.yieldReturn(i+=r):this.yieldBreak()},f.Blank)})};i.rangeDown=function(n,t,r){return r==null&&(r=1),new i(function(){var i,e=0;return new u(function(){i=n+r},function(){return e++<t?this.yieldReturn(i-=r):this.yieldBreak()},f.Blank)})};i.rangeTo=function(n,t,r){return r==null&&(r=1),n<t?new i(function(){var i;return new u(function(){i=n-r},function(){var n=i+=r;return n<=t?this.yieldReturn(n):this.yieldBreak()},f.Blank)}):new i(function(){var i;return new u(function(){i=n+r},function(){var n=i-=r;return n>=t?this.yieldReturn(n):this.yieldBreak()},f.Blank)})};i.repeat=function(n,t){return t!=null?i.repeat(n).take(t):new i(function(){return new u(f.Blank,function(){return this.yieldReturn(n)},f.Blank)})};i.repeatWithFinalize=function(n,t){return n=r.createLambda(n),t=r.createLambda(t),new i(function(){var i;return new u(function(){i=n()},function(){return this.yieldReturn(i)},function(){i!=null&&(t(i),i=null)})})};i.generate=function(n,t){return t!=null?i.generate(n).take(t):(n=r.createLambda(n),new i(function(){return new u(f.Blank,function(){return this.yieldReturn(n())},f.Blank)}))};i.toInfinity=function(n,t){return n==null&&(n=0),t==null&&(t=1),new i(function(){var i;return new u(function(){i=n-t},function(){return this.yieldReturn(i+=t)},f.Blank)})};i.toNegativeInfinity=function(n,t){return n==null&&(n=0),t==null&&(t=1),new i(function(){var i;return new u(function(){i=n+t},function(){return this.yieldReturn(i-=t)},f.Blank)})};i.unfold=function(n,t){return t=r.createLambda(t),new i(function(){var r=!0,i;return new u(f.Blank,function(){return r?(r=!1,i=n,this.yieldReturn(i)):(i=t(i),this.yieldReturn(i))},f.Blank)})};i.defer=function(n){return new i(function(){var t;return new u(function(){t=i.from(n()).getEnumerator()},function(){return t.moveNext()?this.yieldReturn(t.getCurrent()):this.yieldBreak()},function(){r.dispose(t)})})};i.prototype.traverseBreadthFirst=function(n,t){var f=this;return n=r.createLambda(n),t=r.createLambda(t),new i(function(){var e,s=0,o=[];return new u(function(){e=f.getEnumerator()},function(){for(;;){if(e.moveNext())return o.push(e.getCurrent()),this.yieldReturn(t(e.getCurrent(),s));var u=i.from(o).selectMany(function(t){return n(t)});if(u.any())s++,o=[],r.dispose(e),e=u.getEnumerator();else return!1}},function(){r.dispose(e)})})};i.prototype.traverseDepthFirst=function(n,t){var f=this;return n=r.createLambda(n),t=r.createLambda(t),new i(function(){var o=[],e;return new u(function(){e=f.getEnumerator()},function(){for(;;){if(e.moveNext()){var u=t(e.getCurrent(),o.length);return o.push(e),e=i.from(n(e.getCurrent())).getEnumerator(),this.yieldReturn(u)}if(o.length<=0)return!1;r.dispose(e);e=o.pop()}},function(){try{r.dispose(e)}finally{i.from(o).forEach(function(n){n.dispose()})}})})};i.prototype.flatten=function(){var n=this;return new i(function(){var e,t=null;return new u(function(){e=n.getEnumerator()},function(){for(;;){if(t!=null){if(t.moveNext())return this.yieldReturn(t.getCurrent());t=null}if(e.moveNext())if(e.getCurrent()instanceof Array){r.dispose(t);t=i.from(e.getCurrent()).selectMany(f.Identity).flatten().getEnumerator();continue}else return this.yieldReturn(e.getCurrent());return!1}},function(){try{r.dispose(e)}finally{r.dispose(t)}})})};i.prototype.pairwise=function(n){var t=this;return n=r.createLambda(n),new i(function(){var i;return new u(function(){i=t.getEnumerator();i.moveNext()},function(){var t=i.getCurrent();return i.moveNext()?this.yieldReturn(n(t,i.getCurrent())):!1},function(){r.dispose(i)})})};i.prototype.scan=function(n,t){var f,e;return t==null?(t=r.createLambda(n),f=!1):(t=r.createLambda(t),f=!0),e=this,new i(function(){var i,o,s=!0;return new u(function(){i=e.getEnumerator()},function(){if(s){if(s=!1,f)return this.yieldReturn(o=n);if(i.moveNext())return this.yieldReturn(o=i.getCurrent())}return i.moveNext()?this.yieldReturn(o=t(o,i.getCurrent())):!1},function(){r.dispose(i)})})};i.prototype.select=function(n){if(n=r.createLambda(n),n.length<=1)return new c(this,null,n);var t=this;return new i(function(){var i,f=0;return new u(function(){i=t.getEnumerator()},function(){return i.moveNext()?this.yieldReturn(n(i.getCurrent(),f++)):!1},function(){r.dispose(i)})})};i.prototype.selectMany=function(n,f){var e=this;return n=r.createLambda(n),f==null&&(f=function(n,t){return t}),f=r.createLambda(f),new i(function(){var s,o=t,h=0;return new u(function(){s=e.getEnumerator()},function(){if(o===t&&!s.moveNext())return!1;do{if(o==null){var u=n(s.getCurrent(),h++);o=i.from(u).getEnumerator()}if(o.moveNext())return this.yieldReturn(f(s.getCurrent(),o.getCurrent()));r.dispose(o);o=null}while(s.moveNext());return!1},function(){try{r.dispose(s)}finally{r.dispose(o)}})})};i.prototype.where=function(n){if(n=r.createLambda(n),n.length<=1)return new h(this,n);var t=this;return new i(function(){var i,f=0;return new u(function(){i=t.getEnumerator()},function(){while(i.moveNext())if(n(i.getCurrent(),f++))return this.yieldReturn(i.getCurrent());return!1},function(){r.dispose(i)})})};i.prototype.choose=function(n){n=r.createLambda(n);var t=this;return new i(function(){var i,f=0;return new u(function(){i=t.getEnumerator()},function(){while(i.moveNext()){var t=n(i.getCurrent(),f++);if(t!=null)return this.yieldReturn(t)}return this.yieldBreak()},function(){r.dispose(i)})})};i.prototype.ofType=function(n){var t=this;return new i(function(){var i;return new u(function(){i=Bridge.getEnumerator(t)},function(){while(i.moveNext()){var t=Bridge.as(i.getCurrent(),n);if(Bridge.hasValue(t))return this.yieldReturn(t)}return!1},function(){r.dispose(i)})})};i.prototype.zip=function(){var e=arguments,n=r.createLambda(arguments[arguments.length-1]),t=this,f;return arguments.length==2?(f=arguments[0],new i(function(){var e,o,s=0;return new u(function(){e=t.getEnumerator();o=i.from(f).getEnumerator()},function(){return e.moveNext()&&o.moveNext()?this.yieldReturn(n(e.getCurrent(),o.getCurrent(),s++)):!1},function(){try{r.dispose(e)}finally{r.dispose(o)}})})):new i(function(){var f,o=0;return new u(function(){var n=i.make(t).concat(i.from(e).takeExceptLast().select(i.from)).select(function(n){return n.getEnumerator()}).toArray();f=i.from(n)},function(){if(f.all(function(n){return n.moveNext()})){var t=f.select(function(n){return n.getCurrent()}).toArray();return t.push(o++),this.yieldReturn(n.apply(null,t))}return this.yieldBreak()},function(){i.from(f).forEach(r.dispose)})})};i.prototype.merge=function(){var n=arguments,t=this;return new i(function(){var f,e=-1;return new u(function(){f=i.make(t).concat(i.from(n).select(i.from)).select(function(n){return n.getEnumerator()}).toArray()},function(){while(f.length>0){e=e>=f.length-1?0:e+1;var n=f[e];if(n.moveNext())return this.yieldReturn(n.getCurrent());n.dispose();f.splice(e--,1)}return this.yieldBreak()},function(){i.from(f).forEach(r.dispose)})})};i.prototype.join=function(n,e,o,s,h){e=r.createLambda(e);o=r.createLambda(o);s=r.createLambda(s);var c=this;return new i(function(){var l,v,a=null,y=0;return new u(function(){l=c.getEnumerator();v=i.from(n).toLookup(o,f.Identity,h)},function(){for(var n,i;;){if(a!=null){if(n=a[y++],n!==t)return this.yieldReturn(s(l.getCurrent(),n));n=null;y=0}if(l.moveNext())i=e(l.getCurrent()),a=v.get(i).toArray();else return!1}},function(){r.dispose(l)})})};i.prototype.groupJoin=function(n,t,e,o,s){t=r.createLambda(t);e=r.createLambda(e);o=r.createLambda(o);var h=this;return new i(function(){var c=h.getEnumerator(),l=null;return new u(function(){c=h.getEnumerator();l=i.from(n).toLookup(e,f.Identity,s)},function(){if(c.moveNext()){var n=l.get(t(c.getCurrent()));return this.yieldReturn(o(c.getCurrent(),n))}return!1},function(){r.dispose(c)})})};i.prototype.all=function(n){n=r.createLambda(n);var t=!0;return this.forEach(function(i){if(!n(i))return t=!1,!1}),t};i.prototype.any=function(n){n=r.createLambda(n);var t=this.getEnumerator();try{if(arguments.length==0)return t.moveNext();while(t.moveNext())if(n(t.getCurrent()))return!0;return!1}finally{r.dispose(t)}};i.prototype.isEmpty=function(){return!this.any()};i.prototype.concat=function(){var n=this,t,f;return arguments.length==1?(t=arguments[0],new i(function(){var e,f;return new u(function(){e=n.getEnumerator()},function(){if(f==null){if(e.moveNext())return this.yieldReturn(e.getCurrent());f=i.from(t).getEnumerator()}return f.moveNext()?this.yieldReturn(f.getCurrent()):!1},function(){try{r.dispose(e)}finally{r.dispose(f)}})})):(f=arguments,new i(function(){var t;return new u(function(){t=i.make(n).concat(i.from(f).select(i.from)).select(function(n){return n.getEnumerator()}).toArray()},function(){while(t.length>0){var n=t[0];if(n.moveNext())return this.yieldReturn(n.getCurrent());n.dispose();t.splice(0,1)}return this.yieldBreak()},function(){i.from(t).forEach(r.dispose)})}))};i.prototype.insert=function(n,t){var f=this;return new i(function(){var o,e,s=0,h=!1;return new u(function(){o=f.getEnumerator();e=i.from(t).getEnumerator()},function(){return s==n&&e.moveNext()?(h=!0,this.yieldReturn(e.getCurrent())):o.moveNext()?(s++,this.yieldReturn(o.getCurrent())):!h&&e.moveNext()?this.yieldReturn(e.getCurrent()):!1},function(){try{r.dispose(o)}finally{r.dispose(e)}})})};i.prototype.alternate=function(n){var t=this;return new i(function(){var f,e,s,o;return new u(function(){s=n instanceof Array||n.getEnumerator!=null?i.from(i.from(n).toArray()):i.make(n);e=t.getEnumerator();e.moveNext()&&(f=e.getCurrent())},function(){for(;;){if(o!=null){if(o.moveNext())return this.yieldReturn(o.getCurrent());o=null}if(f==null&&e.moveNext()){f=e.getCurrent();o=s.getEnumerator();continue}else if(f!=null){var n=f;return f=null,this.yieldReturn(n)}return this.yieldBreak()}},function(){try{r.dispose(e)}finally{r.dispose(o)}})})};i.prototype.contains=function(n,t){t=t||System.Collections.Generic.EqualityComparer$1.$default;var i=this.getEnumerator();try{while(i.moveNext())if(t.equals2(i.getCurrent(),n))return!0;return!1}finally{r.dispose(i)}};i.prototype.defaultIfEmpty=function(n){var f=this;return n===t&&(n=null),new i(function(){var t,i=!0;return new u(function(){t=f.getEnumerator()},function(){return t.moveNext()?(i=!1,this.yieldReturn(t.getCurrent())):i?(i=!1,this.yieldReturn(n)):!1},function(){r.dispose(t)})})};i.prototype.distinct=function(n){return this.except(i.empty(),n)};i.prototype.distinctUntilChanged=function(n){n=r.createLambda(n);var t=this;return new i(function(){var i,f,e;return new u(function(){i=t.getEnumerator()},function(){while(i.moveNext()){var t=n(i.getCurrent());if(e)return e=!1,f=t,this.yieldReturn(i.getCurrent());if(f!==t)return f=t,this.yieldReturn(i.getCurrent())}return this.yieldBreak()},function(){r.dispose(i)})})};i.prototype.except=function(n,t){var f=this;return new i(function(){var o,e;return new u(function(){o=f.getEnumerator();e=new(System.Collections.Generic.Dictionary$2(Object,Object))(null,t);i.from(n).forEach(function(n){e.containsKey(n)||e.add(n)})},function(){while(o.moveNext()){var n=o.getCurrent();if(!e.containsKey(n))return e.add(n),this.yieldReturn(n)}return!1},function(){r.dispose(o)})})};i.prototype.intersect=function(n,t){var f=this;return new i(function(){var e,o,s;return new u(function(){e=f.getEnumerator();o=new(System.Collections.Generic.Dictionary$2(Object,Object))(null,t);i.from(n).forEach(function(n){o.containsKey(n)||o.add(n)});s=new(System.Collections.Generic.Dictionary$2(Object,Object))(null,t)},function(){while(e.moveNext()){var n=e.getCurrent();if(!s.containsKey(n)&&o.containsKey(n))return s.add(n),this.yieldReturn(n)}return!1},function(){r.dispose(e)})})};i.prototype.sequenceEqual=function(n,t){var f,u;t=t||System.Collections.Generic.EqualityComparer$1.$default;f=this.getEnumerator();try{u=i.from(n).getEnumerator();try{while(f.moveNext())if(!u.moveNext()||!t.equals2(f.getCurrent(),u.getCurrent()))return!1;return u.moveNext()?!1:!0}finally{r.dispose(u)}}finally{r.dispose(f)}};i.prototype.union=function(n,f){var e=this;return new i(function(){var h,o,s;return new u(function(){h=e.getEnumerator();s=new(System.Collections.Generic.Dictionary$2(Object,Object))(null,f)},function(){var r;if(o===t){while(h.moveNext())if(r=h.getCurrent(),!s.containsKey(r))return s.add(r),this.yieldReturn(r);o=i.from(n).getEnumerator()}while(o.moveNext())if(r=o.getCurrent(),!s.containsKey(r))return s.add(r),this.yieldReturn(r);return!1},function(){try{r.dispose(h)}finally{r.dispose(o)}})})};i.prototype.orderBy=function(n,t){return new s(this,n,t,!1)};i.prototype.orderByDescending=function(n,t){return new s(this,n,t,!0)};i.prototype.reverse=function(){var n=this;return new i(function(){var t,i;return new u(function(){t=n.toArray();i=t.length},function(){return i>0?this.yieldReturn(t[--i]):!1},f.Blank)})};i.prototype.shuffle=function(){var n=this;return new i(function(){var t;return new u(function(){t=n.toArray()},function(){if(t.length>0){var n=Math.floor(Math.random()*t.length);return this.yieldReturn(t.splice(n,1)[0])}return!1},f.Blank)})};i.prototype.weightedSample=function(n){n=r.createLambda(n);var t=this;return new i(function(){var i,r=0;return new u(function(){i=t.choose(function(t){var i=n(t);return i<=0?null:(r+=i,{value:t,bound:r})}).toArray()},function(){var t;if(i.length>0){for(var f=Math.floor(Math.random()*r)+1,u=-1,n=i.length;n-u>1;)t=Math.floor((u+n)/2),i[t].bound>=f?n=t:u=t;return this.yieldReturn(i[n].value)}return this.yieldBreak()},f.Blank)})};i.prototype.groupBy=function(n,t,f,e){var o=this;return n=r.createLambda(n),t=r.createLambda(t),f!=null&&(f=r.createLambda(f)),new i(function(){var i;return new u(function(){i=o.toLookup(n,t,e).toEnumerable().getEnumerator()},function(){while(i.moveNext())return f==null?this.yieldReturn(i.getCurrent()):this.yieldReturn(f(i.getCurrent().key(),i.getCurrent()));return!1},function(){r.dispose(i)})})};i.prototype.partitionBy=function(n,t,f,e){var s=this,o;return n=r.createLambda(n),t=r.createLambda(t),e=e||System.Collections.Generic.EqualityComparer$1.$default,f==null?(o=!1,f=function(n,t){return new v(n,t)}):(o=!0,f=r.createLambda(f)),new i(function(){var h,l,c=[];return new u(function(){h=s.getEnumerator();h.moveNext()&&(l=n(h.getCurrent()),c.push(t(h.getCurrent())))},function(){for(var r,u;(r=h.moveNext())==!0;)if(e.equals2(l,n(h.getCurrent())))c.push(t(h.getCurrent()));else break;return c.length>0?(u=o?f(l,i.from(c)):f(l,c),r?(l=n(h.getCurrent()),c=[t(h.getCurrent())]):c=[],this.yieldReturn(u)):!1},function(){r.dispose(h)})})};i.prototype.buffer=function(n){var t=this;return new i(function(){var i;return new u(function(){i=t.getEnumerator()},function(){for(var t=[],r=0;i.moveNext();)if(t.push(i.getCurrent()),++r>=n)return this.yieldReturn(t);return t.length>0?this.yieldReturn(t):!1},function(){r.dispose(i)})})};i.prototype.aggregate=function(n,t,i){return i=r.createLambda(i),i(this.scan(n,t,i).last())};i.prototype.average=function(n,t){!n||t||Bridge.isFunction(n)||(t=n,n=null);n=r.createLambda(n);var i=t||0,u=0;if(this.forEach(function(t){t=n(t);t instanceof System.Decimal||System.Int64.is64Bit(t)?i=t.add(i):i instanceof System.Decimal||System.Int64.is64Bit(i)?i=i.add(t):i+=t;++u}),u===0)throw new System.InvalidOperationException("Sequence contains no elements");return i instanceof System.Decimal||System.Int64.is64Bit(i)?i.div(u):i/u};i.prototype.nullableAverage=function(n,t){return this.any(Bridge.isNull)?null:this.average(n,t)};i.prototype.count=function(n){n=n==null?f.True:r.createLambda(n);var t=0;return this.forEach(function(i,r){n(i,r)&&++t}),t};i.prototype.max=function(n){return n==null&&(n=f.Identity),this.select(n).aggregate(function(n,t){return Bridge.compare(n,t,!0)===1?n:t})};i.prototype.nullableMax=function(n){return this.any(Bridge.isNull)?null:this.max(n)};i.prototype.min=function(n){return n==null&&(n=f.Identity),this.select(n).aggregate(function(n,t){return Bridge.compare(n,t,!0)===-1?n:t})};i.prototype.nullableMin=function(n){return this.any(Bridge.isNull)?null:this.min(n)};i.prototype.maxBy=function(n){return n=r.createLambda(n),this.aggregate(function(t,i){return Bridge.compare(n(t),n(i),!0)===1?t:i})};i.prototype.minBy=function(n){return n=r.createLambda(n),this.aggregate(function(t,i){return Bridge.compare(n(t),n(i),!0)===-1?t:i})};i.prototype.sum=function(n,t){!n||t||Bridge.isFunction(n)||(t=n,n=null);n==null&&(n=f.Identity);var i=this.select(n).aggregate(0,function(n,t){return n instanceof System.Decimal||System.Int64.is64Bit(n)?n.add(t):t instanceof System.Decimal||System.Int64.is64Bit(t)?t.add(n):n+t});return i===0&&t?t:i};i.prototype.nullableSum=function(n,t){return this.any(Bridge.isNull)?null:this.sum(n,t)};i.prototype.elementAt=function(n){var t,i=!1;if(this.forEach(function(r,u){if(u==n)return t=r,i=!0,!1}),!i)throw new Error("index is less than 0 or greater than or equal to the number of elements in source.");return t};i.prototype.elementAtOrDefault=function(n,i){i===t&&(i=null);var r,u=!1;return this.forEach(function(t,i){if(i==n)return r=t,u=!0,!1}),u?r:i};i.prototype.first=function(n){if(n!=null)return this.where(n).first();var t,i=!1;if(this.forEach(function(n){return t=n,i=!0,!1}),!i)throw new Error("first:No element satisfies the condition.");return t};i.prototype.firstOrDefault=function(n,i){if(i===t&&(i=null),n!=null)return this.where(n).firstOrDefault(null,i);var r,u=!1;return this.forEach(function(n){return r=n,u=!0,!1}),u?r:i};i.prototype.last=function(n){if(n!=null)return this.where(n).last();var t,i=!1;if(this.forEach(function(n){i=!0;t=n}),!i)throw new Error("last:No element satisfies the condition.");return t};i.prototype.lastOrDefault=function(n,i){if(i===t&&(i=null),n!=null)return this.where(n).lastOrDefault(null,i);var r,u=!1;return this.forEach(function(n){u=!0;r=n}),u?r:i};i.prototype.single=function(n){if(n!=null)return this.where(n).single();var i,t=!1;if(this.forEach(function(n){if(t)throw new Error("single:sequence contains more than one element.");else t=!0,i=n}),!t)throw new Error("single:No element satisfies the condition.");return i};i.prototype.singleOrDefault=function(n,i){if(i===t&&(i=null),n!=null)return this.where(n).singleOrDefault(null,i);var u,r=!1;return this.forEach(function(n){if(r)throw new Error("single:sequence contains more than one element.");else r=!0,u=n}),r?u:i};i.prototype.skip=function(n){var t=this;return new i(function(){var i,f=0;return new u(function(){for(i=t.getEnumerator();f++<n&&i.moveNext(););},function(){return i.moveNext()?this.yieldReturn(i.getCurrent()):!1},function(){r.dispose(i)})})};i.prototype.skipWhile=function(n){n=r.createLambda(n);var t=this;return new i(function(){var i,e=0,f=!1;return new u(function(){i=t.getEnumerator()},function(){while(!f)if(i.moveNext()){if(!n(i.getCurrent(),e++))return f=!0,this.yieldReturn(i.getCurrent());continue}else return!1;return i.moveNext()?this.yieldReturn(i.getCurrent()):!1},function(){r.dispose(i)})})};i.prototype.take=function(n){var t=this;return new i(function(){var i,f=0;return new u(function(){i=t.getEnumerator()},function(){return f++<n&&i.moveNext()?this.yieldReturn(i.getCurrent()):!1},function(){r.dispose(i)})})};i.prototype.takeWhile=function(n){n=r.createLambda(n);var t=this;return new i(function(){var i,f=0;return new u(function(){i=t.getEnumerator()},function(){return i.moveNext()&&n(i.getCurrent(),f++)?this.yieldReturn(i.getCurrent()):!1},function(){r.dispose(i)})})};i.prototype.takeExceptLast=function(n){n==null&&(n=1);var t=this;return new i(function(){if(n<=0)return t.getEnumerator();var i,f=[];return new u(function(){i=t.getEnumerator()},function(){while(i.moveNext()){if(f.length==n)return f.push(i.getCurrent()),this.yieldReturn(f.shift());f.push(i.getCurrent())}return!1},function(){r.dispose(i)})})};i.prototype.takeFromLast=function(n){if(n<=0||n==null)return i.empty();var t=this;return new i(function(){var o,f,e=[];return new u(function(){o=t.getEnumerator()},function(){if(f==null){while(o.moveNext())e.length==n&&e.shift(),e.push(o.getCurrent());f=i.from(e).getEnumerator()}return f.moveNext()?this.yieldReturn(f.getCurrent()):!1},function(){r.dispose(f)})})};i.prototype.indexOf=function(n,t){var i=null;return typeof n===o.Function?this.forEach(function(t,r){if(n(t,r))return i=r,!1}):(t=t||System.Collections.Generic.EqualityComparer$1.$default,this.forEach(function(r,u){if(t.equals2(r,n))return i=u,!1})),i!==null?i:-1};i.prototype.lastIndexOf=function(n,t){var i=-1;return typeof n===o.Function?this.forEach(function(t,r){n(t,r)&&(i=r)}):(t=t||System.Collections.Generic.EqualityComparer$1.$default,this.forEach(function(r,u){t.equals2(r,n)&&(i=u)})),i};i.prototype.asEnumerable=function(){return i.from(this)};i.prototype.toArray=function(){var n=[];return this.forEach(function(t){n.push(t)}),n};i.prototype.toList=function(n){var t=[];return this.forEach(function(n){t.push(n)}),new(System.Collections.Generic.List$1(n||Object))(t)};i.prototype.toLookup=function(n,t,i){n=r.createLambda(n);t=r.createLambda(t);var u=new(System.Collections.Generic.Dictionary$2(Object,Object))(null,i),f=[];return this.forEach(function(i){var r=n(i),e=t(i),o={v:null};u.tryGetValue(r,o)?o.v.push(e):(f.push(r),u.add(r,[e]))}),new p(u,f)};i.prototype.toObject=function(n,t){n=r.createLambda(n);t=r.createLambda(t);var i={};return this.forEach(function(r){i[n(r)]=t(r)}),i};i.prototype.toDictionary=function(n,t,i,u,f){n=r.createLambda(n);t=r.createLambda(t);var e=new(System.Collections.Generic.Dictionary$2(i,u))(null,f);return this.forEach(function(i){e.add(n(i),t(i))}),e};i.prototype.toJSONString=function(n,t){if(typeof JSON===o.Undefined||JSON.stringify==null)throw new Error("toJSONString can't find JSON.stringify. This works native JSON support Browser or include json2.js");return JSON.stringify(this.toArray(),n,t)};i.prototype.toJoinedString=function(n,t){return n==null&&(n=""),t==null&&(t=f.Identity),this.select(t).toArray().join(n)};i.prototype.doAction=function(n){var t=this;return n=r.createLambda(n),new i(function(){var i,f=0;return new u(function(){i=t.getEnumerator()},function(){return i.moveNext()?(n(i.getCurrent(),f++),this.yieldReturn(i.getCurrent())):!1},function(){r.dispose(i)})})};i.prototype.forEach=function(n){n=r.createLambda(n);var i=0,t=this.getEnumerator();try{while(t.moveNext())if(n(t.getCurrent(),i++)===!1)break}finally{r.dispose(t)}};i.prototype.write=function(n,t){n==null&&(n="");t=r.createLambda(t);var i=!0;this.forEach(function(r){i?i=!1:document.write(n);document.write(t(r))})};i.prototype.writeLine=function(n){n=r.createLambda(n);this.forEach(function(t){document.writeln(n(t)+"<br />")})};i.prototype.force=function(){var n=this.getEnumerator();try{while(n.moveNext());}finally{r.dispose(n)}};i.prototype.letBind=function(n){n=r.createLambda(n);var t=this;return new i(function(){var f;return new u(function(){f=i.from(n(t)).getEnumerator()},function(){return f.moveNext()?this.yieldReturn(f.getCurrent()):!1},function(){r.dispose(f)})})};i.prototype.share=function(){var i=this,n,t=!1;return new y(function(){return new u(function(){n==null&&(n=i.getEnumerator())},function(){if(t)throw new Error("enumerator is disposed");return n.moveNext()?this.yieldReturn(n.getCurrent()):!1},f.Blank)},function(){t=!0;r.dispose(n)})};i.prototype.memoize=function(){var e=this,n,t,i=!1;return new y(function(){var r=-1;return new u(function(){t==null&&(t=e.getEnumerator(),n=[])},function(){if(i)throw new Error("enumerator is disposed");return(r++,n.length<=r)?t.moveNext()?this.yieldReturn(n[r]=t.getCurrent()):!1:this.yieldReturn(n[r])},f.Blank)},function(){i=!0;r.dispose(t);n=null})};i.prototype.catchError=function(n){n=r.createLambda(n);var t=this;return new i(function(){var i;return new u(function(){i=t.getEnumerator()},function(){try{return i.moveNext()?this.yieldReturn(i.getCurrent()):!1}catch(t){return n(t),!1}},function(){r.dispose(i)})})};i.prototype.finallyAction=function(n){n=r.createLambda(n);var t=this;return new i(function(){var i;return new u(function(){i=t.getEnumerator()},function(){return i.moveNext()?this.yieldReturn(i.getCurrent()):!1},function(){try{r.dispose(i)}finally{n()}})})};i.prototype.log=function(n){return n=r.createLambda(n),this.doAction(function(t){typeof console!==o.Undefined&&console.log(n(t))})};i.prototype.trace=function(n,t){return n==null&&(n="Trace"),t=r.createLambda(t),this.doAction(function(i){typeof console!==o.Undefined&&console.log(n,t(i))})};s=function(n,t,i,u,f){this.source=n;this.keySelector=r.createLambda(t);this.comparer=i||System.Collections.Generic.Comparer$1.$default;this.descending=u;this.parent=f};s.prototype=new i;s.prototype.createOrderedEnumerable=function(n,t,i){return new s(this.source,n,t,i,this)};s.prototype.thenBy=function(n,t){return this.createOrderedEnumerable(n,t,!1)};s.prototype.thenByDescending=function(n,t){return this.createOrderedEnumerable(n,t,!0)};s.prototype.getEnumerator=function(){var i=this,t,n,r=0;return new u(function(){t=[];n=[];i.source.forEach(function(i,r){t.push(i);n.push(r)});var r=a.create(i,null);r.GenerateKeys(t);n.sort(function(n,t){return r.compare(n,t)})},function(){return r<n.length?this.yieldReturn(t[n[r++]]):!1},f.Blank)};a=function(n,t,i,r){this.keySelector=n;this.comparer=t;this.descending=i;this.child=r;this.keys=null};a.create=function(n,t){var i=new a(n.keySelector,n.comparer,n.descending,t);return n.parent!=null?a.create(n.parent,i):i};a.prototype.GenerateKeys=function(n){for(var i=n.length,u=this.keySelector,r=new Array(i),t=0;t<i;t++)r[t]=u(n[t]);this.keys=r;this.child!=null&&this.child.GenerateKeys(n)};a.prototype.compare=function(n,t){var i=this.comparer.compare(this.keys[n],this.keys[t]);return i==0?this.child!=null?this.child.compare(n,t):r.compare(n,t):this.descending?-i:i};y=function(n,t){this.dispose=t;i.call(this,n)};y.prototype=new i;e=function(n){this.getSource=function(){return n}};e.prototype=new i;e.prototype.any=function(n){return n==null?this.getSource().length>0:i.prototype.any.apply(this,arguments)};e.prototype.count=function(n){return n==null?this.getSource().length:i.prototype.count.apply(this,arguments)};e.prototype.elementAt=function(n){var t=this.getSource();return 0<=n&&n<t.length?t[n]:i.prototype.elementAt.apply(this,arguments)};e.prototype.elementAtOrDefault=function(n,i){i===t&&(i=null);var r=this.getSource();return 0<=n&&n<r.length?r[n]:i};e.prototype.first=function(n){var t=this.getSource();return n==null&&t.length>0?t[0]:i.prototype.first.apply(this,arguments)};e.prototype.firstOrDefault=function(n,r){if(r===t&&(r=null),n!=null)return i.prototype.firstOrDefault.apply(this,arguments);var u=this.getSource();return u.length>0?u[0]:r};e.prototype.last=function(n){var t=this.getSource();return n==null&&t.length>0?t[t.length-1]:i.prototype.last.apply(this,arguments)};e.prototype.lastOrDefault=function(n,r){if(r===t&&(r=null),n!=null)return i.prototype.lastOrDefault.apply(this,arguments);var u=this.getSource();return u.length>0?u[u.length-1]:r};e.prototype.skip=function(n){var t=this.getSource();return new i(function(){var i;return new u(function(){i=n<0?0:n},function(){return i<t.length?this.yieldReturn(t[i++]):!1},f.Blank)})};e.prototype.takeExceptLast=function(n){return n==null&&(n=1),this.take(this.getSource().length-n)};e.prototype.takeFromLast=function(n){return this.skip(this.getSource().length-n)};e.prototype.reverse=function(){var n=this.getSource();return new i(function(){var t;return new u(function(){t=n.length},function(){return t>0?this.yieldReturn(n[--t]):!1},f.Blank)})};e.prototype.sequenceEqual=function(n,t){return(n instanceof e||n instanceof Array)&&t==null&&i.from(n).count()!=this.count()?!1:i.prototype.sequenceEqual.apply(this,arguments)};e.prototype.toJoinedString=function(n,t){var r=this.getSource();return t!=null||!(r instanceof Array)?i.prototype.toJoinedString.apply(this,arguments):(n==null&&(n=""),r.join(n))};e.prototype.getEnumerator=function(){return new Bridge.ArrayEnumerator(this.getSource())};h=function(n,t){this.prevSource=n;this.prevPredicate=t};h.prototype=new i;h.prototype.where=function(n){if(n=r.createLambda(n),n.length<=1){var t=this.prevPredicate,u=function(i){return t(i)&&n(i)};return new h(this.prevSource,u)}return i.prototype.where.call(this,n)};h.prototype.select=function(n){return n=r.createLambda(n),n.length<=1?new c(this.prevSource,this.prevPredicate,n):i.prototype.select.call(this,n)};h.prototype.getEnumerator=function(){var t=this.prevPredicate,i=this.prevSource,n;return new u(function(){n=i.getEnumerator()},function(){while(n.moveNext())if(t(n.getCurrent()))return this.yieldReturn(n.getCurrent());return!1},function(){r.dispose(n)})};c=function(n,t,i){this.prevSource=n;this.prevPredicate=t;this.prevSelector=i};c.prototype=new i;c.prototype.where=function(n){return n=r.createLambda(n),n.length<=1?new h(this,n):i.prototype.where.call(this,n)};c.prototype.select=function(n){if(n=r.createLambda(n),n.length<=1){var t=this.prevSelector,u=function(i){return n(t(i))};return new c(this.prevSource,this.prevPredicate,u)}return i.prototype.select.call(this,n)};c.prototype.getEnumerator=function(){var t=this.prevPredicate,i=this.prevSelector,f=this.prevSource,n;return new u(function(){n=f.getEnumerator()},function(){while(n.moveNext())if(t==null||t(n.getCurrent()))return this.yieldReturn(i(n.getCurrent()));return!1},function(){r.dispose(n)})};p=function(n,t){this.count=function(){return n.getCount()};this.get=function(t){var r={v:null},u=n.tryGetValue(t,r);return i.from(u?r.v:[])};this.contains=function(t){return n.containsKey(t)};this.toEnumerable=function(){return i.from(t).select(function(t){return new v(t,n.get(t))})};this.getEnumerator=function(){return this.toEnumerable().getEnumerator()}};p.$$inherits=[];Bridge.Class.addExtend(p,[System.Collections.IEnumerable]);v=function(n,t){this.key=function(){return n};e.call(this,t)};v.prototype=new e;v.$$inherits=[];Bridge.Class.addExtend(v,[System.Collections.IEnumerable]);Bridge.Linq={};Bridge.Linq.Enumerable=i;System.Linq={};System.Linq.Enumerable=i}(Bridge.global);Bridge.define("System.Guid",{inherits:function(){return[System.IEquatable$1(System.Guid),System.IComparable$1(System.Guid),System.IFormattable]},$kind:"struct",statics:{error1:"Byte array for GUID must be exactly {0} bytes long",valid:null,split:null,nonFormat:null,replace:null,rnd:null,config:{init:function(){this.valid=new RegExp("^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$","i");this.split=new RegExp("^(.{8})(.{4})(.{4})(.{4})(.{12})$");this.nonFormat=new RegExp("^[{(]?([0-9a-f]{8})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{4})-?([0-9a-f]{12})[)}]?$","i");this.replace=new RegExp("-","g");this.rnd=new System.Random.ctor;this.empty=new System.Guid.ctor}},parse:function(n){return System.Guid.parseExact(n,null)},parseExact:function(n,t){var i=new System.Guid.ctor;return i.parseInternal(n,t,!0),i},tryParse:function(n,t){return System.Guid.tryParseExact(n,null,t)},tryParseExact:function(n,t,i){return i.v=new System.Guid.ctor,i.v.parseInternal(n,t,!1)},newGuid:function(){var n=System.Array.init(16,0);return System.Guid.rnd.nextBytes(n),n[7]=(n[7]&15|64)&255,n[8]=(n[8]&191|128)&255,new System.Guid.$ctor1(n)},makeBinary:function(n){return System.Int32.format(n&255,"x2")},op_Equality:function(n,t){return Bridge.referenceEquals(n,null)?Bridge.referenceEquals(t,null):n.equalsT(t)},op_Inequality:function(n,t){return!System.Guid.op_Equality(n,t)},getDefaultValue:function(){return new System.Guid}},_a:0,_b:0,_c:0,_d:0,_e:0,_f:0,_g:0,_h:0,_i:0,_j:0,_k:0,config:{alias:["equalsT","System$IEquatable$1$System$Guid$equalsT","compareTo","System$IComparable$1$System$Guid$compareTo","format","System$IFormattable$format"]},$ctor4:function(n){this.$initialize();(new System.Guid.ctor).$clone(this);this.parseInternal(n,null,!0)},$ctor1:function(n){if(this.$initialize(),n==null)throw new System.ArgumentNullException("b");if(n.length!==16)throw new System.ArgumentException(System.String.format(System.Guid.error1,16));this._a=n[3]<<24|n[2]<<16|n[1]<<8|n[0];this._b=Bridge.Int.sxs((n[5]<<8|n[4])&65535);this._c=Bridge.Int.sxs((n[7]<<8|n[6])&65535);this._d=n[8];this._e=n[9];this._f=n[10];this._g=n[11];this._h=n[12];this._i=n[13];this._j=n[14];this._k=n[15]},$ctor5:function(n,t,i,r,u,f,e,o,s,h,c){this.$initialize();this._a=n|0;this._b=Bridge.Int.sxs(t&65535);this._c=Bridge.Int.sxs(i&65535);this._d=r;this._e=u;this._f=f;this._g=e;this._h=o;this._i=s;this._j=h;this._k=c},$ctor3:function(n,t,i,r){if(this.$initialize(),r==null)throw new System.ArgumentNullException("d");if(r.length!==8)throw new System.ArgumentException(System.String.format(System.Guid.error1,8));this._a=n;this._b=t;this._c=i;this._d=r[0];this._e=r[1];this._f=r[2];this._g=r[3];this._h=r[4];this._i=r[5];this._j=r[6];this._k=r[7]},$ctor2:function(n,t,i,r,u,f,e,o,s,h,c){this.$initialize();this._a=n;this._b=t;this._c=i;this._d=r;this._e=u;this._f=f;this._g=e;this._h=o;this._i=s;this._j=h;this._k=c},ctor:function(){this.$initialize()},equalsT:function(n){return this._a!==n._a||this._b!==n._b||this._c!==n._c||this._d!==n._d||this._e!==n._e||this._f!==n._f||this._g!==n._g||this._h!==n._h||this._i!==n._i||this._j!==n._j||this._k!==n._k?!1:!0},compareTo:function(n){return System.String.compare(this.toString(),n.toString())},toString:function(){return this.format$1(null)},toString$1:function(n){return this.format$1(n)},format:function(n){return this.format$1(n)},toByteArray:function(){var n=System.Array.init(16,0);return n[0]=this._a&255,n[1]=this._a>>8&255,n[2]=this._a>>16&255,n[3]=this._a>>24&255,n[4]=this._b&255,n[5]=this._b>>8&255,n[6]=this._c&255,n[7]=this._c>>8&255,n[8]=this._d,n[9]=this._e,n[10]=this._f,n[11]=this._g,n[12]=this._h,n[13]=this._i,n[14]=this._j,n[15]=this._k,n},parseInternal:function(n,t,i){var u=null,f,r,e,o;if(System.String.isNullOrEmpty(n))throw new System.ArgumentNullException("input");if(System.String.isNullOrEmpty(t)?(f=System.Guid.nonFormat.exec(n),f!=null&&(u=f.slice(1).join("-").toLowerCase())):(t=t.toUpperCase(),r=!1,Bridge.referenceEquals(t,"N")?(e=System.Guid.split.exec(n),e!=null&&(r=!0,n=e.slice(1).join("-"))):Bridge.referenceEquals(t,"B")||Bridge.referenceEquals(t,"P")?(o=Bridge.referenceEquals(t,"B")?[123,125]:[40,41],n.charCodeAt(0)===o[0]&&n.charCodeAt(n.length-1|0)===o[1]&&(r=!0,n=n.substr(1,n.length-2|0))):r=!0,r&&n.match(System.Guid.valid)!=null&&(u=n.toLowerCase())),u!=null)return this.fromString(u),!0;if(i)throw new System.FormatException("input is not in a recognized format");return!1},format$1:function(n){var t=System.String.concat(System.UInt32.format(this._a>>>0,"x8"),System.UInt16.format(this._b&65535,"x4"),System.UInt16.format(this._c&65535,"x4"));t=System.String.concat(t,[this._d,this._e,this._f,this._g,this._h,this._i,this._j,this._k].map(System.Guid.makeBinary).join(""));t=System.Guid.split.exec(t).slice(1).join("-");switch(n){case"n":case"N":return t.replace(System.Guid.replace,"");case"b":case"B":return System.String.concat(String.fromCharCode(123),t,String.fromCharCode(125));case"p":case"P":return System.String.concat(String.fromCharCode(40),t,String.fromCharCode(41));default:return t}},fromString:function(n){var t,i;if(!System.String.isNullOrEmpty(n)){for(n=n.replace(System.Guid.replace,""),t=System.Array.init(8,0),this._a=System.UInt32.parse(n.substr(0,8),16)|0,this._b=Bridge.Int.sxs(System.UInt16.parse(n.substr(8,4),16)&65535),this._c=Bridge.Int.sxs(System.UInt16.parse(n.substr(12,4),16)&65535),i=8;i<16;i=i+1|0)t[i-8|0]=System.Byte.parse(n.substr(i*2|0,2),16);this._d=t[0];this._e=t[1];this._f=t[2];this._g=t[3];this._h=t[4];this._i=t[5];this._j=t[6];this._k=t[7]}},getHashCode:function(){return Bridge.addHash([1684632903,this._a,this._b,this._c,this._d,this._e,this._f,this._g,this._h,this._i,this._j,this._k])},$clone:function(){return this}});Bridge.define("System.Text.RegularExpressions.Regex",{statics:{_cacheSize:15,_defaultMatchTimeout:System.TimeSpan.fromMilliseconds(-1),getCacheSize:function(){return System.Text.RegularExpressions.Regex._cacheSize},setCacheSize:function(n){if(n<0)throw new System.ArgumentOutOfRangeException("value");System.Text.RegularExpressions.Regex._cacheSize=n},escape:function(n){if(n==null)throw new System.ArgumentNullException("str");return System.Text.RegularExpressions.RegexParser.escape(n)},unescape:function(n){if(n==null)throw new System.ArgumentNullException("str");return System.Text.RegularExpressions.RegexParser.unescape(n)},isMatch:function(n,t){var i=System.Text.RegularExpressions;return i.Regex.isMatch$2(n,t,i.RegexOptions.None,i.Regex._defaultMatchTimeout)},isMatch$1:function(n,t,i){var r=System.Text.RegularExpressions;return r.Regex.isMatch$2(n,t,i,r.Regex._defaultMatchTimeout)},isMatch$2:function(n,t,i,r){var u=new System.Text.RegularExpressions.Regex.$ctor3(t,i,r,!0);return u.isMatch(n)},match:function(n,t){var i=System.Text.RegularExpressions;return i.Regex.match$2(n,t,i.RegexOptions.None,i.Regex._defaultMatchTimeout)},match$1:function(n,t,i){var r=System.Text.RegularExpressions;return r.Regex.match$2(n,t,i,r.Regex._defaultMatchTimeout)},match$2:function(n,t,i,r){var u=new System.Text.RegularExpressions.Regex.$ctor3(t,i,r,!0);return u.match(n)},matches:function(n,t){var i=System.Text.RegularExpressions;return i.Regex.matches$2(n,t,i.RegexOptions.None,i.Regex._defaultMatchTimeout)},matches$1:function(n,t,i){var r=System.Text.RegularExpressions;return r.Regex.matches$2(n,t,i,r.Regex._defaultMatchTimeout)},matches$2:function(n,t,i,r){var u=new System.Text.RegularExpressions.Regex.$ctor3(t,i,r,!0);return u.matches(n)},replace:function(n,t,i){var r=System.Text.RegularExpressions;return r.Regex.replace$2(n,t,i,r.RegexOptions.None,r.Regex._defaultMatchTimeout)},replace$1:function(n,t,i,r){var u=System.Text.RegularExpressions;return u.Regex.replace$2(n,t,i,r,u.Regex._defaultMatchTimeout)},replace$2:function(n,t,i,r,u){var f=new System.Text.RegularExpressions.Regex.$ctor3(t,r,u,!0);return f.replace(n,i)},replace$3:function(n,t,i){var r=System.Text.RegularExpressions;return r.Regex.replace$5(n,t,i,r.RegexOptions.None,r.Regex._defaultMatchTimeout)},replace$4:function(n,t,i,r){var u=System.Text.RegularExpressions;return u.Regex.replace$5(n,t,i,r,u.Regex._defaultMatchTimeout)},replace$5:function(n,t,i,r,u){var f=new System.Text.RegularExpressions.Regex.$ctor3(t,r,u,!0);return f.replace$3(n,i)},split:function(n,t){var i=System.Text.RegularExpressions;return i.Regex.split$2(n,t,i.RegexOptions.None,i.Regex._defaultMatchTimeout)},split$1:function(n,t,i){var r=System.Text.RegularExpressions;return r.Regex.split$2(n,t,i,r.Regex._defaultMatchTimeout)},split$2:function(n,t,i,r){var u=new System.Text.RegularExpressions.Regex.$ctor3(t,i,r,!0);return u.split(n)}},_pattern:"",_matchTimeout:System.TimeSpan.fromMilliseconds(-1),_runner:null,_caps:null,_capsize:0,_capnames:null,_capslist:null,config:{init:function(){this._options=System.Text.RegularExpressions.RegexOptions.None}},ctor:function(n){this.$ctor1(n,System.Text.RegularExpressions.RegexOptions.None)},$ctor1:function(n,t){this.$ctor2(n,t,System.TimeSpan.fromMilliseconds(-1))},$ctor2:function(n,t,i){this.$ctor3(n,t,i,!1)},$ctor3:function(n,t,i){var r,u,f;if(this.$initialize(),r=System.Text.RegularExpressions,n==null)throw new System.ArgumentNullException("pattern");if(t<r.RegexOptions.None||t>>10!=0)throw new System.ArgumentOutOfRangeException("options");if((t&r.RegexOptions.ECMAScript)!=0&&(t&~(r.RegexOptions.ECMAScript|r.RegexOptions.IgnoreCase|r.RegexOptions.Multiline|r.RegexOptions.CultureInvariant))!=0)throw new System.ArgumentOutOfRangeException("options");if(u=System.Text.RegularExpressions.RegexOptions.IgnoreCase|System.Text.RegularExpressions.RegexOptions.Multiline|System.Text.RegularExpressions.RegexOptions.Singleline|System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace|System.Text.RegularExpressions.RegexOptions.ExplicitCapture,(t|u)!==u)throw new System.NotSupportedException("Specified Regex options are not supported.");this._validateMatchTimeout(i);this._pattern=n;this._options=t;this._matchTimeout=i;this._runner=new r.RegexRunner(this);f=this._runner.parsePattern();this._capnames=f.sparseSettings.sparseSlotNameMap;this._capslist=f.sparseSettings.sparseSlotNameMap.keys;this._capsize=this._capslist.length},getMatchTimeout:function(){return this._matchTimeout},getOptions:function(){return this._options},getRightToLeft:function(){return(this._options&System.Text.RegularExpressions.RegexOptions.RightToLeft)!=0},isMatch:function(n){if(n==null)throw new System.ArgumentNullException("input");var t=this.getRightToLeft()?n.length:0;return this.isMatch$1(n,t)},isMatch$1:function(n,t){if(n==null)throw new System.ArgumentNullException("input");var i=this._runner.run(!0,-1,n,0,n.length,t);return i==null},match:function(n){if(n==null)throw new System.ArgumentNullException("input");var t=this.getRightToLeft()?n.length:0;return this.match$1(n,t)},match$1:function(n,t){if(n==null)throw new System.ArgumentNullException("input");return this._runner.run(!1,-1,n,0,n.length,t)},match$2:function(n,t,i){if(n==null)throw new System.ArgumentNullException("input");var r=this.getRightToLeft()?t+i:t;return this._runner.run(!1,-1,n,t,i,r)},matches:function(n){if(n==null)throw new System.ArgumentNullException("input");var t=this.getRightToLeft()?n.length:0;return this.matches$1(n,t)},matches$1:function(n,t){if(n==null)throw new System.ArgumentNullException("input");return new System.Text.RegularExpressions.MatchCollection(this,n,0,n.length,t)},getGroupNames:function(){if(this._capslist==null){for(var i=System.Globalization.CultureInfo.invariantCulture,t=[],r=this._capsize,n=0;n<r;n++)t[n]=System.Convert.toString(n,i,System.Convert.typeCodes.Int32);return t}return this._capslist.slice()},getGroupNumbers:function(){var t=this._caps,n,i,u,r;if(t==null)for(n=[],u=this._capsize,r=0;r<u;r++)n.push(r);else{n=[];for(i in t)t.hasOwnProperty(i)&&(n[t[i]]=i)}return n},groupNameFromNumber:function(n){var i,t;return this._capslist==null?n>=0&&n<this._capsize?(i=System.Globalization.CultureInfo.invariantCulture,System.Convert.toString(n,i,System.Convert.typeCodes.Int32)):"":this._caps!=null?(t=this._caps[n],t==null)?"":parseInt(t):n>=0&&n<this._capslist.length?this._capslist[n]:""},groupNumberFromName:function(n){var u,t,i,r;if(n==null)throw new System.ArgumentNullException("name");if(this._capnames!=null)return(u=this._capnames[n],u==null)?-1:parseInt(u);for(t=0,r=0;r<n.Length;r++){if(i=n[r],i>"9"||i<"0")return-1;t*=10;t+=i-"0"}return t>=0&&t<this._capsize?t:-1},replace:function(n,t){if(n==null)throw new System.ArgumentNullException("input");var i=this.getRightToLeft()?n.length:0;return this.replace$2(n,t,-1,i)},replace$1:function(n,t,i){if(n==null)throw new System.ArgumentNullException("input");var r=this.getRightToLeft()?n.length:0;return this.replace$2(n,t,i,r)},replace$2:function(n,t,i,r){if(n==null)throw new System.ArgumentNullException("input");if(t==null)throw new System.ArgumentNullException("replacement");var u=System.Text.RegularExpressions.RegexParser.parseReplacement(t,this._caps,this._capsize,this._capnames,this._options);return u.replace(this,n,i,r)},replace$3:function(n,t){if(n==null)throw new System.ArgumentNullException("input");var i=this.getRightToLeft()?n.length:0;return this.replace$5(n,t,-1,i)},replace$4:function(n,t,i){if(n==null)throw new System.ArgumentNullException("input");var r=this.getRightToLeft()?n.length:0;return this.replace$5(n,t,i,r)},replace$5:function(n,t,i,r){if(n==null)throw new System.ArgumentNullException("input");return System.Text.RegularExpressions.RegexReplacement.replace(t,this,n,i,r)},split:function(n){if(n==null)throw new System.ArgumentNullException("input");var t=this.getRightToLeft()?n.length:0;return this.split$2(n,0,t)},split$1:function(n,t){if(n==null)throw new System.ArgumentNullException("input");var i=this.getRightToLeft()?n.length:0;return this.split$2(n,t,i)},split$2:function(n,t,i){if(n==null)throw new System.ArgumentNullException("input");return System.Text.RegularExpressions.RegexReplacement.split(this,n,t,i)},_validateMatchTimeout:function(n){var t=n.getTotalMilliseconds();if(-1!==t&&(!(t>0)||!(t<=2147483646)))throw new System.ArgumentOutOfRangeException("matchTimeout");}});Bridge.define("System.Text.RegularExpressions.Capture",{_text:"",_index:0,_length:0,ctor:function(n,t,i){this.$initialize();this._text=n;this._index=t;this._length=i},getIndex:function(){return this._index},getLength:function(){return this._length},getValue:function(){return this._text.substr(this._index,this._length)},toString:function(){return this.getValue()},_getOriginalString:function(){return this._text},_getLeftSubstring:function(){return this._text.slice(0,_index)},_getRightSubstring:function(){return this._text.slice(this._index+this._length,this._text.length)}});Bridge.define("System.Text.RegularExpressions.CaptureCollection",{inherits:function(){return[System.Collections.ICollection]},config:{alias:["getEnumerator","System$Collections$IEnumerable$getEnumerator","getCount","System$Collections$ICollection$getCount"]},_group:null,_capcount:0,_captures:null,ctor:function(n){this.$initialize();this._group=n;this._capcount=n._capcount},getSyncRoot:function(){return this._group},getIsSynchronized:function(){return!1},getIsReadOnly:function(){return!0},getCount:function(){return this._capcount},get:function(n){if(n===this._capcount-1&&n>=0)return this._group;if(n>=this._capcount||n<0)throw new System.ArgumentOutOfRangeException("i");return this._ensureCapturesInited(),this._captures[n]},copyTo:function(n,t){if(n==null)throw new System.ArgumentNullException("array");if(n.length<t+this._capcount)throw new System.IndexOutOfRangeException;for(var u,r=t,i=0;i<this._capcount;r++,i++)u=this.get(i),System.Array.set(n,u,[r])},getEnumerator:function(){return new System.Text.RegularExpressions.CaptureEnumerator(this)},_ensureCapturesInited:function(){var t,n,i,r;if(this._captures==null){for(t=[],t.length=this._capcount,n=0;n<this._capcount-1;n++)i=this._group._caps[n*2],r=this._group._caps[n*2+1],t[n]=new System.Text.RegularExpressions.Capture(this._group._text,i,r);this._capcount>0&&(t[this._capcount-1]=this._group);this._captures=t}}});Bridge.define("System.Text.RegularExpressions.CaptureEnumerator",{inherits:function(){return[System.Collections.IEnumerator]},config:{alias:["getCurrent","System$Collections$IEnumerator$getCurrent","moveNext","System$Collections$IEnumerator$moveNext","reset","System$Collections$IEnumerator$reset"]},_captureColl:null,_curindex:0,ctor:function(n){this.$initialize();this._curindex=-1;this._captureColl=n},moveNext:function(){var n=this._captureColl.getCount();return this._curindex>=n?!1:(this._curindex++,this._curindex<n)},getCurrent:function(){return this.getCapture()},getCapture:function(){if(this._curindex<0||this._curindex>=this._captureColl.getCount())throw new System.InvalidOperationException("Enumeration has either not started or has already finished.");return this._captureColl.get(this._curindex)},reset:function(){this._curindex=-1}});Bridge.define("System.Text.RegularExpressions.Group",{inherits:function(){return[System.Text.RegularExpressions.Capture]},statics:{config:{init:function(){var n=new System.Text.RegularExpressions.Group("",[],0);this.getEmpty=function(){return n}}},synchronized:function(n){if(n==null)throw new System.ArgumentNullException("group");var t=n.getCaptures();return t.getCount()>0&&t.get(0),n}},_caps:null,_capcount:0,_capColl:null,ctor:function(n,t,i){this.$initialize();var r=System.Text.RegularExpressions,u=i===0?0:t[(i-1)*2],f=i===0?0:t[i*2-1];r.Capture.ctor.call(this,n,u,f);this._caps=t;this._capcount=i},getSuccess:function(){return this._capcount!==0},getCaptures:function(){return this._capColl==null&&(this._capColl=new System.Text.RegularExpressions.CaptureCollection(this)),this._capColl}});Bridge.define("System.Text.RegularExpressions.GroupCollection",{inherits:function(){return[System.Collections.ICollection]},config:{alias:["getEnumerator","System$Collections$IEnumerable$getEnumerator","getCount","System$Collections$ICollection$getCount"]},_match:null,_captureMap:null,_groups:null,ctor:function(n,t){this.$initialize();this._match=n;this._captureMap=t},getSyncRoot:function(){return this._match},getIsSynchronized:function(){return!1},getIsReadOnly:function(){return!0},getCount:function(){return this._match._matchcount.length},get:function(n){return this._getGroup(n)},getByName:function(n){if(this._match._regex==null)return System.Text.RegularExpressions.Group.getEmpty();var t=this._match._regex.groupNumberFromName(n);return this._getGroup(t)},copyTo:function(n,t){var r,f,u,i;if(n==null)throw new System.ArgumentNullException("array");if(r=this.getCount(),n.length<t+r)throw new System.IndexOutOfRangeException;for(u=t,i=0;i<r;u++,i++)f=this._getGroup(i),System.Array.set(n,f,[u])},getEnumerator:function(){return new System.Text.RegularExpressions.GroupEnumerator(this)},_getGroup:function(n){var t,i;return this._captureMap!=null?(i=this._captureMap[n],t=i==null?System.Text.RegularExpressions.Group.getEmpty():this._getGroupImpl(i)):t=n>=this._match._matchcount.length||n<0?System.Text.RegularExpressions.Group.getEmpty():this._getGroupImpl(n),t},_getGroupImpl:function(n){return n===0?this._match:(this._ensureGroupsInited(),this._groups[n])},_ensureGroupsInited:function(){var n,i,r,u,t;if(this._groups==null){for(n=[],n.length=this._match._matchcount.length,n.length>0&&(n[0]=this._match),t=0;t<n.length-1;t++)i=this._match._text,r=this._match._matches[t+1],u=this._match._matchcount[t+1],n[t+1]=new System.Text.RegularExpressions.Group(i,r,u);this._groups=n}}});Bridge.define("System.Text.RegularExpressions.GroupEnumerator",{inherits:function(){return[System.Collections.IEnumerator]},config:{alias:["getCurrent","System$Collections$IEnumerator$getCurrent","moveNext","System$Collections$IEnumerator$moveNext","reset","System$Collections$IEnumerator$reset"]},_groupColl:null,_curindex:0,ctor:function(n){this.$initialize();this._curindex=-1;this._groupColl=n},moveNext:function(){var n=this._groupColl.getCount();return this._curindex>=n?!1:(this._curindex++,this._curindex<n)},getCurrent:function(){return this.getCapture()},getCapture:function(){if(this._curindex<0||this._curindex>=this._groupColl.getCount())throw new System.InvalidOperationException("Enumeration has either not started or has already finished.");return this._groupColl.get(this._curindex)},reset:function(){this._curindex=-1}});Bridge.define("System.Text.RegularExpressions.Match",{inherits:function(){return[System.Text.RegularExpressions.Group]},statics:{config:{init:function(){var n=new System.Text.RegularExpressions.Match(null,1,"",0,0,0);this.getEmpty=function(){return n}}},synchronized:function(n){if(n==null)throw new System.ArgumentNullException("match");for(var i=n.getGroups(),u=i.getCount(),r,t=0;t<u;t++)r=i.get(t),System.Text.RegularExpressions.Group.synchronized(r);return n}},_regex:null,_matchcount:null,_matches:null,_textbeg:0,_textend:0,_textstart:0,_groupColl:null,_textpos:0,ctor:function(n,t,i,r,u,f){var s,o,e;for(this.$initialize(),s=System.Text.RegularExpressions,o=[0,0],s.Group.ctor.call(this,i,o,0),this._regex=n,this._matchcount=[],this._matchcount.length=t,e=0;e<t;e++)this._matchcount[e]=0;this._matches=[];this._matches.length=t;this._matches[0]=o;this._textbeg=r;this._textend=r+u;this._textstart=f},getGroups:function(){return this._groupColl==null&&(this._groupColl=new System.Text.RegularExpressions.GroupCollection(this,null)),this._groupColl},nextMatch:function(){return this._regex==null?this:this._regex._runner.run(!1,this._length,this._text,this._textbeg,this._textend-this._textbeg,this._textpos)},result:function(n){if(n==null)throw new System.ArgumentNullException("replacement");if(this._regex==null)throw new System.NotSupportedException("Result cannot be called on a failed Match.");var t=System.Text.RegularExpressions.RegexParser.parseReplacement(n,this._regex._caps,this._regex._capsize,this._regex._capnames,this._regex._options);return t.replacement(this)},_isMatched:function(n){return n<this._matchcount.length&&this._matchcount[n]>0&&this._matches[n][this._matchcount[n]*2-1]!==-2},_addMatch:function(n,t,i){var r,e,f,u;if(this._matches[n]==null&&(this._matches[n]=new Array(2)),r=this._matchcount[n],r*2+2>this._matches[n].length){for(e=this._matches[n],f=new Array(r*8),u=0;u<r*2;u++)f[u]=e[u];this._matches[n]=f}this._matches[n][r*2]=t;this._matches[n][r*2+1]=i;this._matchcount[n]=r+1},_tidy:function(n){var t=this._matches[0];this._index=t[0];this._length=t[1];this._textpos=n;this._capcount=this._matchcount[0]},_groupToStringImpl:function(n){var t=this._matchcount[n];if(t===0)return"";var i=this._matches[n],r=i[(t-1)*2],u=i[t*2-1];return this._text.slice(r,r+u)},_lastGroupToStringImpl:function(){return this._groupToStringImpl(this._matchcount.length-1)}});Bridge.define("System.Text.RegularExpressions.MatchSparse",{inherits:function(){return[System.Text.RegularExpressions.Match]},_caps:null,ctor:function(n,t,i,r,u,f,e){this.$initialize();var o=System.Text.RegularExpressions;o.Match.ctor.call(this,n,i,r,u,f,e);this._caps=t},getGroups:function(){return this._groupColl==null&&(this._groupColl=new System.Text.RegularExpressions.GroupCollection(this,this._caps)),this._groupColl}});Bridge.define("System.Text.RegularExpressions.MatchCollection",{inherits:function(){return[System.Collections.ICollection]},config:{alias:["getEnumerator","System$Collections$IEnumerable$getEnumerator","getCount","System$Collections$ICollection$getCount"]},_regex:null,_input:null,_beginning:0,_length:0,_startat:0,_prevlen:0,_matches:null,_done:!1,ctor:function(n,t,i,r,u){if(this.$initialize(),u<0||u>t.Length)throw new System.ArgumentOutOfRangeException("startat");this._regex=n;this._input=t;this._beginning=i;this._length=r;this._startat=u;this._prevlen=-1;this._matches=[]},getCount:function(){return this._done||this._getMatch(2147483647),this._matches.length},getSyncRoot:function(){return this},getIsSynchronized:function(){return!1},getIsReadOnly:function(){return!0},get:function(n){var t=this._getMatch(n);if(t==null)throw new System.ArgumentOutOfRangeException("i");return t},copyTo:function(n,t){var r,f,u,i;if(n==null)throw new System.ArgumentNullException("array");if(r=this.getCount(),n.length<t+r)throw new System.IndexOutOfRangeException;for(u=t,i=0;i<r;u++,i++)f=this._getMatch(i),System.Array.set(n,f,[u])},getEnumerator:function(){return new System.Text.RegularExpressions.MatchEnumerator(this)},_getMatch:function(n){if(n<0)return null;if(this._matches.length>n)return this._matches[n];if(this._done)return null;var t;do{if(t=this._regex._runner.run(!1,this._prevLen,this._input,this._beginning,this._length,this._startat),!t.getSuccess())return this._done=!0,null;this._matches.push(t);this._prevLen=t._length;this._startat=t._textpos}while(this._matches.length<=n);return t}});Bridge.define("System.Text.RegularExpressions.MatchEnumerator",{inherits:function(){return[System.Collections.IEnumerator]},config:{alias:["getCurrent","System$Collections$IEnumerator$getCurrent","moveNext","System$Collections$IEnumerator$moveNext","reset","System$Collections$IEnumerator$reset"]},_matchcoll:null,_match:null,_curindex:0,_done:!1,ctor:function(n){this.$initialize();this._matchcoll=n},moveNext:function(){return this._done?!1:(this._match=this._matchcoll._getMatch(this._curindex),this._curindex++,this._match==null)?(this._done=!0,!1):!0},getCurrent:function(){if(this._match==null)throw new System.InvalidOperationException("Enumeration has either not started or has already finished.");return this._match},reset:function(){this._curindex=0;this._done=!1;this._match=null}});Bridge.define("System.Text.RegularExpressions.RegexOptions",{statics:{None:0,IgnoreCase:1,Multiline:2,ExplicitCapture:4,Compiled:8,Singleline:16,IgnorePatternWhitespace:32,RightToLeft:64,ECMAScript:256,CultureInvariant:512},$kind:"enum",$flags:!0});Bridge.define("System.Text.RegularExpressions.RegexRunner",{statics:{},_runregex:null,_netEngine:null,_runtext:"",_runtextpos:0,_runtextbeg:0,_runtextend:0,_runtextstart:0,_quick:!1,_prevlen:0,ctor:function(n){if(this.$initialize(),n==null)throw new System.ArgumentNullException("regex");this._runregex=n;var i=n.getOptions(),t=System.Text.RegularExpressions.RegexOptions,r=(i&t.IgnoreCase)===t.IgnoreCase,u=(i&t.Multiline)===t.Multiline,f=(i&t.Singleline)===t.Singleline,e=(i&t.IgnorePatternWhitespace)===t.IgnorePatternWhitespace,o=(i&t.ExplicitCapture)===t.ExplicitCapture,s=n._matchTimeout.getTotalMilliseconds();this._netEngine=new System.Text.RegularExpressions.RegexEngine(n._pattern,r,u,f,e,o,s)},run:function(n,t,i,r,u,f){var e,o,s,h;if(f<0||f>i.Length)throw new System.ArgumentOutOfRangeException("start","Start index cannot be less than 0 or greater than input length.");if(u<0||u>i.Length)throw new ArgumentOutOfRangeException("length","Length cannot be less than 0 or exceed input length.");if(this._runtext=i,this._runtextbeg=r,this._runtextend=r+u,this._runtextstart=f,this._quick=n,this._prevlen=t,this._runregex.getRightToLeft()?(e=this._runtextbeg,o=-1):(e=this._runtextend,o=1),this._prevlen===0){if(this._runtextstart===e)return System.Text.RegularExpressions.Match.getEmpty();this._runtextstart+=o}return s=this._netEngine.match(this._runtext,this._runtextstart),h=this._convertNetEngineResults(s),h},parsePattern:function(){return this._netEngine.parsePattern()},_convertNetEngineResults:function(n){var f,i,t,e,o,r,u,s;if(n.success&&this._quick)return null;if(!n.success)return System.Text.RegularExpressions.Match.getEmpty();for(f=this.parsePattern(),i=f.sparseSettings.isSparse?new System.Text.RegularExpressions.MatchSparse(this._runregex,f.sparseSettings.sparseSlotMap,n.groups.length,this._runtext,0,this._runtext.length,this._runtextstart):new System.Text.RegularExpressions.Match(this._runregex,n.groups.length,this._runtext,0,this._runtext.length,this._runtextstart),r=0;r<n.groups.length;r++)for(t=n.groups[r],o=0,t.descriptor!=null&&(o=this._runregex.groupNumberFromName(t.descriptor.name)),u=0;u<t.captures.length;u++)e=t.captures[u],i._addMatch(o,e.capIndex,e.capLength);return s=n.capIndex+n.capLength,i._tidy(s),i}});Bridge.define("System.Text.RegularExpressions.RegexParser",{statics:{_Q:5,_S:4,_Z:3,_X:2,_E:1,_category:[0,0,0,0,0,0,0,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,3,4,0,0,0,4,4,5,5,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,4,0,0,0],escape:function(n){for(var r,i,u,t=0;t<n.length;t++)if(System.Text.RegularExpressions.RegexParser._isMetachar(n[t])){r="";i=n[t];r+=n.slice(0,t);do{r+="\\";switch(i){case"\n":i="n";break;case"\r":i="r";break;case"\t":i="t";break;case"\f":i="f"}for(r+=i,t++,u=t;t<n.length;){if(i=n[t],System.Text.RegularExpressions.RegexParser._isMetachar(i))break;t++}r+=n.slice(u,t)}while(t<n.length);return r}return n},unescape:function(n){for(var f=System.Globalization.CultureInfo.invariantCulture,i,u,r,t=0;t<n.length;t++)if(n[t]==="\\"){i="";r=new System.Text.RegularExpressions.RegexParser(f);r._setPattern(n);i+=n.slice(0,t);do{for(t++,r._textto(t),t<n.length&&(i+=r._scanCharEscape()),t=r._textpos(),u=t;t<n.length&&n[t]!=="\\";)t++;i+=n.slice(u,t)}while(t<n.length);return i}return n},parseReplacement:function(n,t,i,r,u){var o=System.Globalization.CultureInfo.getCurrentCulture(),f=new System.Text.RegularExpressions.RegexParser(o),e;return f._options=u,f._noteCaptures(t,i,r),f._setPattern(n),e=f._scanReplacement(),new System.Text.RegularExpressions.RegexReplacement(n,e,t)},_isMetachar:function(n){var t=n.charCodeAt(0);return t<="|".charCodeAt(0)&&System.Text.RegularExpressions.RegexParser._category[t]>=System.Text.RegularExpressions.RegexParser._E}},_caps:null,_capsize:0,_capnames:null,_pattern:"",_currentPos:0,_concatenation:null,_culture:null,config:{init:function(){this._options=System.Text.RegularExpressions.RegexOptions.None}},ctor:function(n){this.$initialize();this._culture=n;this._caps={}},_noteCaptures:function(n,t,i){this._caps=n;this._capsize=t;this._capnames=i},_setPattern:function(n){n==null&&(n="");this._pattern=n||"";this._currentPos=0},_scanReplacement:function(){this._concatenation=new System.Text.RegularExpressions.RegexNode(System.Text.RegularExpressions.RegexNode.Concatenate,this._options);for(var n,t,i;;){if(n=this._charsRight(),n===0)break;for(t=this._textpos();n>0&&this._rightChar()!=="$";)this._moveRight(),n--;this._addConcatenate(t,this._textpos()-t);n>0&&this._moveRightGetChar()==="$"&&(i=this._scanDollar(),this._concatenation.addChild(i))}return this._concatenation},_addConcatenate:function(n,t){var i,r,u;t!==0&&(t>1?(r=this._pattern.slice(n,n+t),i=new System.Text.RegularExpressions.RegexNode(System.Text.RegularExpressions.RegexNode.Multi,this._options,r)):(u=this._pattern[n],i=new System.Text.RegularExpressions.RegexNode(System.Text.RegularExpressions.RegexNode.One,this._options,u)),this._concatenation.addChild(i))},_useOptionE:function(){return(this._options&System.Text.RegularExpressions.RegexOptions.ECMAScript)!=0},_makeException:function(n){return new System.ArgumentException("Incorrect pattern. "+n)},_scanDollar:function(){var o=214748364,n,f,i,e,h;if(this._charsRight()===0)return new System.Text.RegularExpressions.RegexNode(System.Text.RegularExpressions.RegexNode.One,this._options,"$");var t=this._rightChar(),r,s=this._textpos(),u=s;if(t==="{"&&this._charsRight()>1?(r=!0,this._moveRight(),t=this._rightChar()):r=!1,t>="0"&&t<="9"){if(!r&&this._useOptionE()){for(n=-1,i=t-"0",this._moveRight(),this._isCaptureSlot(i)&&(n=i,u=this._textpos());this._charsRight()>0&&(t=this._rightChar())>="0"&&t<="9";){if(f=t-"0",i>o||i===o&&f>7)throw this._makeException("Capture group is out of range.");i=i*10+f;this._moveRight();this._isCaptureSlot(i)&&(n=i,u=this._textpos())}if(this._textto(u),n>=0)return new System.Text.RegularExpressions.RegexNode(System.Text.RegularExpressions.RegexNode.Ref,this._options,n)}else if(n=this._scanDecimal(),(!r||this._charsRight()>0&&this._moveRightGetChar()==="}")&&this._isCaptureSlot(n))return new System.Text.RegularExpressions.RegexNode(System.Text.RegularExpressions.RegexNode.Ref,this._options,n)}else if(r&&this._isWordChar(t)){if(e=this._scanCapname(),this._charsRight()>0&&this._moveRightGetChar()==="}"&&this._isCaptureName(e))return h=this._captureSlotFromName(e),new System.Text.RegularExpressions.RegexNode(System.Text.RegularExpressions.RegexNode.Ref,this._options,h)}else if(!r){n=1;switch(t){case"$":return this._moveRight(),new System.Text.RegularExpressions.RegexNode(System.Text.RegularExpressions.RegexNode.One,this._options,"$");case"&":n=0;break;case"`":n=System.Text.RegularExpressions.RegexReplacement.LeftPortion;break;case"'":n=System.Text.RegularExpressions.RegexReplacement.RightPortion;break;case"+":n=System.Text.RegularExpressions.RegexReplacement.LastGroup;break;case"_":n=System.Text.RegularExpressions.RegexReplacement.WholeString}if(n!==1)return this._moveRight(),new System.Text.RegularExpressions.RegexNode(System.Text.RegularExpressions.RegexNode.Ref,this._options,n)}return this._textto(s),new System.Text.RegularExpressions.RegexNode(System.Text.RegularExpressions.RegexNode.One,this._options,"$")},_scanDecimal:function(){for(var r=214748364,n=0,t,i;this._charsRight()>0;){if(t=this._rightChar(),t<"0"||t>"9")break;if(i=t-"0",this._moveRight(),n>r||n===r&&i>7)throw this._makeException("Capture group is out of range.");n*=10;n+=i}return n},_scanOctal:function(){var i,n,t;for(t=3,t>this._charsRight()&&(t=this._charsRight()),n=0;t>0&&(i=this._rightChar()-"0")<=7;t-=1)if(this._moveRight(),n*=8,n+=i,this._useOptionE()&&n>=32)break;return n&=255,String.fromCharCode(n)},_scanHex:function(n){var t,i;if(t=0,this._charsRight()>=n)for(;n>0&&(i=this._hexDigit(this._moveRightGetChar()))>=0;n-=1)t*=16,t+=i;if(n>0)throw this._makeException("Insufficient hexadecimal digits.");return t},_hexDigit:function(n){var t,i=n.charCodeAt(0);return(t=i-"0".charCodeAt(0))<=9?t:(t=i-"a".charCodeAt(0))<=5?t+10:(t=i-"A".charCodeAt(0))<=5?t+10:-1},_scanControl:function(){if(this._charsRight()<=0)throw this._makeException("Missing control character.");var t=this._moveRightGetChar(),n=t.charCodeAt(0);if(n>="a".charCodeAt(0)&&n<="z".charCodeAt(0)&&(n=n-("a".charCodeAt(0)-"A".charCodeAt(0))),(n=n-"@".charCodeAt(0))<" ".charCodeAt(0))return String.fromCharCode(n);throw this._makeException("Unrecognized control character.");},_scanCapname:function(){for(var n=this._textpos();this._charsRight()>0;)if(!this._isWordChar(this._moveRightGetChar())){this._moveLeft();break}return _pattern.slice(n,this._textpos())},_scanCharEscape:function(){var n=this._moveRightGetChar(),t;if(n>="0"&&n<="7")return this._moveLeft(),this._scanOctal();switch(n){case"x":return this._scanHex(2);case"u":return this._scanHex(4);case"a":return"\x07";case"b":return"\b";case"e":return"\x1b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return"\t";case"v":return"\x0b";case"c":return this._scanControl();default:if(t=n==="8"||n==="9"||n==="_",t||!this._useOptionE()&&this._isWordChar(n))throw this._makeException("Unrecognized escape sequence \\"+n+".");return n}},_captureSlotFromName:function(n){return this._capnames[n]},_isCaptureSlot:function(n){return this._caps!=null?this._caps[n]!=null:n>=0&&n<this._capsize},_isCaptureName:function(n){return this._capnames==null?!1:_capnames[n]!=null},_isWordChar:function(n){return System.Char.isLetter(n.charCodeAt(0))},_charsRight:function(){return this._pattern.length-this._currentPos},_rightChar:function(){return this._pattern[this._currentPos]},_moveRightGetChar:function(){return this._pattern[this._currentPos++]},_moveRight:function(){this._currentPos++},_textpos:function(){return this._currentPos},_textto:function(n){this._currentPos=n},_moveLeft:function(){this._currentPos--}});Bridge.define("System.Text.RegularExpressions.RegexNode",{statics:{One:9,Multi:12,Ref:13,Empty:23,Concatenate:25},_type:0,_str:null,_children:null,_next:null,_m:0,config:{init:function(){this._options=System.Text.RegularExpressions.RegexOptions.None}},ctor:function(n,t,i){this.$initialize();this._type=n;this._options=t;n===System.Text.RegularExpressions.RegexNode.Ref?this._m=i:this._str=i||null},addChild:function(n){this._children==null&&(this._children=[]);var t=n._reduce();this._children.push(t);t._next=this},childCount:function(){return this._children==null?0:this._children.length},child:function(n){return this._children[n]},_reduce:function(){var n;switch(this._type){case System.Text.RegularExpressions.RegexNode.Concatenate:n=this._reduceConcatenation();break;default:n=this}return n},_reduceConcatenation:function(){var e=!1,o=0,u,n,i,r,t,f;if(this._children==null)return new System.Text.RegularExpressions.RegexNode(System.Text.RegularExpressions.RegexNode.Empty,this._options);for(r=0,t=0;r<this._children.length;r++,t++)if(n=this._children[r],t<r&&(this._children[t]=n),n._type===System.Text.RegularExpressions.RegexNode.Concatenate&&n._isRightToLeft()){for(f=0;f<n._children.length;f++)n._children[f]._next=this;this._children.splice.apply(this._children,[r+1,0].concat(n._children));t--}else if(n._type===System.Text.RegularExpressions.RegexNode.Multi||n._type===System.Text.RegularExpressions.RegexNode.One){if(u=n._options&(System.Text.RegularExpressions.RegexOptions.RightToLeft|System.Text.RegularExpressions.RegexOptions.IgnoreCase),!e||o!==u){e=!0;o=u;continue}i=this._children[--t];i._type===System.Text.RegularExpressions.RegexNode.One&&(i._type=System.Text.RegularExpressions.RegexNode.Multi,i._str=i._str);(u&System.Text.RegularExpressions.RegexOptions.RightToLeft)==0?i._str+=n._str:i._str=n._str+i._str}else n._type===System.Text.RegularExpressions.RegexNode.Empty?t--:e=!1;return t<r&&this._children.splice(t,r-t),this._stripEnation(System.Text.RegularExpressions.RegexNode.Empty)},_stripEnation:function(n){switch(this.childCount()){case 0:return new t.RegexNode(n,this._options);case 1:return this.child(0);default:return this}},_isRightToLeft:function(){return(this._options&System.Text.RegularExpressions.RegexOptions.RightToLeft)>0?!0:!1}});Bridge.define("System.Text.RegularExpressions.RegexReplacement",{statics:{replace:function(n,t,i,r,u){var f,o,e,s,h,c,l;if(n==null)throw new System.ArgumentNullException("evaluator");if(r<-1)throw new System.ArgumentOutOfRangeException("count","Count cannot be less than -1.");if(u<0||u>i.length)throw new System.ArgumentOutOfRangeException("startat","Start index cannot be less than 0 or greater than input length.");if(r===0)return i;if(f=t.match$1(i,u),f.getSuccess()){if(o="",t.getRightToLeft()){c=[];e=i.length;do{if(s=f.getIndex(),h=f.getLength(),s+h!==e&&c.push(i.slice(s+h,e)),e=s,c.push(n(f)),--r==0)break;f=f.nextMatch()}while(f.getSuccess());for(o=new StringBuilder,e>0&&(o+=o.slice(0,e)),l=c.length-1;l>=0;l--)o+=c[l]}else{e=0;do{if(s=f.getIndex(),h=f.getLength(),s!==e&&(o+=i.slice(e,s)),e=s+h,o+=n(f),--r==0)break;f=f.nextMatch()}while(f.getSuccess());e<i.length&&(o+=i.slice(e,i.length))}return o}return i},split:function(n,t,i,r){var f,u,e,o,s,c,h,l;if(i<0)throw new System.ArgumentOutOfRangeException("count","Count can't be less than 0.");if(r<0||r>t.length)throw new System.ArgumentOutOfRangeException("startat","Start index cannot be less than 0 or greater than input length.");if(f=[],i===1)return f.push(t),f;if(--i,u=n.match$1(t,r),u.getSuccess())if(n.getRightToLeft()){for(o=t.length;;){for(s=u.getIndex(),c=u.getLength(),h=u.getGroups(),l=h.getCount(),f.push(t.slice(s+c,o)),o=s,e=1;e<l;e++)u._isMatched(e)&&f.push(h.get(e).toString());if(--i,i===0)break;if(u=u.nextMatch(),!u.getSuccess())break}f.push(t.slice(0,o));f.reverse()}else{for(o=0;;){for(s=u.getIndex(),c=u.getLength(),h=u.getGroups(),l=h.getCount(),f.push(t.slice(o,s)),o=s+c,e=1;e<l;e++)u._isMatched(e)&&f.push(h.get(e).toString());if(--i,i===0)break;if(u=u.nextMatch(),!u.getSuccess())break}f.push(t.slice(o,t.length))}else f.push(t);return f},Specials:4,LeftPortion:-1,RightPortion:-2,LastGroup:-3,WholeString:-4},_rep:"",_strings:[],_rules:[],ctor:function(n,t,i){if(this.$initialize(),this._rep=n,t._type!==System.Text.RegularExpressions.RegexNode.Concatenate)throw new System.ArgumentException("Replacement error.");for(var r="",u=[],e=[],f,o,s=0;s<t.childCount();s++){o=t.child(s);switch(o._type){case System.Text.RegularExpressions.RegexNode.Multi:case System.Text.RegularExpressions.RegexNode.One:r+=o._str;break;case System.Text.RegularExpressions.RegexNode.Ref:r.length>0&&(e.push(u.length),u.push(r),r="");f=o._m;i!=null&&f>=0&&(f=i[f]);e.push(-System.Text.RegularExpressions.RegexReplacement.Specials-1-f);break;default:throw new System.ArgumentException("Replacement error.");}}r.length>0&&(e.push(u.length),u.push(r));this._strings=u;this._rules=e},getPattern:function(){return _rep},replacement:function(n){return this._replacementImpl("",n)},replace:function(n,t,i,r){var u,e,f,o,s,h,c;if(i<-1)throw new System.ArgumentOutOfRangeException("count","Count cannot be less than -1.");if(r<0||r>t.length)throw new System.ArgumentOutOfRangeException("startat","Start index cannot be less than 0 or greater than input length.");if(i===0)return t;if(u=n.match$1(t,r),u.getSuccess()){if(e="",n.getRightToLeft()){h=[];f=t.length;do{if(o=u.getIndex(),s=u.getLength(),o+s!==f&&h.push(t.slice(o+s,f)),f=o,this._replacementImplRTL(h,u),--i==0)break;u=u.nextMatch()}while(u.getSuccess());for(f>0&&(e+=e.slice(0,f)),c=h.length-1;c>=0;c--)e+=h[c]}else{f=0;do{if(o=u.getIndex(),s=u.getLength(),o!==f&&(e+=t.slice(f,o)),f=o+s,e=this._replacementImpl(e,u),--i==0)break;u=u.nextMatch()}while(u.getSuccess());f<t.length&&(e+=t.slice(f,t.length))}return e}return t},_replacementImpl:function(n,t){for(var u=System.Text.RegularExpressions.RegexReplacement.Specials,i,r=0;r<this._rules.length;r++)if(i=this._rules[r],i>=0)n+=this._strings[i];else if(i<-u)n+=t._groupToStringImpl(-u-1-i);else switch(-u-1-i){case System.Text.RegularExpressions.RegexReplacement.LeftPortion:n+=t._getLeftSubstring();break;case System.Text.RegularExpressions.RegexReplacement.RightPortion:n+=t._getRightSubstring();break;case System.Text.RegularExpressions.RegexReplacement.LastGroup:n+=t._lastGroupToStringImpl();break;case System.Text.RegularExpressions.RegexReplacement.WholeString:n+=t._getOriginalString()}return n},_replacementImplRTL:function(n,t){for(var u=System.Text.RegularExpressions.RegexReplacement.Specials,i,r=_rules.length-1;r>=0;r--)if(i=this._rules[r],i>=0)n.push(this._strings[i]);else if(i<-u)n.push(t._groupToStringImpl(-u-1-i));else switch(-u-1-i){case System.Text.RegularExpressions.RegexReplacement.LeftPortion:n.push(t._getLeftSubstring());break;case System.Text.RegularExpressions.RegexReplacement.RightPortion:n.push(t._getRightSubstring());break;case System.Text.RegularExpressions.RegexReplacement.LastGroup:n.push(t._lastGroupToStringImpl());break;case System.Text.RegularExpressions.RegexReplacement.WholeString:n.push(t._getOriginalString())}}});Bridge.define("System.Text.RegularExpressions.RegexEngine",{_pattern:"",_patternInfo:null,_text:"",_textStart:0,_timeoutMs:-1,_timeoutTime:-1,_settings:null,_branchType:{base:0,offset:1,lazy:2,greedy:3,or:4},_branchResultKind:{ok:1,endPass:2,nextPass:3,nextBranch:4},ctor:function(n,t,i,r,u,f,e){if(this.$initialize(),n==null)throw new System.ArgumentNullException("pattern");this._pattern=n;this._timeoutMs=e;this._settings={ignoreCase:t,multiline:i,singleline:r,ignoreWhitespace:u,explicitCapture:f}},match:function(n,t){var i;if(n==null)throw new System.ArgumentNullException("text");if(t!=null&&(t<0||t>n.length))throw new System.ArgumentOutOfRangeException("textStart","Start index cannot be less than 0 or greater than input length.");return(this._text=n,this._textStart=t,this._timeoutTime=this._timeoutMs>0?(new Date).getTime()+System.Convert.toInt32(this._timeoutMs+.5):-1,i=this.parsePattern(),i.shouldFail)?this._getEmptyMatch():(this._checkTimeout(),this._scanAndTransformResult(t,i.tokens,!1,null))},parsePattern:function(){if(this._patternInfo==null){var n=System.Text.RegularExpressions.RegexEngineParser,t=n.parsePattern(this._pattern,this._cloneSettings(this._settings));this._patternInfo=t}return this._patternInfo},_scanAndTransformResult:function(n,t,i,r){var u=this._scan(n,this._text.length,t,i,r);return this._collectScanResults(u,n)},_scan:function(n,t,i,r,u){var c=this._branchResultKind,f=[],e,h,o;if(f.grCaptureCache={},e=null,h=null,i.length===0)return o=new System.Text.RegularExpressions.RegexEngineState,o.capIndex=n,o.txtIndex=n,o.capLength=0,o;var l=r?this._branchType.base:this._branchType.offset,a=this._patternInfo.isContiguous?n:t,s=new System.Text.RegularExpressions.RegexEngineBranch(l,n,n,a);for(s.pushPass(0,i,this._cloneSettings(this._settings)),s.started=!0,s.state.txtIndex=n,f.push(s);f.length;){if(e=f[f.length-1],h=this._scanBranch(t,f,e),h===c.ok&&(u==null||e.state.capLength===u))return e.state;this._advanceToNextBranch(f,e);this._checkTimeout()}return null},_scanBranch:function(n,t,i){var r=this._branchResultKind,u,f;if(i.mustFail)return i.mustFail=!1,r.nextBranch;while(i.hasPass()){if(u=i.peekPass(),u.tokens==null||u.tokens.length===0)f=r.endPass;else{if(this._addAlternationBranches(t,i,u)===r.nextBranch)return r.nextBranch;f=this._scanPass(n,t,i,u)}switch(f){case r.nextBranch:return f;case r.nextPass:continue;case r.endPass:case r.ok:i.popPass();break;default:throw new System.InvalidOperationException("Unexpected branch result.");}}return r.ok},_scanPass:function(n,t,i,r){for(var f=this._branchResultKind,s=r.tokens.length,o,u,e;r.index<s;){if(o=r.tokens[r.index],u=r.probe,u==null){if(this._addBranchBeforeProbing(t,i,r,o))return f.nextBranch}else{if(u.value<u.min||u.forced){if(e=this._scanToken(n,t,i,r,o),e!==f.ok)return e;u.value+=1;u.forced=!1;continue}if(this._addBranchAfterProbing(t,i,r,u),u.forced)continue;r.probe=null;r.index++;continue}e=this._scanToken(n,t,i,r,o);switch(e){case f.nextBranch:case f.nextPass:case f.endPass:return e;case f.ok:r.index++;break;default:throw new System.InvalidOperationException("Unexpected branch-pass result.");}}return f.ok},_addAlternationBranches:function(n,t,i){var h=System.Text.RegularExpressions.RegexEngineParser.tokenTypes,c=this._branchType,l=i.tokens.length,o=this._branchResultKind,u,f,e,s,r;if(!i.alternationHandled&&!i.tokens.noAlternation){for(u=[-1],r=0;r<l;r++)s=i.tokens[r],s.type===h.alternation&&u.push(r);if(u.length>1){for(r=0;r<u.length;r++)f=new System.Text.RegularExpressions.RegexEngineBranch(c.or,r,0,u.length,t.state),f.isNotFailing=!0,e=f.peekPass(),e.alternationHandled=!0,e.index=u[r]+1,n.splice(n.length-r,0,f);return n[n.length-u.length].isNotFailing=!1,t.mustFail=!0,i.alternationHandled=!0,o.nextBranch}i.tokens.noAlternation=!0}return o.ok},_addBranchBeforeProbing:function(n,t,i,r){var u=this._tryGetTokenProbe(r),f,e;return u==null?!1:(i.probe=u,f=u.isLazy?this._branchType.lazy:this._branchType.greedy,e=new System.Text.RegularExpressions.RegexEngineBranch(f,u.value,u.min,u.max,t.state),n.push(e),!0)},_addBranchAfterProbing:function(n,t,i,r){var f,e,u;r.isLazy?r.value+1<=r.max&&(f=t.clone(),e=f.peekPass().probe,f.value+=1,e.forced=!0,n.splice(n.length-1,0,f),t.isNotFailing=!0):r.value+1<=r.max&&(u=t.clone(),u.started=!0,u.peekPass().probe=null,u.peekPass().index++,n.splice(n.length-1,0,u),r.forced=!0,t.value+=1,t.isNotFailing=!0)},_tryGetTokenProbe:function(n){var t=n.qtoken,u,i,r;if(t==null)return null;if(u=System.Text.RegularExpressions.RegexEngineParser.tokenTypes,t.type===u.quantifier)switch(t.value){case"*":case"*?":i=0;r=2147483647;break;case"+":case"+?":i=1;r=2147483647;break;case"?":case"??":i=0;r=1;break;default:throw new System.InvalidOperationException("Unexpected quantifier value.");}else if(t.type===u.quantifierN)i=t.data.n,r=t.data.n;else if(t.type===u.quantifierNM)i=t.data.n,r=t.data.m!=null?t.data.m:2147483647;else return null;return new System.Text.RegularExpressions.RegexEngineProbe(i,r,0,t.data.isLazy)},_advanceToNextBranch:function(n,t){if(n.length!==0){var i=n[n.length-1];if(!i.started){i.started=!0;return}if(t!==i)throw new System.InvalidOperationException("Current branch is supposed to be the last one.");if(n.length===1&&t.type===this._branchType.offset)t.value++,t.state.txtIndex=t.value,t.mustFail=!1,t.state.capIndex=null,t.state.capLength=0,t.state.groups.length=0,t.state.passes.length=1,t.state.passes[0].clearState(this._cloneSettings(this._settings)),t.value>t.max&&n.pop();else if(n.pop(),!t.isNotFailing){i=n[n.length-1];this._advanceToNextBranch(n,i);return}}},_collectScanResults:function(n,t){var o=this._patternInfo.groups,a=this._text,l={},s,f,h={},r,e,i,u,c=this._getEmptyMatch();if(n!=null){for(s=n.groups,this._fillMatch(c,n.capIndex,n.capLength,t),u=0;u<s.length;u++)(f=s[u],r=o[f.rawIndex-1],r.constructs.skipCapture)||(e={capIndex:f.capIndex,capLength:f.capLength,value:a.slice(f.capIndex,f.capIndex+f.capLength)},i=h[r.name],i==null?(i={capIndex:0,capLength:0,value:"",success:!1,captures:[e]},h[r.name]=i):i.captures.push(e));for(u=0;u<o.length;u++)(r=o[u],r.constructs.skipCapture)||l[r.name]!==!0&&(i=h[r.name],i==null?i={capIndex:0,capLength:0,value:"",success:!1,captures:[]}:i.captures.length>0&&(e=i.captures[i.captures.length-1],i.capIndex=e.capIndex,i.capLength=e.capLength,i.value=e.value,i.success=!0),l[r.name]=!0,i.descriptor=r,c.groups.push(i))}return c},_scanToken:function(n,t,i,r,u){var f=System.Text.RegularExpressions.RegexEngineParser.tokenTypes,e=this._branchResultKind;switch(u.type){case f.group:case f.groupImnsx:case f.alternationGroup:return this._scanGroupToken(n,t,i,r,u);case f.groupImnsxMisc:return this._scanGroupImnsxToken(u.group.constructs,r.settings);case f.charGroup:return this._scanCharGroupToken(t,i,r,u,!1);case f.charNegativeGroup:return this._scanCharNegativeGroupToken(t,i,r,u,!1);case f.escChar:case f.escCharOctal:case f.escCharHex:case f.escCharUnicode:case f.escCharCtrl:return this._scanLiteral(n,t,i,r,u.data.ch);case f.escCharOther:case f.escCharClass:return this._scanEscapeToken(t,i,r,u);case f.escCharClassCategory:throw new System.NotSupportedException("Unicode Category constructions are not supported.");case f.escCharClassBlock:throw new System.NotSupportedException("Unicode Named block constructions are not supported.");case f.escCharClassDot:return this._scanDotToken(n,t,i,r);case f.escBackrefNumber:return this._scanBackrefNumberToken(n,t,i,r,u);case f.escBackrefName:return this._scanBackrefNameToken(n,t,i,r,u);case f.anchor:case f.escAnchor:return this._scanAnchorToken(n,t,i,r,u);case f.groupConstruct:case f.groupConstructName:case f.groupConstructImnsx:case f.groupConstructImnsxMisc:return e.ok;case f.alternationGroupCondition:case f.alternationGroupRefNameCondition:case f.alternationGroupRefNumberCondition:return this._scanAlternationConditionToken(n,t,i,r,u);case f.alternation:return e.endPass;case f.commentInline:case f.commentXMode:return e.ok;default:return this._scanLiteral(n,t,i,r,u.value)}},_scanGroupToken:function(n,t,i,r,u){var h=System.Text.RegularExpressions.RegexEngineParser.tokenTypes,c=this._branchResultKind,o=i.state.txtIndex,l,f;if(r.onHold){if(u.type===h.group){var a=u.group.rawIndex,s=r.onHoldTextIndex,v=o-s,e=t.grCaptureCache[a];if(e==null&&(e={},t.grCaptureCache[a]=e),l=s.toString()+"_"+v.toString(),e[l]==null)e[l]=!0;else return c.nextBranch;u.group.constructs.emptyCapture||(u.group.isBalancing?i.state.logCaptureGroupBalancing(u.group,s):i.state.logCaptureGroup(u.group,s,v))}return r.onHold=!1,r.onHoldTextIndex=-1,c.ok}if(u.type===h.group||u.type===h.groupImnsx){if(f=u.group.constructs,this._scanGroupImnsxToken(f,r.settings),f.isPositiveLookahead||f.isNegativeLookahead||f.isPositiveLookbehind||f.isNegativeLookbehind)return this._scanLook(i,o,n,u);if(f.isNonbacktracking)return this._scanNonBacktracking(i,o,n,u)}return r.onHoldTextIndex=o,r.onHold=!0,i.pushPass(0,u.children,this._cloneSettings(r.settings)),c.nextPass},_scanGroupImnsxToken:function(n,t){var i=this._branchResultKind;return n.isIgnoreCase!=null&&(t.ignoreCase=n.isIgnoreCase),n.isMultiline!=null&&(t.multiline=n.isMultiline),n.isSingleLine!=null&&(t.singleline=n.isSingleLine),n.isIgnoreWhitespace!=null&&(t.ignoreWhitespace=n.isIgnoreWhitespace),n.isExplicitCapture!=null&&(t.explicitCapture=n.isExplicitCapture),i.ok},_scanAlternationConditionToken:function(n,t,i,r,u){var o=System.Text.RegularExpressions.RegexEngineParser.tokenTypes,f=this._branchResultKind,c=u.children,l=i.state.txtIndex,e=f.nextBranch,s,h;return u.type===o.alternationGroupRefNameCondition||u.type===o.alternationGroupRefNumberCondition?(s=i.state.resolveBackref(u.data.packedSlotId),e=s!=null?f.ok:f.nextBranch):(h=this._scan(l,n,c,!0,null),this._combineScanResults(i,h)&&(e=f.ok)),e===f.nextBranch&&r.tokens.noAlternation&&(e=f.endPass),e},_scanLook:function(n,t,i,r){var u=r.group.constructs,e=this._branchResultKind,f=r.children,o,s,h=u.isPositiveLookahead||u.isNegativeLookahead,c=u.isPositiveLookbehind||u.isNegativeLookbehind;return h||c?(f=f.slice(1,f.length),o=u.isPositiveLookahead||u.isPositiveLookbehind,s=h?this._scanLookAhead(n,t,i,f):this._scanLookBehind(n,t,i,f),o===s?e.ok:e.nextBranch):null},_scanLookAhead:function(n,t,i,r){var u=this._scan(t,i,r,!0,null);return this._combineScanResults(n,u)},_scanLookBehind:function(n,t,i,r){for(var u=t,f,e;u>=0;){if(f=t-u,e=this._scan(u,i,r,!0,f),this._combineScanResults(n,e))return!0;--u}return!1},_scanNonBacktracking:function(n,t,i,r){var e=this._branchResultKind,u=r.children,f;return(u=u.slice(1,u.length),f=this._scan(t,i,u,!0,null),!f)?e.nextBranch:(n.state.logCapture(f.capLength),e.ok)},_scanLiteral:function(n,t,i,r,u){var e=this._branchResultKind,o=i.state.txtIndex,f;if(o+u.length>n)return e.nextBranch;if(r.settings.ignoreCase){for(f=0;f<u.length;f++)if(this._text[o+f].toLowerCase()!==u[f].toLowerCase())return e.nextBranch}else for(f=0;f<u.length;f++)if(this._text[o+f]!==u[f])return e.nextBranch;return i.state.logCapture(u.length),e.ok},_scanWithJsRegex:function(n,t,i,r,u){var o=this._branchResultKind,h=t.state.txtIndex,e=this._text[h],s,f;return(e==null&&(e=""),s=i.settings.ignoreCase?"i":"",f=r.rgx,f==null&&(u==null&&(u=r.value),f=new RegExp(u,s),r.rgx=f),f.test(e))?(t.state.logCapture(e.length),o.ok):o.nextBranch},_scanWithJsRegex2:function(n,t){var r=this._branchResultKind,i=this._text[n],u;return(i==null&&(i=""),u=new RegExp(t,""),u.test(i))?r.ok:r.nextBranch},_scanCharGroupToken:function(n,t,i,r,u){var l=System.Text.RegularExpressions.RegexEngineParser.tokenTypes,f=this._branchResultKind,w=t.state.txtIndex,e=this._text[w],s,a,h,o,v,c,y,p;if(e==null)return f.nextBranch;if(h=e.charCodeAt(0),o=r.data.ranges,r.data.substractToken!=null){if(r.data.substractToken.type===l.charGroup)y=this._scanCharGroupToken(n,t,i,r.data.substractToken,!0);else if(r.data.substractToken.type===l.charNegativeGroup)y=this._scanCharNegativeGroupToken(n,t,i,r.data.substractToken,!0);else throw new System.InvalidOperationException("Unexpected substuct group token.");if(y===f.ok)return r.type===l.charGroup?f.nextBranch:f.ok}if(o.charClassToken!=null&&(p=this._scanWithJsRegex(n,t,i,o.charClassToken),p===f.ok))return f.ok;for(a=0;a<2;a++){for(s=0;s<o.length;s++){if(v=o[s],v.n>h)break;if(h<=v.m)return u||t.state.logCapture(1),f.ok}c==null&&i.settings.ignoreCase&&(c=e.toUpperCase(),e=e===c?e.toLowerCase():c,h=e.charCodeAt(0))}return f.nextBranch},_scanCharNegativeGroupToken:function(n,t,i,r,u){var f=this._branchResultKind,o=t.state.txtIndex,s=this._text[o],e;return s==null?f.nextBranch:(e=this._scanCharGroupToken(n,t,i,r,!0),e===f.ok)?f.nextBranch:(u||t.state.logCapture(1),f.ok)},_scanEscapeToken:function(n,t,i,r){return this._scanWithJsRegex(n,t,i,r)},_scanDotToken:function(n,t,i,r){var u=this._branchResultKind,f=i.state.txtIndex;if(r.settings.singleline){if(f<n)return i.state.logCapture(1),u.ok}else if(f<n&&this._text[f]!=="\n")return i.state.logCapture(1),u.ok;return u.nextBranch},_scanBackrefNumberToken:function(n,t,i,r,u){var o=this._branchResultKind,f=i.state.resolveBackref(u.data.slotId),e;return f==null?o.nextBranch:(e=this._text.slice(f.capIndex,f.capIndex+f.capLength),this._scanLiteral(n,t,i,r,e))},_scanBackrefNameToken:function(n,t,i,r,u){var o=this._branchResultKind,f=i.state.resolveBackref(u.data.slotId),e;return f==null?o.nextBranch:(e=this._text.slice(f.capIndex,f.capIndex+f.capLength),this._scanLiteral(n,t,i,r,e))},_scanAnchorToken:function(n,t,i,r,u){var e=this._branchResultKind,f=i.state.txtIndex,o,s;if(u.value==="\\b"||u.value==="\\B"){if(o=f>0&&this._scanWithJsRegex2(f-1,"\\w")===e.ok,s=this._scanWithJsRegex2(f,"\\w")===e.ok,o===s==(u.value==="\\B"))return e.ok}else if(u.value==="^"){if(f===0||r.settings.multiline&&this._text[f-1]==="\n")return e.ok}else if(u.value==="$"){if(f===n||r.settings.multiline&&this._text[f]==="\n")return e.ok}else if(u.value==="\\A"){if(f===0)return e.ok}else if(u.value==="\\z"){if(f===n)return e.ok}else if(u.value==="\\Z"){if(f===n||f===n-1&&this._text[f]==="\n")return e.ok}else if(u.value==="\\G")return e.ok;return e.nextBranch},_cloneSettings:function(n){return{ignoreCase:n.ignoreCase,multiline:n.multiline,singleline:n.singleline,ignoreWhitespace:n.ignoreWhitespace,explicitCapture:n.explicitCapture}},_combineScanResults:function(n,t){if(t!=null){for(var u=n.state.groups,r=t.groups,f=r.length,i=0;i<f;++i)u.push(r[i]);return!0}return!1},_getEmptyMatch:function(){return{capIndex:0,capLength:0,success:!1,value:"",groups:[],captures:[]}},_fillMatch:function(n,t,i,r){t==null&&(t=r);n.capIndex=t;n.capLength=i;n.success=!0;n.value=this._text.slice(t,t+i);n.groups.push({capIndex:t,capLength:i,value:n.value,success:!0,captures:[{capIndex:t,capLength:i,value:n.value}]});n.captures.push(n.groups[0].captures[0])},_checkTimeout:function(){if(!(this._timeoutTime<0)){var n=(new Date).getTime();if(n>=this._timeoutTime)throw new System.RegexMatchTimeoutException(this._text,this._pattern,System.TimeSpan.fromMilliseconds(this._timeoutMs));}}});Bridge.define("System.Text.RegularExpressions.RegexEngineBranch",{type:0,value:0,min:0,max:0,isStarted:!1,isNotFailing:!1,state:null,ctor:function(n,t,i,r,u){this.$initialize();this.type=n;this.value=t;this.min=i;this.max=r;this.state=u!=null?u.clone():new System.Text.RegularExpressions.RegexEngineState},pushPass:function(n,t,i){var r=new System.Text.RegularExpressions.RegexEnginePass(n,t,i);this.state.passes.push(r)},peekPass:function(){return this.state.passes[this.state.passes.length-1]},popPass:function(){return this.state.passes.pop()},hasPass:function(){return this.state.passes.length>0},clone:function(){var n=new System.Text.RegularExpressions.RegexEngineBranch(this.type,this.value,this.min,this.max,this.state);return n.isNotFailing=this.isNotFailing,n}});Bridge.define("System.Text.RegularExpressions.RegexEngineState",{txtIndex:0,capIndex:null,capLength:0,passes:null,groups:null,ctor:function(){this.$initialize();this.passes=[];this.groups=[]},logCapture:function(n){this.capIndex==null&&(this.capIndex=this.txtIndex);this.txtIndex+=n;this.capLength+=n},logCaptureGroup:function(n,t,i){this.groups.push({rawIndex:n.rawIndex,slotId:n.packedSlotId,capIndex:t,capLength:i})},logCaptureGroupBalancing:function(n,t){for(var s=n.balancingSlotId,r=this.groups,i=r.length-1,u,f,e,o;i>=0;){if(r[i].slotId===s){u=r[i];f=i;break}--i}return u!=null&&f!=null?(r.splice(f,1),n.constructs.name1!=null&&(e=u.capIndex+u.capLength,o=t-e,this.logCaptureGroup(n,e,o)),!0):!1},resolveBackref:function(n){for(var i=this.groups,t=i.length-1;t>=0;){if(i[t].slotId===n)return i[t];--t}return null},clone:function(){var t=new System.Text.RegularExpressions.RegexEngineState,e,u;t.txtIndex=this.txtIndex;t.capIndex=this.capIndex;t.capLength=this.capLength;for(var o=t.passes,f=this.passes,r=f.length,i,n=0;n<r;n++)i=f[n].clone(),o.push(i);for(e=t.groups,u=this.groups,r=u.length,n=0;n<r;n++)i=u[n],e.push(i);return t}});Bridge.define("System.Text.RegularExpressions.RegexEnginePass",{index:0,tokens:null,probe:null,onHold:!1,onHoldTextIndex:-1,alternationHandled:!1,settings:null,ctor:function(n,t,i){this.$initialize();this.index=n;this.tokens=t;this.settings=i},clearState:function(n){this.index=0;this.probe=null;this.onHold=!1;this.onHoldTextIndex=-1;this.alternationHandled=!1;this.settings=n},clone:function(){var n=new System.Text.RegularExpressions.RegexEnginePass(this.index,this.tokens,this.settings);return n.onHold=this.onHold,n.onHoldTextIndex=this.onHoldTextIndex,n.alternationHandled=this.alternationHandled,n.probe=this.probe!=null?this.probe.clone():null,n}});Bridge.define("System.Text.RegularExpressions.RegexEngineProbe",{min:0,max:0,value:0,isLazy:!1,forced:!1,ctor:function(n,t,i,r){this.$initialize();this.min=n;this.max=t;this.value=i;this.isLazy=r;this.forced=!1},clone:function(){var n=new System.Text.RegularExpressions.RegexEngineProbe(this.min,this.max,this.value,this.isLazy);return n.forced=this.forced,n}});Bridge.define("System.Text.RegularExpressions.RegexEngineParser",{statics:{_hexSymbols:"0123456789abcdefABCDEF",_octSymbols:"01234567",_decSymbols:"0123456789",_escapedChars:"abtrvfnexcu",_escapedCharClasses:"pPwWsSdD",_escapedAnchors:"AZzGbB",_escapedSpecialSymbols:" .,$^{}[]()|*+-=?\\|/\"':;~!@#%&",_whiteSpaceChars:" \r\n\t\v\f\u00A0\uFEFF",_unicodeCategories:["Lu","Ll","Lt","Lm","Lo","L","Mn","Mc","Me","M","Nd","Nl","No","N","Pc","Pd","Ps","Pe","Pi","Pf","Po","P","Sm","Sc","Sk","So","S","Zs","Zl","Zp","Z","Cc","Cf","Cs","Co","Cn","C"],_namedCharBlocks:["IsBasicLatin","IsLatin-1Supplement","IsLatinExtended-A","IsLatinExtended-B","IsIPAExtensions","IsSpacingModifierLetters","IsCombiningDiacriticalMarks","IsGreek","IsGreekandCoptic","IsCyrillic","IsCyrillicSupplement","IsArmenian","IsHebrew","IsArabic","IsSyriac","IsThaana","IsDevanagari","IsBengali","IsGurmukhi","IsGujarati","IsOriya","IsTamil","IsTelugu","IsKannada","IsMalayalam","IsSinhala","IsThai","IsLao","IsTibetan","IsMyanmar","IsGeorgian","IsHangulJamo","IsEthiopic","IsCherokee","IsUnifiedCanadianAboriginalSyllabics","IsOgham","IsRunic","IsTagalog","IsHanunoo","IsBuhid","IsTagbanwa","IsKhmer","IsMongolian","IsLimbu","IsTaiLe","IsKhmerSymbols","IsPhoneticExtensions","IsLatinExtendedAdditional","IsGreekExtended","IsGeneralPunctuation","IsSuperscriptsandSubscripts","IsCurrencySymbols","IsCombiningDiacriticalMarksforSymbols","IsCombiningMarksforSymbols","IsLetterlikeSymbols","IsNumberForms","IsArrows","IsMathematicalOperators","IsMiscellaneousTechnical","IsControlPictures","IsOpticalCharacterRecognition","IsEnclosedAlphanumerics","IsBoxDrawing","IsBlockElements","IsGeometricShapes","IsMiscellaneousSymbols","IsDingbats","IsMiscellaneousMathematicalSymbols-A","IsSupplementalArrows-A","IsBraillePatterns","IsSupplementalArrows-B","IsMiscellaneousMathematicalSymbols-B","IsSupplementalMathematicalOperators","IsMiscellaneousSymbolsandArrows","IsCJKRadicalsSupplement","IsKangxiRadicals","IsIdeographicDescriptionCharacters","IsCJKSymbolsandPunctuation","IsHiragana","IsKatakana","IsBopomofo","IsHangulCompatibilityJamo","IsKanbun","IsBopomofoExtended","IsKatakanaPhoneticExtensions","IsEnclosedCJKLettersandMonths","IsCJKCompatibility","IsCJKUnifiedIdeographsExtensionA","IsYijingHexagramSymbols","IsCJKUnifiedIdeographs","IsYiSyllables","IsYiRadicals","IsHangulSyllables","IsHighSurrogates","IsHighPrivateUseSurrogates","IsLowSurrogates","IsPrivateUse or IsPrivateUseArea","IsCJKCompatibilityIdeographs","IsAlphabeticPresentationForms","IsArabicPresentationForms-A","IsVariationSelectors","IsCombiningHalfMarks","IsCJKCompatibilityForms","IsSmallFormVariants","IsArabicPresentationForms-B","IsHalfwidthandFullwidthForms","IsSpecials"],_controlChars:["@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_"],tokenTypes:{literal:0,escChar:110,escCharOctal:111,escCharHex:112,escCharCtrl:113,escCharUnicode:114,escCharOther:115,escCharClass:120,escCharClassCategory:121,escCharClassBlock:122,escCharClassDot:123,escAnchor:130,escBackrefNumber:140,escBackrefName:141,charGroup:200,charNegativeGroup:201,charInterval:202,anchor:300,group:400,groupImnsx:401,groupImnsxMisc:402,groupConstruct:403,groupConstructName:404,groupConstructImnsx:405,groupConstructImnsxMisc:406,quantifier:500,quantifierN:501,quantifierNM:502,alternation:600,alternationGroup:601,alternationGroupCondition:602,alternationGroupRefNumberCondition:603,alternationGroupRefNameCondition:604,commentInline:700,commentXMode:701},parsePattern:function(n,t){var i=System.Text.RegularExpressions.RegexEngineParser,r=i._parsePatternImpl(n,t,0,n.length),f=[],u;return i._fillGroupDescriptors(r,f),u=i._getGroupSparseInfo(f),i._fillBalancingGroupInfo(f,u),i._preTransformBackrefTokens(n,r,u),i._transformRawTokens(t,r,u,[],[],0),i._updateGroupDescriptors(r),{groups:f,sparseSettings:u,isContiguous:t.isContiguous||!1,shouldFail:t.shouldFail||!1,tokens:r}},_transformRawTokens:function(n,t,i,r,u,f){for(var l=System.Text.RegularExpressions.RegexEngineParser,s=l.tokenTypes,a,e,c,h,p,b,v,y,w,o=0;o<t.length;o++){if(e=t[o],o<t.length-1){w=t[o+1];switch(w.type){case s.quantifier:case s.quantifierN:case s.quantifierNM:e.qtoken=w;t.splice(o+1,1);--o}}if(e.type===s.escBackrefNumber){if(p=e.data.number,h=i.getPackedSlotIdBySlotNumber(p),h==null)throw new System.ArgumentException("Reference to undefined group number "+p.toString()+".");if(r.indexOf(h)<0){n.shouldFail=!0;continue}e.data.slotId=h}else if(e.type===s.escBackrefName){if(c=e.data.name,h=i.getPackedSlotIdBySlotName(c),h==null){if(b=l._matchChars(c,0,c.length,l._decSymbols),b.matchLength===c.length){c="\\"+c;l._updatePatternToken(e,s.escBackrefNumber,e.index,c.length,c);--o;continue}throw new System.ArgumentException("Reference to undefined group name '"+c+"'.");}if(r.indexOf(h)<0){n.shouldFail=!0;continue}e.data.slotId=h}else if(e.type===s.anchor||e.type===s.escAnchor){if(e.value==="\\G"){f===0&&o===0?n.isContiguous=!0:n.shouldFail=!0;t.splice(o,1);--o;continue}}else if(e.type===s.commentInline||e.type===s.commentXMode){t.splice(o,1);--o;continue}else if(e.type===s.literal){if(o>0&&!e.qtoken&&(a=t[o-1],a.type===s.literal&&!a.qtoken)){a.value+=e.value;a.length+=e.length;t.splice(o,1);--o;continue}}else if(e.type===s.alternationGroupCondition&&e.data!=null)if(e.data.number!=null){if(h=i.getPackedSlotIdBySlotNumber(e.data.number),h==null)throw new System.ArgumentException("Reference to undefined group number "+c+".");e.data.packedSlotId=h;l._updatePatternToken(e,s.alternationGroupRefNumberCondition,e.index,e.length,e.value)}else h=i.getPackedSlotIdBySlotName(e.data.name),h!=null?(e.data.packedSlotId=h,l._updatePatternToken(e,s.alternationGroupRefNameCondition,e.index,e.length,e.value)):delete e.data;e.children&&e.children.length&&(v=e.type===s.group?[e.group.rawIndex]:[],v=v.concat(u),y=e.localSettings||n,l._transformRawTokens(y,e.children,i,r,v,f+1),n.shouldFail=n.shouldFail||y.shouldFail,n.isContiguous=n.isContiguous||y.isContiguous);e.type===s.group&&r.push(e.group.packedSlotId)}},_fillGroupDescriptors:function(n,t){var f=System.Text.RegularExpressions.RegexEngineParser,i,r,u;for(f._fillGroupStructure(t,n,null),u=1,r=0;r<t.length;r++)i=t[r],i.constructs.name1!=null?(i.name=i.constructs.name1,i.hasName=!0):(i.hasName=!1,i.name=u.toString(),++u)},_fillGroupStructure:function(n,t,i){for(var s=System.Text.RegularExpressions.RegexEngineParser,e=s.tokenTypes,f,r,u,c,h,o=0;o<t.length;o++)r=t[o],h=r.children&&r.children.length,(r.type===e.group||r.type===e.groupImnsx||r.type===e.groupImnsxMisc)&&(f={rawIndex:n.length+1,number:-1,parentGroup:null,innerGroups:[],name:null,hasName:!1,constructs:null,quantifier:null,exprIndex:-1,exprLength:0,expr:null,exprFull:null},r.group=f,r.type===e.group&&(n.push(f),i!=null&&(r.group.parentGroup=i,i.innerGroups.push(f))),c=h?r.children[0]:null,f.constructs=s._fillGroupConstructs(c),u=f.constructs,r.isNonCapturingExplicit&&(delete r.isNonCapturingExplicit,u.isNonCapturingExplicit=!0),r.isEmptyCapturing&&(delete r.isEmptyCapturing,u.emptyCapture=!0),u.skipCapture=u.isNonCapturing||u.isNonCapturingExplicit||u.isNonbacktracking||u.isPositiveLookahead||u.isNegativeLookahead||u.isPositiveLookbehind||u.isNegativeLookbehind||u.name1==null&&u.name2!=null),h&&s._fillGroupStructure(n,r.children,r.group)},_getGroupSparseInfo:function(n){var h=System.Text.RegularExpressions.RegexEngineParser,f={},l=[],c={},r,a,t,s,i,u,v,o={0:0},e,p,y;for(o.lastSlot=0,e={"0":0},e.keys=["0"],u=0;u<n.length;u++)(i=n[u],i.constructs.skipCapture)||(i.constructs.isNumberName1?(t=parseInt(i.constructs.name1),l.push(t),f[t]?f[t].push(i):f[t]=[i]):(s=i.constructs.name1,c[s]?c[s].push(i):c[s]=[i]));for(p=function(n,t){return n-t},l.sort(p),y=!1,v=0;v<2;v++){for(u=0;u<n.length;u++)(i=n[u],i.constructs.skipCapture)||i.constructs.emptyCapture===!0===y&&(t=e.keys.length,i.hasName||(a=[i],r=f[t],r!=null&&(a=a.concat(r),f[t]=null),h._addSparseSlotForSameNamedGroups(a,t,o,e)));y=!0}for(u=0;u<n.length;u++)if((i=n[u],!i.constructs.skipCapture)&&i.hasName&&!i.constructs.isNumberName1){for(t=e.keys.length,r=f[t];r!=null;)h._addSparseSlotForSameNamedGroups(r,t,o,e),f[t]=null,t=e.keys.length,r=f[t];if(!i.constructs.isNumberName1)for(t=e.keys.length,r=f[t];r!=null;)h._addSparseSlotForSameNamedGroups(r,t,o,e),f[t]=null,t=e.keys.length,r=f[t];s=i.constructs.name1;r=c[s];r!=null&&(h._addSparseSlotForSameNamedGroups(r,t,o,e),c[s]=null)}for(u=0;u<l.length;u++)t=l[u],r=f[t],r!=null&&(h._addSparseSlotForSameNamedGroups(r,t,o,e),f[t]=null);return{isSparse:o.isSparse||!1,sparseSlotMap:o,sparseSlotNameMap:e,getPackedSlotIdBySlotNumber:function(n){return this.sparseSlotMap[n]},getPackedSlotIdBySlotName:function(n){return this.sparseSlotNameMap[n]}}},_addSparseSlot:function(n,t,i,r){var u=r.keys.length;n.packedSlotId=u;i[t]=u;r[n.name]=u;r.keys.push(n.name);!i.isSparse&&t-i.lastSlot>1&&(i.isSparse=!0);i.lastSlot=t},_addSparseSlotForSameNamedGroups:function(n,t,i,r){var o=System.Text.RegularExpressions.RegexEngineParser,u,f,e;if(o._addSparseSlot(n[0],t,i,r),f=n[0].sparseSlotId,e=n[0].packedSlotId,n.length>1)for(u=1;u<n.length;u++)n[u].sparseSlotId=f,n[u].packedSlotId=e},_fillGroupConstructs:function(n){var o=System.Text.RegularExpressions.RegexEngineParser,f=o.tokenTypes,t={name1:null,name2:null,isNumberName1:!1,isNumberName2:!1,isNonCapturing:!1,isNonCapturingExplicit:!1,isIgnoreCase:null,isMultiline:null,isExplicitCapture:null,isSingleLine:null,isIgnoreWhitespace:null,isPositiveLookahead:!1,isNegativeLookahead:!1,isPositiveLookbehind:!1,isNegativeLookbehind:!1,isNonbacktracking:!1},s,i,h,c;if(n==null)return t;if(n.type===f.groupConstruct)switch(n.value){case"?:":t.isNonCapturing=!0;break;case"?=":t.isPositiveLookahead=!0;break;case"?!":t.isNegativeLookahead=!0;break;case"?>":t.isNonbacktracking=!0;break;case"?<=":t.isPositiveLookbehind=!0;break;case"?<!":t.isNegativeLookbehind=!0;break;default:throw new System.ArgumentException("Unrecognized grouping construct.");}else if(n.type===f.groupConstructName){if(s=n.value.slice(2,n.length-1),i=s.split("-"),i.length===0||i.length>2)throw new System.ArgumentException("Invalid group name.");i[0].length&&(t.name1=i[0],h=o._validateGroupName(i[0]),t.isNumberName1=h.isNumberName);i.length===2&&(t.name2=i[1],c=o._validateGroupName(i[1]),t.isNumberName2=c.isNumberName)}else if(n.type===f.groupConstructImnsx||n.type===f.groupConstructImnsxMisc)for(var l=n.type===f.groupConstructImnsx?1:0,a=n.length-1-l,u=!0,r,e=1;e<=a;e++)r=n.value[e],r==="-"?u=!1:r==="i"?t.isIgnoreCase=u:r==="m"?t.isMultiline=u:r==="n"?t.isExplicitCapture=u:r==="s"?t.isSingleLine=u:r==="x"&&(t.isIgnoreWhitespace=u);return t},_validateGroupName:function(n){var t,i,r;if(!n||!n.length)throw new System.ArgumentException("Invalid group name: Group names must begin with a word character.");if(t=n[0]>="0"&&n[0]<="9",t&&(i=System.Text.RegularExpressions.RegexEngineParser,r=i._matchChars(n,0,n.length,i._decSymbols),r.matchLength!==n.length))throw new System.ArgumentException("Invalid group name: Group names must begin with a word character.");return{isNumberName:t}},_fillBalancingGroupInfo:function(n,t){for(var i,r=0;r<n.length;r++)if(i=n[r],i.constructs.name2!=null&&(i.isBalancing=!0,i.balancingSlotId=t.getPackedSlotIdBySlotName(i.constructs.name2),i.balancingSlotId==null))throw new System.ArgumentException("Reference to undefined group name '"+i.constructs.name2+"'.");},_preTransformBackrefTokens:function(n,t,i){for(var u=System.Text.RegularExpressions.RegexEngineParser,s=u.tokenTypes,f,e,h,c,r,o=0;o<t.length;o++){if(r=t[o],r.type===s.escBackrefNumber){if(f=r.data.number,f>=1&&i.getPackedSlotIdBySlotNumber(f)!=null)continue;if(f<=9)throw new System.ArgumentException("Reference to undefined group number "+f.toString()+".");if(e=u._parseOctalCharToken(r.value,0,r.length),e==null)throw new System.ArgumentException("Unrecognized escape sequence "+r.value.slice(0,2)+".");h=r.length-e.length;u._modifyPatternToken(r,n,s.escCharOctal,null,e.length);r.data=e.data;h>0&&(c=u._createPatternToken(n,s.literal,r.index+r.length,h),t.splice(o+1,0,c))}r.children&&r.children.length&&u._preTransformBackrefTokens(n,r.children,i)}},_updateGroupDescriptors:function(n,t){for(var o=System.Text.RegularExpressions.RegexEngineParser,e=o.tokenTypes,r,i,f,h,c,s=t||0,u=0;u<n.length;u++)i=n[u],i.index=s,i.children&&(c=i.childrenPostfix.length,o._updateGroupDescriptors(i.children,s+c),h=o._constructPattern(i.children),i.value=i.childrenPrefix+h+i.childrenPostfix,i.length=i.value.length),i.type===e.group&&i.group&&(r=i.group,r.exprIndex=i.index,r.exprLength=i.length,u+1<n.length&&(f=n[u+1],(f.type===e.quantifier||f.type===e.quantifierN||f.type===e.quantifierNM)&&(r.quantifier=f.value)),r.expr=i.value,r.exprFull=r.expr+(r.quantifier!=null?r.quantifier:"")),s+=i.length},_constructPattern:function(n){for(var i="",r,t=0;t<n.length;t++)r=n[t],i+=r.value;return i},_parsePatternImpl:function(n,t,i,r){if(n==null)throw new System.ArgumentNullException("pattern");if(i<0||i>n.length)throw new System.ArgumentOutOfRangeException("startIndex");if(r<i||r>n.length)throw new System.ArgumentOutOfRangeException("endIndex");for(var f=System.Text.RegularExpressions.RegexEngineParser,h=f.tokenTypes,s=[],o,e,u=i;u<r;){if(e=n[u],t.ignoreWhitespace&&f._whiteSpaceChars.indexOf(e)>=0){++u;continue}o=e==="."?f._parseDotToken(n,u,r):e==="\\"?f._parseEscapeToken(n,u,r):e==="["?f._parseCharRangeToken(n,u,r):e==="^"||e==="$"?f._parseAnchorToken(n,u):e==="("?f._parseGroupToken(n,t,u,r):e==="|"?f._parseAlternationToken(n,u):e==="#"&&t.ignoreWhitespace?f._parseXModeCommentToken(n,u,r):f._parseQuantifierToken(n,u,r);o==null&&(o=f._createPatternToken(n,h.literal,u,1));o!=null&&(s.push(o),u+=o.length)}return s},_parseEscapeToken:function(n,t,i){var u=System.Text.RegularExpressions.RegexEngineParser,o=u.tokenTypes,f=n[t],h,c,l,s,y,e,a,r,v;if(f!=="\\")return null;if(t+1>=i)throw new System.ArgumentException("Illegal \\ at end of pattern.");if(f=n[t+1],f>="1"&&f<="9")return h=u._matchChars(n,t+1,i,u._decSymbols,3),c=u._createPatternToken(n,o.escBackrefNumber,t,1+h.matchLength),c.data={number:parseInt(h.match,10)},c;if(u._escapedAnchors.indexOf(f)>=0)return u._createPatternToken(n,o.escAnchor,t,2);if(l=u._parseEscapedChar(n,t,i),l!=null)return l;if(f==="k"){if(t+2<i&&(s=n[t+2],(s==="'"||s==="<")&&(y=s==="<"?">":"'",e=u._matchUntil(n,t+3,i,y),e.unmatchLength===1&&e.matchLength>0)))return a=u._createPatternToken(n,o.escBackrefName,t,3+e.matchLength+1),a.data={name:e.match},a;throw new System.ArgumentException("Malformed \\k<...> named back reference.");}if(r=f.charCodeAt(0),r>=0&&r<48||r>57&&r<65||r>90&&r<95||r===96||r>122&&r<128)return v=u._createPatternToken(n,o.escChar,t,2),v.data={n:r,ch:f},v;throw new System.ArgumentException("Unrecognized escape sequence \\"+f+".");},_parseOctalCharToken:function(n,t,i){var r=System.Text.RegularExpressions.RegexEngineParser,s=r.tokenTypes,u=n[t];if(u==="\\"&&t+1<i&&(u=n[t+1],u>="0"&&u<="7")){var f=r._matchChars(n,t+1,i,r._octSymbols,3),e=parseInt(f.match,8),o=r._createPatternToken(n,s.escCharOctal,t,1+f.matchLength);return o.data={n:e,ch:String.fromCharCode(e)},o}return null},_parseEscapedChar:function(n,t,i){var r=System.Text.RegularExpressions.RegexEngineParser,o=r.tokenTypes,f,u=n[t],a,v,h,c,y,p,e,s,l;if(u!=="\\"||t+1>=i)return null;if(u=n[t+1],r._escapedChars.indexOf(u)>=0){if(u==="x"){if(a=r._matchChars(n,t+2,i,r._hexSymbols,2),a.matchLength!==2)throw new System.ArgumentException("Insufficient hexadecimal digits.");return v=parseInt(a.match,16),f=r._createPatternToken(n,o.escCharHex,t,4),f.data={n:v,ch:String.fromCharCode(v)},f}if(u==="c"){if(t+2>=i)throw new System.ArgumentException("Missing control character.");if(h=n[t+2],h=h.toUpperCase(),c=this._controlChars.indexOf(h),c>=0)return f=r._createPatternToken(n,o.escCharCtrl,t,3),f.data={n:c,ch:String.fromCharCode(c)},f;throw new System.ArgumentException("Unrecognized control character.");}else if(u==="u"){if(y=r._matchChars(n,t+2,i,r._hexSymbols,4),y.matchLength!==4)throw new System.ArgumentException("Insufficient hexadecimal digits.");return p=parseInt(y.match,16),f=r._createPatternToken(n,o.escCharUnicode,t,6),f.data={n:p,ch:String.fromCharCode(p)},f}f=r._createPatternToken(n,o.escChar,t,2);switch(u){case"a":e=7;break;case"b":e=8;break;case"t":e=9;break;case"r":e=13;break;case"v":e=11;break;case"f":e=12;break;case"n":e=10;break;case"e":e=27;break;default:throw new System.ArgumentException("Unexpected escaped char: '"+u+"'.");}return f.data={n:e,ch:String.fromCharCode(e)},f}if(u>="0"&&u<="7")return r._parseOctalCharToken(n,t,i);if(r._escapedCharClasses.indexOf(u)>=0){if(u==="p"||u==="P"){if(s=r._matchUntil(n,t+2,i,"}"),s.matchLength<2||s.match[0]!=="{"||s.unmatchLength!==1)throw new System.ArgumentException("Incomplete p{X} character escape.");if(l=s.match.slice(1),r._unicodeCategories.indexOf(l)>=0)return r._createPatternToken(n,o.escCharClassCategory,t,2+s.matchLength+1);if(r._namedCharBlocks.indexOf(l)>=0)return r._createPatternToken(n,o.escCharClassBlock,t,2+s.matchLength+1);throw new System.ArgumentException("Unknown property '"+l+"'.");}return r._createPatternToken(n,o.escCharClass,t,2)}return r._escapedSpecialSymbols.indexOf(u)>=0?(f=r._createPatternToken(n,o.escCharOther,t,2),f.data={n:u.charCodeAt(0),ch:u},f):null},_parseCharRangeToken:function(n,t,i){var e=System.Text.RegularExpressions.RegexEngineParser,a=e.tokenTypes,u=[],v,o,f,y=!1,p=!1,w=!1,s=n[t],r,h,c,b,l,k;if(s!=="[")return null;for(r=t+1,h=-1,r<i&&n[r]==="^"&&(y=!0,r++),b=r;r<i;){if(s=n[r],p=w,s==="-"&&r+1<i&&n[r+1]==="[")o=e._parseCharRangeToken(n,r+1,i),o.childrenPrefix="-"+o.childrenPrefix,o.length++,f=o,c=o.length,w=!0;else if(s==="\\"){if(f=e._parseEscapedChar(n,r,i),f==null)throw new System.ArgumentException("Unrecognized escape sequence \\"+s+".");c=f.length}else if(s==="]"&&r>b){h=r;break}else f=e._createPatternToken(n,a.literal,r,1),c=1;if(p)throw new System.ArgumentException("A subtraction must be the last element in a character class.");u.length>1&&(v=e._parseCharIntervalToken(n,u[u.length-2],u[u.length-1],f),v!=null&&(u.pop(),u.pop(),f=v));f!=null&&(u.push(f),r+=c)}if(h<0||u.length<1)throw new System.ArgumentException("Unterminated [] set.");return l=y?e._createPatternToken(n,a.charNegativeGroup,t,1+h-t,u,"[^","]"):e._createPatternToken(n,a.charGroup,t,1+h-t,u,"[","]"),k=e._tidyCharRange(u),l.data={ranges:k},o!=null&&(l.data.substractToken=o),l},_parseCharIntervalToken:function(n,t,i,r){var h=System.Text.RegularExpressions.RegexEngineParser,u=h.tokenTypes,f,o,e,s;if(i.type!==u.literal||i.value!=="-"||t.type!==u.literal&&t.type!==u.escChar&&t.type!==u.escCharOctal&&t.type!==u.escCharHex&&t.type!==u.escCharCtrl&&t.type!==u.escCharUnicode&&t.type!==u.escCharOther||r.type!==u.literal&&r.type!==u.escChar&&r.type!==u.escCharOctal&&r.type!==u.escCharHex&&r.type!==u.escCharCtrl&&r.type!==u.escCharUnicode&&r.type!==u.escCharOther)return null;if(t.type===u.literal?(f=t.value.charCodeAt(0),o=t.value):(f=t.data.n,o=t.data.ch),r.type===u.literal?(e=r.value.charCodeAt(0),s=r.value):(e=r.data.n,s=r.data.ch),f>e)throw new System.NotSupportedException("[x-y] range in reverse order.");var l=t.index,a=t.length+i.length+r.length,c=h._createPatternToken(n,u.charInterval,l,a,[t,i,r],"","");return c.data={startN:f,startCh:o,endN:e,endCh:s},c},_tidyCharRange:function(n){for(var l=System.Text.RegularExpressions.RegexEngineParser,i=l.tokenTypes,f,e,o,t,r=[],a=[],s,h,c,v,u=0;u<n.length;u++){if(t=n[u],t.type===i.literal)e=t.value.charCodeAt(0),o=e;else if(t.type===i.charInterval)e=t.data.startN,o=t.data.endN;else if(t.type===i.literal||t.type===i.escChar||t.type===i.escCharOctal||t.type===i.escCharHex||t.type===i.escCharCtrl||t.type===i.escCharUnicode||t.type===i.escCharOther)e=t.data.n,o=e;else if(t.type===i.charGroup||t.type===i.charNegativeGroup)continue;else{a.push(t);continue}if(r.length===0){r.push({n:e,m:o});continue}for(f=0;f<r.length;f++)if(r[f].n>e)break;r.splice(f,0,{n:e,m:o})}for(u=0;u<r.length;u++){for(s=r[u],c=0,f=u+1;f<r.length;f++){if(h=r[f],h.n>1+s.m)break;c++;h.m>s.m&&(s.m=h.m)}c>0&&r.splice(u+1,c)}return a.length>0&&(v="["+l._constructPattern(a)+"]",r.charClassToken=l._createPatternToken(v,i.charGroup,0,v.length,n,"[","]")),r},_parseDotToken:function(n,t){var i=System.Text.RegularExpressions.RegexEngineParser,r=i.tokenTypes,u=n[t];return u!=="."?null:i._createPatternToken(n,r.escCharClassDot,t,1)},_parseAnchorToken:function(n,t){var i=System.Text.RegularExpressions.RegexEngineParser,u=i.tokenTypes,r=n[t];return r!=="^"&&r!=="$"?null:i._createPatternToken(n,u.anchor,t,1)},_updateSettingsFromConstructs:function(n,t){t.isIgnoreWhitespace!=null&&(n.ignoreWhitespace=t.isIgnoreWhitespace);t.isExplicitCapture!=null&&(n.explicitCapture=t.isExplicitCapture)},_parseGroupToken:function(n,t,i,r){var s=System.Text.RegularExpressions.RegexEngineParser,u=s.tokenTypes,a={ignoreWhitespace:t.ignoreWhitespace,explicitCapture:t.explicitCapture},e=n[i],h,c,l,ft,et,p,w,ot,b,nt;if(e!=="(")return null;var k=1,y=!1,d=i+1,o=-1,g=!1,tt=!1,it=!1,rt=!1,ut=!1,v=null,f=s._parseGroupConstructToken(n,a,i+1,r);for(f!=null&&(v=this._fillGroupConstructs(f),d+=f.length,f.type===u.commentInline?g=!0:f.type===u.alternationGroupCondition?tt=!0:f.type===u.groupConstructImnsx?(this._updateSettingsFromConstructs(a,v),rt=!0):f.type===u.groupConstructImnsxMisc&&(this._updateSettingsFromConstructs(t,v),it=!0)),a.explicitCapture&&(v==null||v.name1==null)&&(ut=!0),h=d;h<r;){if(e=n[h],e==="\\")h++;else if(e==="[")y=!0;else if(e==="]"&&y)y=!1;else if(!y)if(e!=="("||g){if(e===")"&&(--k,k===0)){o=h;break}}else++k;++h}if(c=null,g){if(o<0)throw new System.ArgumentException("Unterminated (?#...) comment.");c=s._createPatternToken(n,u.commentInline,i,1+o-i)}else{if(o<0)throw new System.ArgumentException("Not enough )'s.");if(l=s._parsePatternImpl(n,a,d,o),f!=null&&l.splice(0,0,f),tt){for(ft=l.length,w=0,p=0;p<ft;p++)if(et=l[p],et.type===u.alternation&&(++w,w>1))throw new System.ArgumentException("Too many | in (?()|).");if(w===0)throw new System.NotSupportedException("Alternation group without | is not supported.");ot=s._createPatternToken(n,u.alternationGroup,i,1+o-i,l,"(",")");c=ot}else b=u.group,it?b=u.groupImnsxMisc:rt&&(b=u.groupImnsx),nt=s._createPatternToken(n,b,i,1+o-i,l,"(",")"),nt.localSettings=a,c=nt}return ut&&(c.isNonCapturingExplicit=!0),c},_parseGroupConstructToken:function(n,t,i,r){var f=System.Text.RegularExpressions.RegexEngineParser,o=f.tokenTypes,u=n[i],h,c,s,l,e,a,v;if(u!=="?"||i+1>=r)return null;if(u=n[i+1],u===":"||u==="="||u==="!"||u===">")return f._createPatternToken(n,o.groupConstruct,i,2);if(u==="#")return f._createPatternToken(n,o.commentInline,i,2);if(u==="(")return f._parseAlternationGroupConditionToken(n,t,i,r);if(u==="<"&&i+2<r&&(h=n[i+2],h==="="||h==="!"))return f._createPatternToken(n,o.groupConstruct,i,3);if(u==="<"||u==="'"){if(c=u==="<"?">":u,s=f._matchUntil(n,i+2,r,c),s.unmatchLength!==1||s.matchLength===0)throw new System.ArgumentException("Unrecognized grouping construct.");if(l=s.match.slice(0,1),"`~@#$%^&*()+{}[]|\\/|'\";:,.?".indexOf(l)>=0)throw new System.ArgumentException("Invalid group name: Group names must begin with a word character.");return f._createPatternToken(n,o.groupConstructName,i,2+s.matchLength+1)}if(e=f._matchChars(n,i+1,r,"imnsx-"),e.matchLength>0&&(e.unmatchCh===":"||e.unmatchCh===")"))return a=e.unmatchCh===":"?o.groupConstructImnsx:o.groupConstructImnsxMisc,v=e.unmatchCh===":"?1:0,f._createPatternToken(n,a,i,1+e.matchLength+v);throw new System.ArgumentException("Unrecognized grouping construct.");},_parseQuantifierToken:function(n,t,i){var f=System.Text.RegularExpressions.RegexEngineParser,s=f.tokenTypes,r=null,e=n[t],u,o,h,c;if(e==="*"||e==="+"||e==="?")r=f._createPatternToken(n,s.quantifier,t,1),r.data={val:e};else if(e==="{"&&(u=f._matchChars(n,t+1,i,f._decSymbols),u.matchLength!==0))if(u.unmatchCh==="}")r=f._createPatternToken(n,s.quantifierN,t,1+u.matchLength+1),r.data={n:parseInt(u.match,10)};else if(u.unmatchCh===","&&(o=f._matchChars(n,u.unmatchIndex+1,i,f._decSymbols),o.unmatchCh==="}"&&(r=f._createPatternToken(n,s.quantifierNM,t,1+u.matchLength+1+o.matchLength+1),r.data={n:parseInt(u.match,10),m:null},o.matchLength!==0&&(r.data.m=parseInt(o.match,10),r.data.n>r.data.m))))throw new System.ArgumentException("Illegal {x,y} with x > y.");return r!=null&&(h=t+r.length,h<i&&(c=n[h],c==="?"&&(this._modifyPatternToken(r,n,r.type,r.index,r.length+1),r.data.isLazy=!0))),r},_parseAlternationToken:function(n,t){var i=System.Text.RegularExpressions.RegexEngineParser,r=i.tokenTypes,u=n[t];return u!=="|"?null:i._createPatternToken(n,r.alternation,t,1)},_parseAlternationGroupConditionToken:function(n,t,i,r){var s=System.Text.RegularExpressions.RegexEngineParser,u=s.tokenTypes,h,l,c=null,w=n[i],f,e,o,v,y,p,a;if(w!=="?"||i+1>=r||n[i+1]!=="("||(f=s._parseGroupToken(n,t,i+1,r),f==null))return null;if(f.type===u.commentInline)throw new System.ArgumentException("Alternation conditions cannot be comments.");if(e=f.children,e&&e.length){if(h=e[0],h.type===u.groupConstructName)throw new System.ArgumentException("Alternation conditions do not capture and cannot be named.");if((h.type===u.groupConstruct||h.type===u.groupConstructImnsx)&&(l=s._findFirstGroupWithoutConstructs(e),l!=null&&(l.isEmptyCapturing=!0)),h.type===u.literal)if(o=f.value.slice(1,f.value.length-1),v=o[0]>="0"&&o[0]<="9",v){if(y=s._matchChars(o,0,o.length,s._decSymbols),y.matchLength!==o.length)throw new System.ArgumentException("Malformed Alternation group number: "+o+".");p=parseInt(o,10);c={number:p}}else c={name:o}}return e.length&&(e[0].type===u.groupConstruct||e[0].type===u.groupConstructImnsx)||(h=s._createPatternToken("?:",u.groupConstruct,0,2),e.splice(0,0,h)),a=s._createPatternToken(n,u.alternationGroupCondition,f.index-1,1+f.length,[f],"?",""),c!=null&&(a.data=c),a},_findFirstGroupWithoutConstructs:function(n){for(var f=System.Text.RegularExpressions.RegexEngineParser,u=f.tokenTypes,i=null,t,r=0;r<n.length;++r)if(t=n[r],t.type===u.group&&t.children&&t.children.length){if(t.children[0].type!==u.groupConstruct&&t.children[0].type!==u.groupConstructImnsx){i=t;break}if(t.children&&t.children.length&&(i=f._findFirstGroupWithoutConstructs(t.children),i!=null))break}return i},_parseXModeCommentToken:function(n,t,i){var f=System.Text.RegularExpressions.RegexEngineParser,e=f.tokenTypes,u=n[t],r;if(u!=="#")return null;for(r=t+1;r<i;)if(u=n[r],++r,u==="\n")break;return f._createPatternToken(n,e.commentXMode,t,r-t)},_createLiteralToken:function(n){var t=System.Text.RegularExpressions.RegexEngineParser;return t._createPatternToken(n,t.tokenTypes.literal,0,n.length)},_createPositiveLookaheadToken:function(n,t){var r=System.Text.RegularExpressions.RegexEngineParser,i="(?="+n+")";return r._parseGroupToken(i,t,0,i.length)},_createPatternToken:function(n,t,i,r,u,f,e){var o={type:t,index:i,length:r,value:n.slice(i,i+r)};return u!=null&&u.length>0&&(o.children=u,o.childrenPrefix=f,o.childrenPostfix=e),o},_modifyPatternToken:function(n,t,i,r,u){i!=null&&(n.type=i);(r!=null||u!=null)&&(r!=null&&(n.index=r),u!=null&&(n.length=u),n.value=t.slice(n.index,n.index+n.length))},_updatePatternToken:function(n,t,i,r,u){n.type=t;n.index=i;n.length=r;n.value=u},_matchChars:function(n,t,i,r,u){var f={match:"",matchIndex:-1,matchLength:0,unmatchCh:"",unmatchIndex:-1,unmatchLength:0},e=t,o;for(u!=null&&u>=0&&(i=t+u);e<i;){if(o=n[e],r.indexOf(o)<0){f.unmatchCh=o;f.unmatchIndex=e;f.unmatchLength=1;break}e++}return e>t&&(f.match=n.slice(t,e),f.matchIndex=t,f.matchLength=e-t),f},_matchUntil:function(n,t,i,r,u){var f={match:"",matchIndex:-1,matchLength:0,unmatchCh:"",unmatchIndex:-1,unmatchLength:0},e=t,o;for(u!=null&&u>=0&&(i=t+u);e<i;){if(o=n[e],r.indexOf(o)>=0){f.unmatchCh=o;f.unmatchIndex=e;f.unmatchLength=1;break}e++}return e>t&&(f.match=n.slice(t,e),f.matchIndex=t,f.matchLength=e-t),f}}});Bridge.define("System.Random",{statics:{MBIG:2147483647,MSEED:161803398,MZ:0},inext:0,inextp:0,seedArray:null,config:{init:function(){this.seedArray=System.Array.init(56,0)}},ctor:function(){System.Random.$ctor1.call(this,System.Int64.clip32(System.Int64((new Date).getTime()).mul(1e4)))},$ctor1:function(n){var e,u,i,o,r,f,t;for(this.$initialize(),o=n===-2147483648?2147483647:Math.abs(n),u=System.Random.MSEED-o|0,this.seedArray[55]=u,i=1,r=1;r<55;r=r+1|0)e=(21*r|0)%55,this.seedArray[e]=i,i=u-i|0,i<0&&(i=i+System.Random.MBIG|0),u=this.seedArray[e];for(f=1;f<5;f=f+1|0)for(t=1;t<56;t=t+1|0)this.seedArray[t]=this.seedArray[t]-this.seedArray[1+(t+30|0)%55|0]|0,this.seedArray[t]<0&&(this.seedArray[t]=this.seedArray[t]+System.Random.MBIG|0);this.inext=0;this.inextp=21;n=1},sample:function(){return this.internalSample()*46566128752457969e-26},internalSample:function(){var n,t=this.inext,i=this.inextp;return(t=t+1|0)>=56&&(t=1),(i=i+1|0)>=56&&(i=1),n=this.seedArray[t]-this.seedArray[i]|0,n===System.Random.MBIG&&(n=n-1|0),n<0&&(n=n+System.Random.MBIG|0),this.seedArray[t]=n,this.inext=t,this.inextp=i,n},next:function(){return this.internalSample()},next$2:function(n,t){if(n>t)throw new System.ArgumentOutOfRangeException("minValue","'minValue' cannot be greater than maxValue.");var i=System.Int64(t).sub(System.Int64(n));return i.lte(System.Int64(2147483647))?Bridge.Int.clip32(this.sample()*System.Int64.toNumber(i))+n|0:System.Int64.clip32(Bridge.Int.clip64(this.getSampleForLargeRange()*System.Int64.toNumber(i)).add(System.Int64(n)))},next$1:function(n){if(n<0)throw new System.ArgumentOutOfRangeException("maxValue","'maxValue' must be greater than zero.");return Bridge.Int.clip32(this.sample()*n)},getSampleForLargeRange:function(){var n=this.internalSample(),i=this.internalSample()%2==0?!0:!1,t;return i&&(n=-n|0),t=n,t+=2147483646,t/4294967293},nextDouble:function(){return this.sample()},nextBytes:function(n){if(n==null)throw new System.ArgumentNullException("buffer");for(var t=0;t<n.length;t=t+1|0)n[t]=this.internalSample()%256&255}});Bridge.define("System.Threading.Timer",{inherits:[System.IDisposable],statics:{MAX_SUPPORTED_TIMEOUT:4294967294,EXC_LESS:"Number must be either non-negative and less than or equal to Int32.MaxValue or -1.",EXC_MORE:"Time-out interval must be less than 2^32-2.",EXC_DISPOSED:"The timer has been already disposed."},dueTime:System.Int64(0),period:System.Int64(0),timerCallback:null,state:null,id:null,disposed:!1,config:{alias:["dispose","System$IDisposable$dispose"]},$ctor1:function(n,t,i,r){this.$initialize();this.timerSetup(n,t,System.Int64(i),System.Int64(r))},$ctor3:function(n,t,i,r){this.$initialize();var u=Bridge.Int.clip64(i.getTotalMilliseconds()),f=Bridge.Int.clip64(r.getTotalMilliseconds());this.timerSetup(n,t,u,f)},$ctor4:function(n,t,i,r){this.$initialize();this.timerSetup(n,t,System.Int64(i),System.Int64(r))},$ctor2:function(n,t,i,r){this.$initialize();this.timerSetup(n,t,i,r)},ctor:function(n){this.$initialize();this.timerSetup(n,this,System.Int64(-1),System.Int64(-1))},timerSetup:function(n,t,i,r){if(this.disposed)throw new System.InvalidOperationException(System.Threading.Timer.EXC_DISPOSED);if(Bridge.staticEquals(n,null))throw new System.ArgumentNullException("TimerCallback");if(i.lt(System.Int64(-1)))throw new System.ArgumentOutOfRangeException("dueTime",System.Threading.Timer.EXC_LESS);if(r.lt(System.Int64(-1)))throw new System.ArgumentOutOfRangeException("period",System.Threading.Timer.EXC_LESS);if(i.gt(System.Int64(System.Threading.Timer.MAX_SUPPORTED_TIMEOUT)))throw new System.ArgumentOutOfRangeException("dueTime",System.Threading.Timer.EXC_MORE);if(r.gt(System.Int64(System.Threading.Timer.MAX_SUPPORTED_TIMEOUT)))throw new System.ArgumentOutOfRangeException("period",System.Threading.Timer.EXC_MORE);return this.dueTime=i,this.period=r,this.state=t,this.timerCallback=n,this.runTimer(this.dueTime)},handleCallback:function(){if(!this.disposed&&!Bridge.staticEquals(this.timerCallback,null)){var n=this.id;this.timerCallback(this.state);System.Nullable.eq(this.id,n)&&this.runTimer(this.period,!1)}},runTimer:function(n,t){if(t===void 0&&(t=!0),t&&this.disposed)throw new System.InvalidOperationException(System.Threading.Timer.EXC_DISPOSED);if(n.ne(System.Int64(-1))&&!this.disposed){var i=n.toNumber();return this.id=Bridge.global.setTimeout(Bridge.fn.bind(this,this.handleCallback),i),!0}return!1},change:function(n,t){return this.changeTimer(System.Int64(n),System.Int64(t))},change$2:function(n,t){return this.changeTimer(Bridge.Int.clip64(n.getTotalMilliseconds()),Bridge.Int.clip64(t.getTotalMilliseconds()))},change$3:function(n,t){return this.changeTimer(System.Int64(n),System.Int64(t))},change$1:function(n,t){return this.changeTimer(n,t)},changeTimer:function(n,t){return this.clearTimeout(),this.timerSetup(this.timerCallback,this.state,n,t)},clearTimeout:function(){System.Nullable.hasValue(this.id)&&(Bridge.global.clearTimeout(System.Nullable.getValue(this.id)),this.id=null)},dispose:function(){this.clearTimeout();this.disposed=!0}});Bridge.define("Bridge.Console",{statics:{BODY_WRAPPER_ID:"bridge-body-wrapper",CONSOLE_MESSAGES_ID:"bridge-console-messages",position:"horizontal",instance:null,getInstance:function(){return Bridge.Console.instance==null&&(Bridge.Console.instance=new Bridge.Console),Bridge.Console.instance},logBase:function(n,t){var i,r,u;if(t===void 0&&(t=0),i=Bridge.Console.getInstance(),r=n!=null?n.toString():"null",i.bufferedOutput!=null){i.bufferedOutput=System.String.concat(i.bufferedOutput,r);return}Bridge.Console.show();u=i.buildConsoleMessage(r,t);i.consoleMessages.appendChild(u);i.currentMessageElement=u;i.consoleDefined?t===1&&i.consoleDebugDefined?Bridge.global.console.debug(r):Bridge.global.console.log(r):i.operaPostErrorDefined&&Bridge.global.opera.postError(r)},error:function(n){Bridge.Console.logBase(n,2)},debug:function(n){Bridge.Console.logBase(n,1)},log:function(n){Bridge.Console.logBase(n)},hide:function(){if(Bridge.Console.instance!=null){var n=Bridge.Console.getInstance();n.hidden||n.close()}},show:function(){var n=Bridge.Console.getInstance();n.hidden&&n.init(!0)},toggle:function(){Bridge.Console.getInstance().hidden?Bridge.Console.show():Bridge.Console.hide()}},svgNS:"http://www.w3.org/2000/svg",consoleHeight:"300px",consoleHeaderHeight:"35px",tooltip:null,consoleWrapper:null,consoleMessages:null,bridgeIcon:null,bridgeIconPath:null,bridgeConsoleLabel:null,closeBtn:null,closeIcon:null,closeIconPath:null,consoleHeader:null,consoleBody:null,hidden:!0,consoleDefined:!1,consoleDebugDefined:!1,operaPostErrorDefined:!1,currentMessageElement:null,bufferedOutput:null,ctor:function(){this.$initialize();this.init()},init:function(n){var s,i,h,c,f,r;n===void 0&&(n=!1);this.hidden=!1;var t=Bridge.fn.bind(this,o.$.Bridge.Console.f1)(new(System.Collections.Generic.Dictionary$2(String,String))),e=o.$.Bridge.Console.f2(new(System.Collections.Generic.Dictionary$2(String,String))),u=o.$.Bridge.Console.f3(new(System.Collections.Generic.Dictionary$2(String,String)));this.bridgeIcon=this.bridgeIcon||document.createElementNS(this.svgNS,"svg");s=Bridge.fn.bind(this,o.$.Bridge.Console.f4)(new(System.Collections.Generic.Dictionary$2(String,String)));this.setAttributes(this.bridgeIcon,s);this.bridgeIconPath=this.bridgeIconPath||document.createElementNS(this.svgNS,"path");i=new(System.Collections.Generic.Dictionary$2(String,String));i.set("d","M19 14.4h2.2V9.6L19 7.1v7.3zm4.3-2.5v2.5h2.2l-2.2-2.5zm-8.5 2.5H17V4.8l-2.2-2.5v12.1zM0 14.4h3l7.5-8.5v8.5h2.2V0L0 14.4z");i.set("fill","#555");this.setAttributes(this.bridgeIconPath,i);this.bridgeConsoleLabel=this.bridgeConsoleLabel||document.createElement("span");this.bridgeConsoleLabel.innerHTML="Bridge Console";this.closeBtn=this.closeBtn||document.createElement("span");this.closeBtn.setAttribute("style","position: relative;display: inline-block;float: right;cursor: pointer");this.closeIcon=this.closeIcon||document.createElementNS(this.svgNS,"svg");h=Bridge.fn.bind(this,o.$.Bridge.Console.f5)(new(System.Collections.Generic.Dictionary$2(String,String)));this.setAttributes(this.closeIcon,h);this.closeIconPath=this.closeIconPath||document.createElementNS(this.svgNS,"path");c=o.$.Bridge.Console.f6(new(System.Collections.Generic.Dictionary$2(String,String)));this.setAttributes(this.closeIconPath,c);this.tooltip=this.tooltip||document.createElement("div");this.tooltip.innerHTML="Refresh page to open Bridge Console";this.tooltip.setAttribute("style","position: absolute;right: 30px;top: -6px;white-space: nowrap;padding: 7px;border-radius: 3px;background-color: rgba(0, 0, 0, 0.75);color: #eee;text-align: center;visibility: hidden;opacity: 0;-webkit-transition: all 0.25s ease-in-out;transition: all 0.25s ease-in-out;z-index: 1;");Bridge.Console.position="horizontal";Bridge.referenceEquals(Bridge.Console.position,"horizontal")?(this.wrapBodyContent(),t.set("right","0"),e.set("border-top","1px solid #a3a3a3"),u.set("height",this.consoleHeight)):Bridge.referenceEquals(Bridge.Console.position,"vertical")&&(f="400px",document.body.style.marginLeft=f,t.set("top","0"),t.set("width",f),t.set("border-right","1px solid #a3a3a3"),u.set("height","100%"));this.consoleWrapper=this.consoleWrapper||document.createElement("div");this.consoleWrapper.setAttribute("style",this.obj2Css(t));this.consoleHeader=this.consoleHeader||document.createElement("div");this.consoleHeader.setAttribute("style",this.obj2Css(e));this.consoleBody=this.consoleBody||document.createElement("div");this.consoleBody.setAttribute("style",this.obj2Css(u));this.consoleMessages=this.consoleMessages||document.createElement("ul");r=this.consoleMessages;r.id=Bridge.Console.CONSOLE_MESSAGES_ID;r.setAttribute("style","margin: 0;padding: 0;list-style: none;");n||(this.bridgeIcon.appendChild(this.bridgeIconPath),this.closeIcon.appendChild(this.closeIconPath),this.closeBtn.appendChild(this.closeIcon),this.closeBtn.appendChild(this.tooltip),this.consoleHeader.appendChild(this.bridgeIcon),this.consoleHeader.appendChild(this.bridgeConsoleLabel),this.consoleHeader.appendChild(this.closeBtn),this.consoleBody.appendChild(r),this.consoleWrapper.appendChild(this.consoleHeader),this.consoleWrapper.appendChild(this.consoleBody),document.body.appendChild(this.consoleWrapper),this.closeBtn.addEventListener("click",Bridge.fn.bind(this,this.close)),this.closeBtn.addEventListener("mouseover",Bridge.fn.bind(this,this.showTooltip)),this.closeBtn.addEventListener("mouseout",Bridge.fn.bind(this,this.hideTooltip)),this.consoleDefined=Bridge.isDefined(Bridge.global)&&Bridge.isDefined(Bridge.global.console),this.consoleDebugDefined=this.consoleDefined&&Bridge.isDefined(Bridge.global.console.debug),this.operaPostErrorDefined=Bridge.isDefined(Bridge.global.opera)&&Bridge.isDefined(Bridge.global.opera.postError))},showTooltip:function(){var n=Bridge.Console.getInstance();n.tooltip.style.right="20px";n.tooltip.style.visibility="visible";n.tooltip.style.opacity="1"},hideTooltip:function(){var n=Bridge.Console.getInstance();n.tooltip.style.right="30px";n.tooltip.style.opacity="0"},close:function(){this.hidden=!0;this.consoleWrapper.style.display="none";Bridge.referenceEquals(Bridge.Console.position,"horizontal")?this.unwrapBodyContent():Bridge.referenceEquals(Bridge.Console.position,"vertical")&&document.body.removeAttribute("style")},wrapBodyContent:function(){if(document.body!=null){var n=document.defaultView.getComputedStyle(document.body,null),i=n.paddingTop,r=n.paddingRight,s=n.paddingBottom,u=n.paddingLeft,f=n.marginTop,e=n.marginRight,h=n.marginBottom,o=n.marginLeft,t=document.createElement("div");for(t.id=Bridge.Console.BODY_WRAPPER_ID,t.setAttribute("style",System.String.concat("height: calc(100vh - ",this.consoleHeight," - ",this.consoleHeaderHeight,");","margin-top: calc(-1 * ","(",System.String.concat(f," + ",i),"));","margin-right: calc(-1 * ","(",System.String.concat(e," + ",r),"));","margin-left: calc(-1 * ","(",System.String.concat(o," + ",u),"));","padding-top: calc(",System.String.concat(f," + ",i),");","padding-right: calc(",System.String.concat(e," + ",r),");","padding-bottom: calc(",System.String.concat(h," + ",s),");","padding-left: calc(",System.String.concat(o," + ",u),");","overflow-x: auto;","box-sizing: border-box !important;"));document.body.firstChild!=null;)t.appendChild(document.body.firstChild);document.body.appendChild(t)}},unwrapBodyContent:function(){var n=document.getElementById(Bridge.Console.BODY_WRAPPER_ID);if(n!=null){while(n.firstChild!=null)document.body.insertBefore(n.firstChild,n);document.body.removeChild(n)}},buildConsoleMessage:function(n,t){var r=document.createElement("li"),u,h,i,s,f,e;return r.setAttribute("style","padding: 5px 10px;border-bottom: 1px solid #f0f0f0;"),u=document.createElementNS(this.svgNS,"svg"),h=Bridge.fn.bind(this,o.$.Bridge.Console.f7)(new(System.Collections.Generic.Dictionary$2(String,String))),this.setAttributes(u,h),i="#555",t===2?i="#d65050":t===1&&(i="#1800FF"),s=document.createElementNS(this.svgNS,"path"),f=new(System.Collections.Generic.Dictionary$2(String,String)),f.set("d","M3.8 3.5L.7 6.6s-.1.1-.2.1-.1 0-.2-.1l-.2-.3C0 6.2 0 6.2 0 6.1c0 0 0-.1.1-.1l2.6-2.6L.1.7C0 .7 0 .6 0 .6 0 .5 0 .5.1.4L.4.1c0-.1.1-.1.2-.1s.1 0 .2.1l3.1 3.1s.1.1.1.2-.1.1-.2.1z"),f.set("fill",i),this.setAttributes(s,f),u.appendChild(s),e=document.createElement("span"),e.innerHTML=n,e.setAttribute("style",System.String.concat("color: ",i,"; white-space: pre;")),r.appendChild(u),r.appendChild(e),r},setAttributes:function(n,t){for(var r,i=Bridge.getEnumerator(t);i.moveNext();)r=i.getCurrent(),n.setAttribute(r.key,r.value)},obj2Css:function(n){for(var i="",r,t=Bridge.getEnumerator(n);t.moveNext();)r=t.getCurrent(),i=System.String.concat(i,System.String.concat(r.key.toLowerCase(),":",r.value,";"));return i}});Bridge.ns("Bridge.Console",o.$);Bridge.apply(o.$.Bridge.Console,{f1:function(n){return n.add("position","fixed"),n.add("left","0"),n.add("bottom","0"),n.add("padding-top",this.consoleHeaderHeight),n.add("background-color","#fff"),n.add("font","normal normal normal 13px/1 sans-serif"),n.add("color","#555"),n},f2:function(n){return n.add("position","absolute"),n.add("top","0"),n.add("left","0"),n.add("right","0"),n.add("height","35px"),n.add("padding","9px 15px 7px 10px"),n.add("border-bottom","1px solid #ccc"),n.add("background-color","#f3f3f3"),n.add("box-sizing","border-box"),n},f3:function(n){return n.add("overflow-x","auto"),n.add("font-family","Menlo, Monaco, Consolas, 'Courier New', monospace"),n},f4:function(n){return n.add("xmlns",this.svgNS),n.add("width","25.5"),n.add("height","14.4"),n.add("viewBox","0 0 25.5 14.4"),n.add("style","margin: 0 3px 3px 0;vertical-align:middle;"),n},f5:function(n){return n.add("xmlns",this.svgNS),n.add("width","11.4"),n.add("height","11.4"),n.add("viewBox","0 0 11.4 11.4"),n.add("style","vertical-align: middle;"),n},f6:function(n){return n.add("d","M11.4 1.4L10 0 5.7 4.3 1.4 0 0 1.4l4.3 4.3L0 10l1.4 1.4 4.3-4.3 4.3 4.3 1.4-1.4-4.3-4.3"),n.add("fill","#555"),n},f7:function(n){return n.add("xmlns",this.svgNS),n.add("width","3.9"),n.add("height","6.7"),n.add("viewBox","0 0 3.9 6.7"),n.add("style","margin-right: 7px; vertical-align: middle;"),n}});typeof define=="function"&&define.amd?define("bridge",[],function(){return Bridge}):typeof module!="undefined"&&module.exports&&(module.exports=Bridge)})(this); +Bridge.assembly("Bridge.Collections",function(){"use strict";Bridge.define("System.Collections.BitArray",{inherits:[System.Collections.ICollection,System.ICloneable],statics:{BitsPerInt32:32,BytesPerInt32:4,BitsPerByte:8,_ShrinkThreshold:256,getArrayLength:function(n,t){return n>0?(Bridge.Int.div(n-1|0,t)|0)+1|0:0}},m_array:null,m_length:0,_version:0,config:{alias:["getCount","System$Collections$ICollection$getCount","clone","System$ICloneable$clone","getIsReadOnly","System$Collections$ICollection$getIsReadOnly","getEnumerator","System$Collections$IEnumerable$getEnumerator"]},$ctor3:function(n){System.Collections.BitArray.$ctor4.call(this,n,!1)},$ctor4:function(n,t){var r,i;if(this.$initialize(),n<0)throw new System.ArgumentOutOfRangeException("length","Index is less than zero.");for(this.m_array=System.Array.init(System.Collections.BitArray.getArrayLength(n,System.Collections.BitArray.BitsPerInt32),0),this.m_length=n,r=t?-1:0,i=0;i<this.m_array.length;i=i+1|0)this.m_array[i]=r;this._version=0},$ctor1:function(n){var i,t,r;if(this.$initialize(),n==null)throw new System.ArgumentNullException("bytes");if(n.length>268435455)throw new System.ArgumentException(System.String.format("The input array length must not exceed Int32.MaxValue / {0}. Otherwise BitArray.Length would exceed Int32.MaxValue.",System.Collections.BitArray.BitsPerByte),"bytes");for(this.m_array=System.Array.init(System.Collections.BitArray.getArrayLength(n.length,System.Collections.BitArray.BytesPerInt32),0),this.m_length=n.length*System.Collections.BitArray.BitsPerByte|0,i=0,t=0;(n.length-t|0)>=4;)this.m_array[Bridge.identity(i,i=i+1|0)]=n[t]&255|(n[t+1|0]&255)<<8|(n[t+2|0]&255)<<16|(n[t+3|0]&255)<<24,t=t+4|0;r=n.length-t|0;r===3&&(this.m_array[i]=(n[t+2|0]&255)<<16,r=2);r===2&&(this.m_array[i]=this.m_array[i]|(n[t+1|0]&255)<<8,r=1);r===1&&(this.m_array[i]=this.m_array[i]|n[t]&255);this._version=0},ctor:function(n){if(this.$initialize(),n==null)throw new System.ArgumentNullException("values");this.m_array=System.Array.init(System.Collections.BitArray.getArrayLength(n.length,System.Collections.BitArray.BitsPerInt32),0);this.m_length=n.length;for(var t=0;t<n.length;t=t+1|0)n[t]&&(this.m_array[Bridge.Int.div(t,32)|0]=this.m_array[Bridge.Int.div(t,32)|0]|1<<t%32);this._version=0},$ctor5:function(n){if(this.$initialize(),n==null)throw new System.ArgumentNullException("values");if(n.length>67108863)throw new System.ArgumentException(System.String.format("The input array length must not exceed Int32.MaxValue / {0}. Otherwise BitArray.Length would exceed Int32.MaxValue.",System.Collections.BitArray.BitsPerInt32),"values");this.m_array=System.Array.init(n.length,0);this.m_length=n.length*System.Collections.BitArray.BitsPerInt32|0;System.Array.copy(n,0,this.m_array,0,n.length);this._version=0},$ctor2:function(n){if(this.$initialize(),n==null)throw new System.ArgumentNullException("bits");var t=System.Collections.BitArray.getArrayLength(n.m_length,System.Collections.BitArray.BitsPerInt32);this.m_array=System.Array.init(t,0);this.m_length=n.m_length;System.Array.copy(n.m_array,0,this.m_array,0,t);this._version=n._version},getItem:function(n){return this.get(n)},setItem:function(n,t){this.set(n,t)},getLength:function(){return this.m_length},setLength:function(n){var t,r,i,u;if(n<0)throw new System.ArgumentOutOfRangeException("value","Non-negative number required.");t=System.Collections.BitArray.getArrayLength(n,System.Collections.BitArray.BitsPerInt32);(t>this.m_array.length||(t+System.Collections.BitArray._ShrinkThreshold|0)<this.m_array.length)&&(r=System.Array.init(t,0),System.Array.copy(this.m_array,0,r,0,t>this.m_array.length?this.m_array.length:t),this.m_array=r);n>this.m_length&&(i=System.Collections.BitArray.getArrayLength(this.m_length,System.Collections.BitArray.BitsPerInt32)-1|0,u=this.m_length%32,u>0&&(this.m_array[i]=this.m_array[i]&((1<<u)-1|0)),System.Array.fill(this.m_array,0,i+1|0,(t-i|0)-1|0));this.m_length=n;this._version=this._version+1|0},getCount:function(){return this.m_length},getIsReadOnly:function(){return!1},getIsSynchronized:function(){return!1},get:function(n){if(n<0||n>=this.getLength())throw new System.ArgumentOutOfRangeException("index","Index was out of range. Must be non-negative and less than the size of the collection.");return(this.m_array[Bridge.Int.div(n,32)|0]&1<<n%32)!=0},set:function(n,t){if(n<0||n>=this.getLength())throw new System.ArgumentOutOfRangeException("index","Index was out of range. Must be non-negative and less than the size of the collection.");this.m_array[Bridge.Int.div(n,32)|0]=t?this.m_array[Bridge.Int.div(n,32)|0]|1<<n%32:this.m_array[Bridge.Int.div(n,32)|0]&~(1<<n%32);this._version=this._version+1|0},setAll:function(n){for(var i=n?-1:0,r=System.Collections.BitArray.getArrayLength(this.m_length,System.Collections.BitArray.BitsPerInt32),t=0;t<r;t=t+1|0)this.m_array[t]=i;this._version=this._version+1|0},and:function(n){var i,t;if(n==null)throw new System.ArgumentNullException("value");if(this.getLength()!==n.getLength())throw new System.ArgumentException("Array lengths must be the same.");for(i=System.Collections.BitArray.getArrayLength(this.m_length,System.Collections.BitArray.BitsPerInt32),t=0;t<i;t=t+1|0)this.m_array[t]=this.m_array[t]&n.m_array[t];return this._version=this._version+1|0,this},or:function(n){var i,t;if(n==null)throw new System.ArgumentNullException("value");if(this.getLength()!==n.getLength())throw new System.ArgumentException("Array lengths must be the same.");for(i=System.Collections.BitArray.getArrayLength(this.m_length,System.Collections.BitArray.BitsPerInt32),t=0;t<i;t=t+1|0)this.m_array[t]=this.m_array[t]|n.m_array[t];return this._version=this._version+1|0,this},xor:function(n){var i,t;if(n==null)throw new System.ArgumentNullException("value");if(this.getLength()!==n.getLength())throw new System.ArgumentException("Array lengths must be the same.");for(i=System.Collections.BitArray.getArrayLength(this.m_length,System.Collections.BitArray.BitsPerInt32),t=0;t<i;t=t+1|0)this.m_array[t]=this.m_array[t]^n.m_array[t];return this._version=this._version+1|0,this},not:function(){for(var t=System.Collections.BitArray.getArrayLength(this.m_length,System.Collections.BitArray.BitsPerInt32),n=0;n<t;n=n+1|0)this.m_array[n]=~this.m_array[n];return this._version=this._version+1|0,this},clone:function(){var n=new System.Collections.BitArray.$ctor5(this.m_array);return n._version=this._version,n.m_length=this.m_length,n},getEnumerator:function(){return new System.Collections.BitArray.BitArrayEnumeratorSimple(this)}});Bridge.define("System.Collections.BitArray.BitArrayEnumeratorSimple",{inherits:[System.Collections.IEnumerator],bitarray:null,index:0,version:0,currentElement:!1,config:{alias:["moveNext","System$Collections$IEnumerator$moveNext","getCurrent","System$Collections$IEnumerator$getCurrent","reset","System$Collections$IEnumerator$reset"]},ctor:function(n){this.$initialize();this.bitarray=n;this.index=-1;this.version=n._version},getCurrent:function(){if(this.index===-1)throw new System.InvalidOperationException("Enumeration has not started. Call MoveNext.");if(this.index>=this.bitarray.getCount())throw new System.InvalidOperationException("Enumeration already finished.");return this.currentElement},moveNext:function(){if(this.version!==this.bitarray._version)throw new System.InvalidOperationException("Collection was modified; enumeration operation may not execute.");return this.index<(this.bitarray.getCount()-1|0)?(this.index=this.index+1|0,this.currentElement=this.bitarray.get(this.index),!0):(this.index=this.bitarray.getCount(),!1)},reset:function(){if(this.version!==this.bitarray._version)throw new System.InvalidOperationException("Collection was modified; enumeration operation may not execute.");this.index=-1}});Bridge.define("System.Collections.Generic.BitHelper",{statics:{MarkedBitFlag:1,IntSize:32,toIntArrayLength:function(n){return n>0?(Bridge.Int.div(n-1|0,System.Collections.Generic.BitHelper.IntSize)|0)+1|0:0}},_length:0,_array:null,ctor:function(n,t){this.$initialize();this._array=n;this._length=t},markBit:function(n){var t=Bridge.Int.div(n,System.Collections.Generic.BitHelper.IntSize)|0,i;t<this._length&&t>=0&&(i=System.Collections.Generic.BitHelper.MarkedBitFlag<<n%System.Collections.Generic.BitHelper.IntSize,this._array[t]=this._array[t]|i)},isMarked:function(n){var t=Bridge.Int.div(n,System.Collections.Generic.BitHelper.IntSize)|0,i;return t<this._length&&t>=0?(i=System.Collections.Generic.BitHelper.MarkedBitFlag<<n%System.Collections.Generic.BitHelper.IntSize,(this._array[t]&i)!=0):!1}});Bridge.define("Bridge.Collections.EnumerableHelpers",{statics:{toArray:function(n,t){var i={},r={v:Bridge.Collections.EnumerableHelpers.toArray$1(n,t,i)};return System.Array.resize(r,i.v,Bridge.getDefaultValue(n)),r.v},toArray$1:function(n,t,i){var u=Bridge.getEnumerator(t,null,n),s,f,r,e,o;try{if(u.System$Collections$IEnumerator$moveNext()){for(s=4,f={v:System.Array.init(s,function(){return Bridge.getDefaultValue(n)})},f.v[0]=u[Bridge.geti(u,"System$Collections$Generic$IEnumerator$1$"+Bridge.getTypeAlias(n)+"$getCurrent$1","getCurrent$1")](),r=1;u.System$Collections$IEnumerator$moveNext();)r===f.v.length&&(e=2146435071,o=r<<1,o>>>0>e&&(o=e<=r?r+1|0:e),System.Array.resize(f,o,Bridge.getDefaultValue(n))),f.v[Bridge.identity(r,r=r+1|0)]=u[Bridge.geti(u,"System$Collections$Generic$IEnumerator$1$"+Bridge.getTypeAlias(n)+"$getCurrent$1","getCurrent$1")]();return i.v=r,f.v}}finally{Bridge.hasValue(u)&&u.dispose()}return i.v=0,System.Array.init(0,function(){return Bridge.getDefaultValue(n)})}}});Bridge.define("System.Collections.Generic.HashSet$1",function(n){return{inherits:[System.Collections.Generic.ICollection$1(n),System.Collections.Generic.ISet$1(n)],statics:{Lower31BitMask:2147483647,ShrinkThreshold:3,hashSetEquals:function(t,i,r){var u,f,e,s,h,o,c;if(t==null)return i==null;if(i==null)return!1;if(System.Collections.Generic.HashSet$1(n).areEqualityComparersEqual(t,i)){if(t.getCount()!==i.getCount())return!1;for(u=Bridge.getEnumerator(i);u.moveNext();)if(s=u.getCurrent(),!t.contains(s))return!1;return!0}for(f=Bridge.getEnumerator(i);f.moveNext();){for(h=f.getCurrent(),o=!1,e=Bridge.getEnumerator(t);e.moveNext();)if(c=e.getCurrent(),r["System$Collections$Generic$IEqualityComparer$1$"+Bridge.getTypeAlias(n)+"$equals2"](h,c)){o=!0;break}if(!o)return!1}return!0},areEqualityComparersEqual:function(n,t){return Bridge.equals(n.getComparer(),t.getComparer())}},_buckets:null,_slots:null,_count:0,_lastIndex:0,_freeList:0,_comparer:null,_version:0,config:{alias:["System$Collections$Generic$ICollection$1$T$add","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$add","clear","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$clear","contains","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$contains","copyTo","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$copyTo","remove","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$remove","getCount","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$getCount","getIsReadOnly","System$Collections$Generic$ICollection$1$"+Bridge.getTypeAlias(n)+"$getIsReadOnly","System$Collections$Generic$IEnumerable$1$T$getEnumerator","System$Collections$Generic$IEnumerable$1$"+Bridge.getTypeAlias(n)+"$getEnumerator","add","System$Collections$Generic$ISet$1$"+Bridge.getTypeAlias(n)+"$add","unionWith","System$Collections$Generic$ISet$1$"+Bridge.getTypeAlias(n)+"$unionWith","intersectWith","System$Collections$Generic$ISet$1$"+Bridge.getTypeAlias(n)+"$intersectWith","exceptWith","System$Collections$Generic$ISet$1$"+Bridge.getTypeAlias(n)+"$exceptWith","symmetricExceptWith","System$Collections$Generic$ISet$1$"+Bridge.getTypeAlias(n)+"$symmetricExceptWith","isSubsetOf","System$Collections$Generic$ISet$1$"+Bridge.getTypeAlias(n)+"$isSubsetOf","isProperSubsetOf","System$Collections$Generic$ISet$1$"+Bridge.getTypeAlias(n)+"$isProperSubsetOf","isSupersetOf","System$Collections$Generic$ISet$1$"+Bridge.getTypeAlias(n)+"$isSupersetOf","isProperSupersetOf","System$Collections$Generic$ISet$1$"+Bridge.getTypeAlias(n)+"$isProperSupersetOf","overlaps","System$Collections$Generic$ISet$1$"+Bridge.getTypeAlias(n)+"$overlaps","setEquals","System$Collections$Generic$ISet$1$"+Bridge.getTypeAlias(n)+"$setEquals"]},ctor:function(){System.Collections.Generic.HashSet$1(n).$ctor3.call(this,System.Collections.Generic.EqualityComparer$1(n).def)},$ctor3:function(t){this.$initialize();t==null&&(t=System.Collections.Generic.EqualityComparer$1(n).def);this._comparer=t;this._lastIndex=0;this._count=0;this._freeList=-1;this._version=0},$ctor1:function(t){System.Collections.Generic.HashSet$1(n).$ctor2.call(this,t,System.Collections.Generic.EqualityComparer$1(n).def)},$ctor2:function(t,i){if(System.Collections.Generic.HashSet$1(n).$ctor3.call(this,i),t==null)throw new System.ArgumentNullException("collection");var r=0,u=Bridge.as(t,System.Collections.Generic.ICollection$1(n));u!=null&&(r=System.Array.getCount(u,n));this.initialize(r);this.unionWith(t);(this._count===0&&this._slots.length>System.Collections.HashHelpers.getMinPrime()||this._count>0&&(Bridge.Int.div(this._slots.length,this._count)|0)>System.Collections.Generic.HashSet$1(n).ShrinkThreshold)&&this.trimExcess()},getCount:function(){return this._count},getIsReadOnly:function(){return!1},getComparer:function(){return this._comparer},System$Collections$Generic$ICollection$1$T$add:function(n){this.addIfNotPresent(n)},add:function(n){return this.addIfNotPresent(n)},clear:function(){var t,i;if(this._lastIndex>0){for(t=0;t<this._lastIndex;t=t+1|0)this._slots[t]=new(System.Collections.Generic.HashSet$1.Slot(n));for(i=0;i<this._buckets.length;i=i+1|0)this._buckets[i]=0;this._lastIndex=0;this._count=0;this._freeList=-1}this._version=this._version+1|0},arrayClear:function(){},contains:function(t){var r,i;if(this._buckets!=null)for(r=this.internalGetHashCode(t),i=this._buckets[r%this._buckets.length]-1|0;i>=0;i=this._slots[i].next)if(this._slots[i].hashCode===r&&this._comparer["System$Collections$Generic$IEqualityComparer$1$"+Bridge.getTypeAlias(n)+"$equals2"](this._slots[i].value,t))return!0;return!1},copyTo:function(n,t){this.copyTo$2(n,t,this._count)},copyTo$1:function(n){this.copyTo$2(n,0,this._count)},copyTo$2:function(n,t,i){var u,r;if(n==null)throw new System.ArgumentNullException("array");if(t<0)throw new System.ArgumentOutOfRangeException("arrayIndex");if(i<0)throw new System.ArgumentOutOfRangeException("count");if(t>n.length||i>(n.length-t|0))throw new System.ArgumentException("Destination array is not long enough to copy all the items in the collection. Check array index and length.");for(u=0,r=0;r<this._lastIndex&&u<i;r=r+1|0)this._slots[r].hashCode>=0&&(n[t+u|0]=this._slots[r].value,u=u+1|0)},remove:function(t){var i;if(this._buckets!=null){var u=this.internalGetHashCode(t),f=u%this._buckets.length,r=-1;for(i=this._buckets[f]-1|0;i>=0;r=i,i=this._slots[i].next)if(this._slots[i].hashCode===u&&this._comparer["System$Collections$Generic$IEqualityComparer$1$"+Bridge.getTypeAlias(n)+"$equals2"](this._slots[i].value,t))return r<0?this._buckets[f]=this._slots[i].next+1|0:this._slots[r].next=this._slots[i].next,this._slots[i].hashCode=-1,this._slots[i].value=Bridge.getDefaultValue(n),this._slots[i].next=this._freeList,this._count=this._count-1|0,this._version=this._version+1|0,this._count===0?(this._lastIndex=0,this._freeList=-1):this._freeList=i,!0}return!1},getEnumerator:function(){return new(System.Collections.Generic.HashSet$1.Enumerator(n).$ctor1)(this)},System$Collections$Generic$IEnumerable$1$T$getEnumerator:function(){return new(System.Collections.Generic.HashSet$1.Enumerator(n).$ctor1)(this)},System$Collections$IEnumerable$getEnumerator:function(){return new(System.Collections.Generic.HashSet$1.Enumerator(n).$ctor1)(this)},unionWith:function(t){var i,r;if(t==null)throw new System.ArgumentNullException("other");for(i=Bridge.getEnumerator(t,null,n);i.moveNext();)r=i.getCurrent(),this.addIfNotPresent(r)},intersectWith:function(t){var r,i;if(t==null)throw new System.ArgumentNullException("other");if(this._count!==0){if(r=Bridge.as(t,System.Collections.Generic.ICollection$1(n)),r!=null){if(System.Array.getCount(r,n)===0){this.clear();return}if(i=Bridge.as(t,System.Collections.Generic.HashSet$1(n)),i!=null&&System.Collections.Generic.HashSet$1(n).areEqualityComparersEqual(this,i)){this.intersectWithHashSetWithSameEC(i);return}}this.intersectWithEnumerable(t)}},exceptWith:function(t){var i,r;if(t==null)throw new System.ArgumentNullException("other");if(this._count!==0){if(Bridge.referenceEquals(t,this)){this.clear();return}for(i=Bridge.getEnumerator(t,null,n);i.moveNext();)r=i.getCurrent(),this.remove(r)}},symmetricExceptWith:function(t){if(t==null)throw new System.ArgumentNullException("other");if(this._count===0){this.unionWith(t);return}if(Bridge.referenceEquals(t,this)){this.clear();return}var i=Bridge.as(t,System.Collections.Generic.HashSet$1(n));i!=null&&System.Collections.Generic.HashSet$1(n).areEqualityComparersEqual(this,i)?this.symmetricExceptWithUniqueHashSet(i):this.symmetricExceptWithEnumerable(t)},isSubsetOf:function(t){var i,r;if(t==null)throw new System.ArgumentNullException("other");return this._count===0?!0:(i=Bridge.as(t,System.Collections.Generic.HashSet$1(n)),i!=null&&System.Collections.Generic.HashSet$1(n).areEqualityComparersEqual(this,i)?this._count>i.getCount()?!1:this.isSubsetOfHashSetWithSameEC(i):(r=this.checkUniqueAndUnfoundElements(t,!1).$clone(),r.uniqueCount===this._count&&r.unfoundCount>=0))},isProperSubsetOf:function(t){var r,i,u;if(t==null)throw new System.ArgumentNullException("other");if(r=Bridge.as(t,System.Collections.Generic.ICollection$1(n)),r!=null){if(this._count===0)return System.Array.getCount(r,n)>0;if(i=Bridge.as(t,System.Collections.Generic.HashSet$1(n)),i!=null&&System.Collections.Generic.HashSet$1(n).areEqualityComparersEqual(this,i))return this._count>=i.getCount()?!1:this.isSubsetOfHashSetWithSameEC(i)}return u=this.checkUniqueAndUnfoundElements(t,!1).$clone(),u.uniqueCount===this._count&&u.unfoundCount>0},isSupersetOf:function(t){var r,i;if(t==null)throw new System.ArgumentNullException("other");if(r=Bridge.as(t,System.Collections.Generic.ICollection$1(n)),r!=null){if(System.Array.getCount(r,n)===0)return!0;if(i=Bridge.as(t,System.Collections.Generic.HashSet$1(n)),i!=null&&System.Collections.Generic.HashSet$1(n).areEqualityComparersEqual(this,i)&&i.getCount()>this._count)return!1}return this.containsAllElements(t)},isProperSupersetOf:function(t){var r,i,u;if(t==null)throw new System.ArgumentNullException("other");if(this._count===0)return!1;if(r=Bridge.as(t,System.Collections.Generic.ICollection$1(n)),r!=null){if(System.Array.getCount(r,n)===0)return!0;if(i=Bridge.as(t,System.Collections.Generic.HashSet$1(n)),i!=null&&System.Collections.Generic.HashSet$1(n).areEqualityComparersEqual(this,i))return i.getCount()>=this._count?!1:this.containsAllElements(i)}return u=this.checkUniqueAndUnfoundElements(t,!0).$clone(),u.uniqueCount<this._count&&u.unfoundCount===0},overlaps:function(t){var i,r;if(t==null)throw new System.ArgumentNullException("other");if(this._count===0)return!1;for(i=Bridge.getEnumerator(t,null,n);i.moveNext();)if(r=i.getCurrent(),this.contains(r))return!0;return!1},setEquals:function(t){var i,r,u;if(t==null)throw new System.ArgumentNullException("other");return i=Bridge.as(t,System.Collections.Generic.HashSet$1(n)),i!=null&&System.Collections.Generic.HashSet$1(n).areEqualityComparersEqual(this,i)?this._count!==i.getCount()?!1:this.containsAllElements(i):(r=Bridge.as(t,System.Collections.Generic.ICollection$1(n)),r!=null&&this._count===0&&System.Array.getCount(r,n)>0)?!1:(u=this.checkUniqueAndUnfoundElements(t,!0).$clone(),u.uniqueCount===this._count&&u.unfoundCount===0)},removeWhere:function(n){var i,t,r;if(Bridge.staticEquals(n,null))throw new System.ArgumentNullException("match");for(i=0,t=0;t<this._lastIndex;t=t+1|0)this._slots[t].hashCode>=0&&(r=this._slots[t].value,n(r)&&this.remove(r)&&(i=i+1|0));return i},trimExcess:function(){var i,e;if(this._count===0)this._buckets=null,this._slots=null,this._version=this._version+1|0;else{var u=System.Collections.HashHelpers.getPrime(this._count),r=System.Array.init(u,function(){return new(System.Collections.Generic.HashSet$1.Slot(n))}),f=System.Array.init(u,0),t=0;for(i=0;i<this._lastIndex;i=i+1|0)this._slots[i].hashCode>=0&&(r[t]=this._slots[i].$clone(),e=r[t].hashCode%u,r[t].next=f[e]-1|0,f[e]=t+1|0,t=t+1|0);this._lastIndex=t;this._slots=r;this._buckets=f;this._freeList=-1}},initialize:function(t){var i=System.Collections.HashHelpers.getPrime(t);this._buckets=System.Array.init(i,0);this._slots=System.Array.init(i,function(){return new(System.Collections.Generic.HashSet$1.Slot(n))})},increaseCapacity:function(){var n=System.Collections.HashHelpers.expandPrime(this._count);if(n<=this._count)throw new System.ArgumentException("HashSet capacity is too big.");this.setCapacity(n,!1)},setCapacity:function(t,i){var r=System.Array.init(t,function(){return new(System.Collections.Generic.HashSet$1.Slot(n))}),e,u,o,f,s;if(this._slots!=null)for(e=0;e<this._lastIndex;e=e+1|0)r[e]=this._slots[e].$clone();if(i)for(u=0;u<this._lastIndex;u=u+1|0)r[u].hashCode!==-1&&(r[u].hashCode=this.internalGetHashCode(r[u].value));for(o=System.Array.init(t,0),f=0;f<this._lastIndex;f=f+1|0)s=r[f].hashCode%t,r[f].next=o[s]-1|0,o[s]=f+1|0;this._slots=r;this._buckets=o},addIfNotPresent:function(t){var u,f,r,i;for(this._buckets==null&&this.initialize(0),u=this.internalGetHashCode(t),f=u%this._buckets.length,r=this._buckets[f]-1|0;r>=0;r=this._slots[r].next)if(this._slots[r].hashCode===u&&this._comparer["System$Collections$Generic$IEqualityComparer$1$"+Bridge.getTypeAlias(n)+"$equals2"](this._slots[r].value,t))return!1;return this._freeList>=0?(i=this._freeList,this._freeList=this._slots[i].next):(this._lastIndex===this._slots.length&&(this.increaseCapacity(),f=u%this._buckets.length),i=this._lastIndex,this._lastIndex=this._lastIndex+1|0),this._slots[i].hashCode=u,this._slots[i].value=t,this._slots[i].next=this._buckets[f]-1|0,this._buckets[f]=i+1|0,this._count=this._count+1|0,this._version=this._version+1|0,!0},containsAllElements:function(t){for(var r,i=Bridge.getEnumerator(t,null,n);i.moveNext();)if(r=i.getCurrent(),!this.contains(r))return!1;return!0},isSubsetOfHashSetWithSameEC:function(n){for(var i,t=Bridge.getEnumerator(this);t.moveNext();)if(i=t.getCurrent(),!n.contains(i))return!1;return!0},intersectWithHashSetWithSameEC:function(n){for(var i,t=0;t<this._lastIndex;t=t+1|0)this._slots[t].hashCode>=0&&(i=this._slots[t].value,n.contains(i)||this.remove(i))},intersectWithEnumerable:function(t){for(var e=this._lastIndex,o=System.Collections.Generic.BitHelper.toIntArrayLength(e),h=System.Array.init(o,0),s,f,i,u=new System.Collections.Generic.BitHelper(h,o),r=Bridge.getEnumerator(t,null,n);r.moveNext();)s=r.getCurrent(),f=this.internalIndexOf(s),f>=0&&u.markBit(f);for(i=0;i<e;i=i+1|0)this._slots[i].hashCode>=0&&!u.isMarked(i)&&this.remove(this._slots[i].value)},internalIndexOf:function(t){for(var r=this.internalGetHashCode(t),i=this._buckets[r%this._buckets.length]-1|0;i>=0;i=this._slots[i].next)if(this._slots[i].hashCode===r&&this._comparer["System$Collections$Generic$IEqualityComparer$1$"+Bridge.getTypeAlias(n)+"$equals2"](this._slots[i].value,t))return i;return-1},symmetricExceptWithUniqueHashSet:function(n){for(var i,t=Bridge.getEnumerator(n);t.moveNext();)i=t.getCurrent(),this.remove(i)||this.addIfNotPresent(i)},symmetricExceptWithEnumerable:function(t){var f,e=this._lastIndex,u=System.Collections.Generic.BitHelper.toIntArrayLength(e),o,s,c=System.Array.init(u,0),h,i;for(o=new System.Collections.Generic.BitHelper(c,u),h=System.Array.init(u,0),s=new System.Collections.Generic.BitHelper(h,u),f=Bridge.getEnumerator(t,null,n);f.moveNext();){var l=f.getCurrent(),r={v:0},a=this.addOrGetLocation(l,r);a?s.markBit(r.v):r.v<e&&!s.isMarked(r.v)&&o.markBit(r.v)}for(i=0;i<e;i=i+1|0)o.isMarked(i)&&this.remove(this._slots[i].value)},addOrGetLocation:function(t,i){for(var r,f=this.internalGetHashCode(t),e=f%this._buckets.length,u=this._buckets[e]-1|0;u>=0;u=this._slots[u].next)if(this._slots[u].hashCode===f&&this._comparer["System$Collections$Generic$IEqualityComparer$1$"+Bridge.getTypeAlias(n)+"$equals2"](this._slots[u].value,t))return i.v=u,!1;return this._freeList>=0?(r=this._freeList,this._freeList=this._slots[r].next):(this._lastIndex===this._slots.length&&(this.increaseCapacity(),e=f%this._buckets.length),r=this._lastIndex,this._lastIndex=this._lastIndex+1|0),this._slots[r].hashCode=f,this._slots[r].value=t,this._slots[r].next=this._buckets[e]-1|0,this._buckets[e]=r+1|0,this._count=this._count+1|0,this._version=this._version+1|0,i.v=r,!0},checkUniqueAndUnfoundElements:function(t,i){var s,h,r=new(System.Collections.Generic.HashSet$1.ElementCount(n)),u,v,f,e,a,o;if(this._count===0){for(u=0,s=Bridge.getEnumerator(t,null,n);s.moveNext();){v=s.getCurrent();u=u+1|0;break}return r.uniqueCount=0,r.unfoundCount=u,r.$clone()}var y=this._lastIndex,l=System.Collections.Generic.BitHelper.toIntArrayLength(y),c,p=System.Array.init(l,0);for(c=new System.Collections.Generic.BitHelper(p,l),f=0,e=0,h=Bridge.getEnumerator(t,null,n);h.moveNext();)if(a=h.getCurrent(),o=this.internalIndexOf(a),o>=0)c.isMarked(o)||(c.markBit(o),e=e+1|0);else if(f=f+1|0,i)break;return r.uniqueCount=e,r.unfoundCount=f,r.$clone()},toArray:function(){var t=System.Array.init(this.getCount(),function(){return Bridge.getDefaultValue(n)});return this.copyTo$1(t),t},internalGetHashCode:function(t){return t==null?0:this._comparer["System$Collections$Generic$IEqualityComparer$1$"+Bridge.getTypeAlias(n)+"$getHashCode2"](t)&System.Collections.Generic.HashSet$1(n).Lower31BitMask}}});Bridge.define("System.Collections.Generic.HashSet$1.ElementCount",function(n){return{$kind:"struct",statics:{getDefaultValue:function(){return new(System.Collections.Generic.HashSet$1.ElementCount(n))}},uniqueCount:0,unfoundCount:0,ctor:function(){this.$initialize()},getHashCode:function(){return Bridge.addHash([4920463385,this.uniqueCount,this.unfoundCount])},equals:function(t){return Bridge.is(t,System.Collections.Generic.HashSet$1.ElementCount(n))?Bridge.equals(this.uniqueCount,t.uniqueCount)&&Bridge.equals(this.unfoundCount,t.unfoundCount):!1},$clone:function(t){var i=t||new(System.Collections.Generic.HashSet$1.ElementCount(n));return i.uniqueCount=this.uniqueCount,i.unfoundCount=this.unfoundCount,i}}});Bridge.define("System.Collections.Generic.HashSet$1.Enumerator",function(n){return{inherits:[System.Collections.Generic.IEnumerator$1(n)],$kind:"struct",statics:{getDefaultValue:function(){return new(System.Collections.Generic.HashSet$1.Enumerator(n))}},_set:null,_index:0,_version:0,_current:Bridge.getDefaultValue(n),config:{alias:["dispose","System$IDisposable$dispose","moveNext","System$Collections$IEnumerator$moveNext","getCurrent","System$Collections$Generic$IEnumerator$1$"+Bridge.getTypeAlias(n)+"$getCurrent$1"]},$ctor1:function(t){this.$initialize();this._set=t;this._index=0;this._version=t._version;this._current=Bridge.getDefaultValue(n)},ctor:function(){this.$initialize()},getCurrent:function(){return this._current},System$Collections$IEnumerator$getCurrent:function(){if(this._index===0||this._index===(this._set._lastIndex+1|0))throw new System.InvalidOperationException("Enumeration has either not started or has already finished.");return this.getCurrent()},dispose:function(){},moveNext:function(){if(this._version!==this._set._version)throw new System.InvalidOperationException("Collection was modified; enumeration operation may not execute.");while(this._index<this._set._lastIndex){if(this._set._slots[this._index].hashCode>=0)return this._current=this._set._slots[this._index].value,this._index=this._index+1|0,!0;this._index=this._index+1|0}return this._index=this._set._lastIndex+1|0,this._current=Bridge.getDefaultValue(n),!1},System$Collections$IEnumerator$reset:function(){if(this._version!==this._set._version)throw new System.InvalidOperationException("Collection was modified; enumeration operation may not execute.");this._index=0;this._current=Bridge.getDefaultValue(n)},getHashCode:function(){return Bridge.addHash([3788985113,this._set,this._index,this._version,this._current])},equals:function(t){return Bridge.is(t,System.Collections.Generic.HashSet$1.Enumerator(n))?Bridge.equals(this._set,t._set)&&Bridge.equals(this._index,t._index)&&Bridge.equals(this._version,t._version)&&Bridge.equals(this._current,t._current):!1},$clone:function(t){var i=t||new(System.Collections.Generic.HashSet$1.Enumerator(n));return i._set=this._set,i._index=this._index,i._version=this._version,i._current=this._current,i}}});Bridge.define("System.Collections.Generic.HashSet$1.Slot",function(n){return{$kind:"struct",statics:{getDefaultValue:function(){return new(System.Collections.Generic.HashSet$1.Slot(n))}},hashCode:0,value:Bridge.getDefaultValue(n),next:0,ctor:function(){this.$initialize()},getHashCode:function(){return Bridge.addHash([1953459283,this.hashCode,this.value,this.next])},equals:function(t){return Bridge.is(t,System.Collections.Generic.HashSet$1.Slot(n))?Bridge.equals(this.hashCode,t.hashCode)&&Bridge.equals(this.value,t.value)&&Bridge.equals(this.next,t.next):!1},$clone:function(t){var i=t||new(System.Collections.Generic.HashSet$1.Slot(n));return i.hashCode=this.hashCode,i.value=this.value,i.next=this.next,i}}});Bridge.define("System.Collections.Generic.Queue$1",function(n){return{inherits:[System.Collections.Generic.IEnumerable$1(n),System.Collections.ICollection],statics:{MinimumGrow:4,GrowFactor:200,DefaultCapacity:4},_array:null,_head:0,_tail:0,_size:0,_version:0,config:{alias:["getCount","System$Collections$ICollection$getCount","getIsReadOnly","System$Collections$ICollection$getIsReadOnly","System$Collections$Generic$IEnumerable$1$T$getEnumerator","System$Collections$Generic$IEnumerable$1$"+Bridge.getTypeAlias(n)+"$getEnumerator"]},ctor:function(){this.$initialize();this._array=System.Array.init(0,function(){return Bridge.getDefaultValue(n)})},$ctor2:function(t){if(this.$initialize(),t<0)throw new System.ArgumentOutOfRangeException("capacity","Non-negative number required.");this._array=System.Array.init(t,function(){return Bridge.getDefaultValue(n)})},$ctor1:function(t){if(this.$initialize(),t==null)throw new System.ArgumentNullException("collection");this._array=System.Array.init(System.Collections.Generic.Queue$1(n).DefaultCapacity,function(){return Bridge.getDefaultValue(n)});var i=Bridge.getEnumerator(t,null,n);try{while(i.System$Collections$IEnumerator$moveNext())this.enqueue(i[Bridge.geti(i,"System$Collections$Generic$IEnumerator$1$"+Bridge.getTypeAlias(n)+"$getCurrent$1","getCurrent$1")]())}finally{Bridge.hasValue(i)&&i.dispose()}},getCount:function(){return this._size},getIsReadOnly:function(){return!1},clear:function(){this._head<this._tail?System.Array.fill(this._array,Bridge.getDefaultValue(n),this._head,this._size):(System.Array.fill(this._array,Bridge.getDefaultValue(n),this._head,this._array.length-this._head|0),System.Array.fill(this._array,Bridge.getDefaultValue(n),0,this._tail));this._head=0;this._tail=0;this._size=0;this._version=this._version+1|0},copyTo:function(n,t){var r,i,u;if(n==null)throw new System.ArgumentNullException("array");if(t<0||t>n.length)throw new System.ArgumentOutOfRangeException("arrayIndex","Index was out of range. Must be non-negative and less than the size of the collection.");if(r=n.length,(r-t|0)<this._size)throw new System.ArgumentException("Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.");(i=(r-t|0)<this._size?r-t|0:this._size,i!==0)&&(u=(this._array.length-this._head|0)<i?this._array.length-this._head|0:i,System.Array.copy(this._array,this._head,n,t,u),i=i-u|0,i>0&&System.Array.copy(this._array,0,n,(t+this._array.length|0)-this._head|0,i))},enqueue:function(t){if(this._size===this._array.length){var i=Bridge.Int.div(this._array.length*System.Collections.Generic.Queue$1(n).GrowFactor|0,100)|0;i<(this._array.length+System.Collections.Generic.Queue$1(n).MinimumGrow|0)&&(i=this._array.length+System.Collections.Generic.Queue$1(n).MinimumGrow|0);this.setCapacity(i)}this._array[this._tail]=t;this._tail=this.moveNext(this._tail);this._size=this._size+1|0;this._version=this._version+1|0},getEnumerator:function(){return new(System.Collections.Generic.Queue$1.Enumerator(n).$ctor1)(this)},System$Collections$Generic$IEnumerable$1$T$getEnumerator:function(){return new(System.Collections.Generic.Queue$1.Enumerator(n).$ctor1)(this)},System$Collections$IEnumerable$getEnumerator:function(){return new(System.Collections.Generic.Queue$1.Enumerator(n).$ctor1)(this)},dequeue:function(){if(this._size===0)throw new System.InvalidOperationException("Queue empty.");var t=this._array[this._head];return this._array[this._head]=Bridge.getDefaultValue(n),this._head=this.moveNext(this._head),this._size=this._size-1|0,this._version=this._version+1|0,t},peek:function(){if(this._size===0)throw new System.InvalidOperationException("Queue empty.");return this._array[this._head]},contains:function(t){for(var i=this._head,r=this._size,u=System.Collections.Generic.EqualityComparer$1(n).def;Bridge.identity(r,r=r-1|0)>0;){if(t==null){if(this._array[i]==null)return!0}else if(this._array[i]!=null&&u.equals2(this._array[i],t))return!0;i=this.moveNext(i)}return!1},getElement:function(n){return this._array[(this._head+n|0)%this._array.length]},toArray:function(){var t=System.Array.init(this._size,function(){return Bridge.getDefaultValue(n)});return this._size===0?t:(this._head<this._tail?System.Array.copy(this._array,this._head,t,0,this._size):(System.Array.copy(this._array,this._head,t,0,this._array.length-this._head|0),System.Array.copy(this._array,0,t,this._array.length-this._head|0,this._tail)),t)},setCapacity:function(t){var i=System.Array.init(t,function(){return Bridge.getDefaultValue(n)});this._size>0&&(this._head<this._tail?System.Array.copy(this._array,this._head,i,0,this._size):(System.Array.copy(this._array,this._head,i,0,this._array.length-this._head|0),System.Array.copy(this._array,0,i,this._array.length-this._head|0,this._tail)));this._array=i;this._head=0;this._tail=this._size===t?0:this._size;this._version=this._version+1|0},moveNext:function(n){var t=n+1|0;return t===this._array.length?0:t},trimExcess:function(){var n=Bridge.Int.clip32(this._array.length*.9);this._size<n&&this.setCapacity(this._size)}}});Bridge.define("System.Collections.Generic.Queue$1.Enumerator",function(n){return{inherits:[System.Collections.Generic.IEnumerator$1(n),System.Collections.IEnumerator],$kind:"struct",statics:{getDefaultValue:function(){return new(System.Collections.Generic.Queue$1.Enumerator(n))}},_q:null,_index:0,_version:0,_currentElement:Bridge.getDefaultValue(n),config:{alias:["dispose","System$IDisposable$dispose","moveNext","System$Collections$IEnumerator$moveNext","getCurrent","System$Collections$Generic$IEnumerator$1$"+Bridge.getTypeAlias(n)+"$getCurrent$1"]},$ctor1:function(t){this.$initialize();this._q=t;this._version=this._q._version;this._index=-1;this._currentElement=Bridge.getDefaultValue(n)},ctor:function(){this.$initialize()},getCurrent:function(){if(this._index<0)if(this._index===-1)throw new System.InvalidOperationException("Enumeration has not started. Call MoveNext.");else throw new System.InvalidOperationException("Enumeration already finished.");return this._currentElement},System$Collections$IEnumerator$getCurrent:function(){return this.getCurrent()},dispose:function(){this._index=-2;this._currentElement=Bridge.getDefaultValue(n)},moveNext:function(){if(this._version!==this._q._version)throw new System.InvalidOperationException("Collection was modified; enumeration operation may not execute.");return this._index===-2?!1:(this._index=this._index+1|0,this._index===this._q._size)?(this._index=-2,this._currentElement=Bridge.getDefaultValue(n),!1):(this._currentElement=this._q.getElement(this._index),!0)},System$Collections$IEnumerator$reset:function(){if(this._version!==this._q._version)throw new System.InvalidOperationException("Collection was modified; enumeration operation may not execute.");this._index=-1;this._currentElement=Bridge.getDefaultValue(n)},getHashCode:function(){return Bridge.addHash([3788985113,this._q,this._index,this._version,this._currentElement])},equals:function(t){return Bridge.is(t,System.Collections.Generic.Queue$1.Enumerator(n))?Bridge.equals(this._q,t._q)&&Bridge.equals(this._index,t._index)&&Bridge.equals(this._version,t._version)&&Bridge.equals(this._currentElement,t._currentElement):!1},$clone:function(t){var i=t||new(System.Collections.Generic.Queue$1.Enumerator(n));return i._q=this._q,i._index=this._index,i._version=this._version,i._currentElement=this._currentElement,i}}});Bridge.define("System.Collections.Generic.Stack$1",function(n){return{inherits:[System.Collections.Generic.IEnumerable$1(n),System.Collections.ICollection],statics:{DefaultCapacity:4},_array:null,_size:0,_version:0,config:{alias:["getCount","System$Collections$ICollection$getCount","getIsReadOnly","System$Collections$ICollection$getIsReadOnly","System$Collections$Generic$IEnumerable$1$T$getEnumerator","System$Collections$Generic$IEnumerable$1$"+Bridge.getTypeAlias(n)+"$getEnumerator"]},ctor:function(){this.$initialize();this._array=System.Array.init(0,function(){return Bridge.getDefaultValue(n)})},$ctor2:function(t){if(this.$initialize(),t<0)throw new System.ArgumentOutOfRangeException("capacity","Non-negative number required.");this._array=System.Array.init(t,function(){return Bridge.getDefaultValue(n)})},$ctor1:function(t){if(this.$initialize(),t==null)throw new System.ArgumentNullException("collection");var i={};this._array=Bridge.Collections.EnumerableHelpers.toArray$1(n,t,i);this._size=i.v},getCount:function(){return this._size},getIsReadOnly:function(){return!1},clear:function(){System.Array.fill(this._array,Bridge.getDefaultValue(n),0,this._size);this._size=0;this._version=this._version+1|0},contains:function(t){for(var i=this._size,r=System.Collections.Generic.EqualityComparer$1(n).def;Bridge.identity(i,i=i-1|0)>0;)if(t==null){if(this._array[i]==null)return!0}else if(this._array[i]!=null&&r.equals2(this._array[i],t))return!0;return!1},copyTo:function(n,t){var i,u,r;if(n==null)throw new System.ArgumentNullException("array");if(t<0||t>n.length)throw new System.ArgumentOutOfRangeException("arrayIndex","Non-negative number required.");if((n.length-t|0)<this._size)throw new System.ArgumentException("Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.");if(Bridge.referenceEquals(n,this._array))System.Array.copy(this._array,0,n,t,this._size),System.Array.reverse(n,t,this._size);else for(i=0,u=t+this._size|0,r=0;r<this._size;r=r+1|0)n[u=u-1|0]=this._array[Bridge.identity(i,i=i+1|0)]},copyTo$1:function(n,t){if(n==null)throw new System.ArgumentNullException("array");if(System.Array.getRank(n)!==1)throw new System.ArgumentException("Only single dimensional arrays are supported for the requested action.");if(System.Array.getLower(n,0)!==0)throw new System.ArgumentException("The lower bound of target array must be zero.");if(t<0||t>n.length)throw new System.ArgumentOutOfRangeException("arrayIndex","Non-negative number required.");if((n.length-t|0)<this._size)throw new System.ArgumentException("Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.");try{System.Array.copy(this._array,0,n,t,this._size);System.Array.reverse(n,t,this._size)}catch(i){i=System.Exception.create(i);throw new System.ArgumentException("Target array type is not compatible with the type of items in the collection.");}},getEnumerator:function(){return new(System.Collections.Generic.Stack$1.Enumerator(n).$ctor1)(this)},System$Collections$Generic$IEnumerable$1$T$getEnumerator:function(){return new(System.Collections.Generic.Stack$1.Enumerator(n).$ctor1)(this)},System$Collections$IEnumerable$getEnumerator:function(){return new(System.Collections.Generic.Stack$1.Enumerator(n).$ctor1)(this)},trimExcess:function(){var i=Bridge.Int.clip32(this._array.length*.9),t;this._size<i&&(t={v:this._array},System.Array.resize(t,this._size,Bridge.getDefaultValue(n)),this._array=t.v,this._version=this._version+1|0)},peek:function(){if(this._size===0)throw new System.InvalidOperationException("Stack empty.");return this._array[this._size-1|0]},pop:function(){if(this._size===0)throw new System.InvalidOperationException("Stack empty.");this._version=this._version+1|0;var t=this._array[this._size=this._size-1|0];return this._array[this._size]=Bridge.getDefaultValue(n),t},push:function(t){if(this._size===this._array.length){var i={v:this._array};System.Array.resize(i,this._array.length===0?System.Collections.Generic.Stack$1(n).DefaultCapacity:2*this._array.length|0,Bridge.getDefaultValue(n));this._array=i.v}this._array[Bridge.identity(this._size,this._size=this._size+1|0)]=t;this._version=this._version+1|0},toArray:function(){for(var i=System.Array.init(this._size,function(){return Bridge.getDefaultValue(n)}),t=0;t<this._size;)i[t]=this._array[(this._size-t|0)-1|0],t=t+1|0;return i}}});Bridge.define("System.Collections.Generic.Stack$1.Enumerator",function(n){return{inherits:[System.Collections.Generic.IEnumerator$1(n),System.Collections.IEnumerator],$kind:"struct",statics:{getDefaultValue:function(){return new(System.Collections.Generic.Stack$1.Enumerator(n))}},_stack:null,_index:0,_version:0,_currentElement:Bridge.getDefaultValue(n),config:{alias:["dispose","System$IDisposable$dispose","moveNext","System$Collections$IEnumerator$moveNext","getCurrent","System$Collections$Generic$IEnumerator$1$"+Bridge.getTypeAlias(n)+"$getCurrent$1"]},$ctor1:function(t){this.$initialize();this._stack=t;this._version=this._stack._version;this._index=-2;this._currentElement=Bridge.getDefaultValue(n)},ctor:function(){this.$initialize()},getCurrent:function(){if(this._index===-2)throw new System.InvalidOperationException("Enumeration has not started. Call MoveNext.");if(this._index===-1)throw new System.InvalidOperationException("Enumeration already finished.");return this._currentElement},System$Collections$IEnumerator$getCurrent:function(){if(this._index===-2)throw new System.InvalidOperationException("Enumeration has not started. Call MoveNext.");if(this._index===-1)throw new System.InvalidOperationException("Enumeration already finished.");return this._currentElement},dispose:function(){this._index=-1},moveNext:function(){var t;if(this._version!==this._stack._version)throw new System.InvalidOperationException("Collection was modified; enumeration operation may not execute.");return this._index===-2?(this._index=this._stack._size-1|0,t=this._index>=0,t&&(this._currentElement=this._stack._array[this._index]),t):this._index===-1?!1:(t=(this._index=this._index-1|0)>=0,this._currentElement=t?this._stack._array[this._index]:Bridge.getDefaultValue(n),t)},System$Collections$IEnumerator$reset:function(){if(this._version!==this._stack._version)throw new System.InvalidOperationException("Collection was modified; enumeration operation may not execute.");this._index=-2;this._currentElement=Bridge.getDefaultValue(n)},getHashCode:function(){return Bridge.addHash([3788985113,this._stack,this._index,this._version,this._currentElement])},equals:function(t){return Bridge.is(t,System.Collections.Generic.Stack$1.Enumerator(n))?Bridge.equals(this._stack,t._stack)&&Bridge.equals(this._index,t._index)&&Bridge.equals(this._version,t._version)&&Bridge.equals(this._currentElement,t._currentElement):!1},$clone:function(t){var i=t||new(System.Collections.Generic.Stack$1.Enumerator(n));return i._stack=this._stack,i._index=this._index,i._version=this._version,i._currentElement=this._currentElement,i}}});Bridge.define("System.Collections.HashHelpers",{statics:{HashPrime:101,primes:null,MaxPrimeArrayLength:2146435069,config:{init:function(){this.primes=[3,7,11,17,23,29,37,47,59,71,89,107,131,163,197,239,293,353,431,521,631,761,919,1103,1327,1597,1931,2333,2801,3371,4049,4861,5839,7013,8419,10103,12143,14591,17519,21023,25229,30293,36353,43627,52361,62851,75431,90523,108631,130363,156437,187751,225307,270371,324449,389357,467237,560689,672827,807403,968897,1162687,1395263,1674319,2009191,2411033,2893249,3471899,4166287,4999559,5999471,7199369]}},isPrime:function(n){var i,t;if((n&1)!=0){for(i=Bridge.Int.clip32(Math.sqrt(n)),t=3;t<=i;t=t+2|0)if(n%t==0)return!1;return!0}return n===2},getPrime:function(n){var i,r,t;if(n<0)throw new System.ArgumentException("Hashtable's capacity overflowed and went negative. Check load factor, capacity and the current size of the table.");for(i=0;i<System.Collections.HashHelpers.primes.length;i=i+1|0)if(r=System.Collections.HashHelpers.primes[i],r>=n)return r;for(t=n|1;t<2147483647;t=t+2|0)if(System.Collections.HashHelpers.isPrime(t)&&(t-1|0)%System.Collections.HashHelpers.HashPrime!=0)return t;return n},getMinPrime:function(){return System.Collections.HashHelpers.primes[0]},expandPrime:function(n){var t=2*n|0;return t>>>0>System.Collections.HashHelpers.MaxPrimeArrayLength&&System.Collections.HashHelpers.MaxPrimeArrayLength>n?System.Collections.HashHelpers.MaxPrimeArrayLength:System.Collections.HashHelpers.getPrime(t)}}})}); +Bridge.assembly("OrgChart.Layout",function($asm){"use strict";Bridge.define("OrgChart.Annotations.CanBeNullAttribute",{inherits:[System.Attribute]});Bridge.define("OrgChart.Annotations.ContractAnnotationAttribute",{inherits:[System.Attribute],config:{properties:{Contract:null,ForceFullStates:!1}},ctor:function(contract){OrgChart.Annotations.ContractAnnotationAttribute.$ctor1.call(this,contract,!1)},$ctor1:function(contract,forceFullStates){this.$initialize();System.Attribute.ctor.call(this);this.setContract(contract);this.setForceFullStates(forceFullStates)}});Bridge.define("OrgChart.Annotations.NotNullAttribute",{inherits:[System.Attribute]});Bridge.define("OrgChart.Annotations.PureAttribute",{inherits:[System.Attribute]});Bridge.define("OrgChart.Layout.Boundary",{Left:null,Right:null,m_spacerMerger:null,config:{properties:{BoundingRect:null},init:function(){this.BoundingRect=new OrgChart.Layout.Rect}},ctor:function(){OrgChart.Layout.Boundary.$ctor1.call(this,!0)},$ctor1:function(frompublic){this.$initialize();this.Left=new(System.Collections.Generic.List$1(OrgChart.Layout.Boundary.Step));this.Right=new(System.Collections.Generic.List$1(OrgChart.Layout.Boundary.Step));frompublic&&(this.m_spacerMerger=new OrgChart.Layout.Boundary.$ctor1(!1))},PrepareForHorizontalLayout:function(node){if(this.Prepare(node),!node.getElement().DisableCollisionDetection){var rect=node.getState();this.Left.add(new OrgChart.Layout.Boundary.Step.$ctor1(node,rect.getLeft(),rect.getTop(),rect.getBottom()));this.Right.add(new OrgChart.Layout.Boundary.Step.$ctor1(node,rect.getRight(),rect.getTop(),rect.getBottom()))}},Prepare:function(node){this.Left.clear();this.Right.clear();this.setBoundingRect(new OrgChart.Layout.Rect.$ctor1(node.getState().TopLeft,node.getState().Size))},VerticalMergeFrom:function(other){this.setBoundingRect(OrgChart.Layout.Rect.op_Addition(this.getBoundingRect(),other.getBoundingRect()))},MergeFrom:function(other){var merge,my,th,theirWins;if(other.getBoundingRect().getTop()>=other.getBoundingRect().getBottom())throw new System.ArgumentException("Cannot merge boundary of height "+System.Double.format(other.getBoundingRect().getBottom()-other.getBoundingRect().getTop(),"G"));for(merge=114;merge!==0;){for(var mySteps=merge===114?this.Right:this.Left,theirSteps=merge===114?other.Right:other.Left,i=0,k=0;k<theirSteps.getCount()&&i<mySteps.getCount();){if(my=mySteps.getItem(i),th=theirSteps.getItem(k),my.Bottom<=th.Top){i=i+1|0;continue}if(th.Bottom<=my.Top){mySteps.insert(i,th);k=k+1|0;this.ValidateState();continue}theirWins=merge===114?my.X<=th.X:my.X>=th.X;OrgChart.Layout.LayoutAlgorithm.IsEqual(my.Top,th.Top)?OrgChart.Layout.LayoutAlgorithm.IsEqual(my.Bottom,th.Bottom)?(theirWins&&mySteps.setItem(i,th),i=i+1|0,k=k+1|0,this.ValidateState()):my.Bottom<th.Bottom?(theirWins&&mySteps.setItem(i,my.ChangeOwner(th.Node,th.X)),theirSteps.setItem(k,th.ChangeTop(my.Bottom)),i=i+1|0,this.ValidateState()):(theirWins&&(mySteps.setItem(i,my.ChangeTop(th.Bottom)),mySteps.insert(i,th),i=i+1|0),k=k+1|0,this.ValidateState()):OrgChart.Layout.LayoutAlgorithm.IsEqual(my.Bottom,th.Bottom)?my.Top<th.Top?(theirWins&&(mySteps.setItem(i,my.ChangeBottom(th.Top)),mySteps.insert(i+1|0,th),i=i+1|0),i=i+1|0,k=k+1|0,this.ValidateState()):(theirWins?mySteps.setItem(i,th):(mySteps.insert(i,th.ChangeBottom(my.Top)),i=i+1|0),i=i+1|0,k=k+1|0,this.ValidateState()):my.Top<th.Top&&my.Bottom<th.Bottom?(theirWins&&(mySteps.setItem(i,my.ChangeBottom(th.Top)),mySteps.insert(i+1|0,new OrgChart.Layout.Boundary.Step.$ctor1(th.Node,th.X,th.Top,my.Bottom)),i=i+1|0),theirSteps.setItem(k,th.ChangeTop(my.Bottom)),i=i+1|0,this.ValidateState()):my.Top<th.Top&&my.Bottom>th.Bottom?(theirWins&&(mySteps.setItem(i,my.ChangeBottom(th.Top)),mySteps.insert(i+1|0,th),mySteps.insert(i+2|0,my.ChangeTop(th.Bottom)),i=i+2|0),k=k+1|0,this.ValidateState()):my.Bottom>th.Bottom?(theirWins?(mySteps.setItem(i,my.ChangeTop(th.Bottom)),mySteps.insert(i,th)):mySteps.insert(i,th.ChangeBottom(my.Top)),i=i+1|0,k=k+1|0,this.ValidateState()):(theirWins?mySteps.setItem(i,th.ChangeBottom(my.Bottom)):(mySteps.insert(i,th.ChangeBottom(my.Top)),i=i+1|0),theirSteps.setItem(k,th.ChangeTop(my.Bottom)),i=i+1|0,this.ValidateState())}if(i===mySteps.getCount())while(k<theirSteps.getCount())mySteps.add(theirSteps.getItem(k)),k=k+1|0,this.ValidateState();merge=merge===114?108:0}this.setBoundingRect(OrgChart.Layout.Rect.op_Addition(this.getBoundingRect(),other.getBoundingRect()))},MergeFrom$1:function(node){node.getElement().DisableCollisionDetection||OrgChart.Layout.LayoutAlgorithm.IsZero(node.getState().Size.Height)||(this.m_spacerMerger.PrepareForHorizontalLayout(node),this.MergeFrom(this.m_spacerMerger))},ValidateState:function(){for(var i1,i=1;i<this.Left.getCount();i=i+1|0)if(OrgChart.Layout.LayoutAlgorithm.IsEqual(this.Left.getItem(i).Top,this.Left.getItem(i).Bottom)||this.Left.getItem(i).Top<this.Left.getItem(i-1|0).Bottom||this.Left.getItem(i).Top<=this.Left.getItem(i-1|0).Top||this.Left.getItem(i).Bottom<=this.Left.getItem(i).Top||this.Left.getItem(i).Bottom<=this.Left.getItem(i-1|0).Bottom)throw new System.Exception("State error at Left index "+i);for(i1=1;i1<this.Right.getCount();i1=i1+1|0)if(OrgChart.Layout.LayoutAlgorithm.IsEqual(this.Right.getItem(i1).Top,this.Right.getItem(i1).Bottom)||this.Right.getItem(i1).Top<this.Right.getItem(i1-1|0).Bottom||this.Right.getItem(i1).Top<=this.Right.getItem(i1-1|0).Top||this.Right.getItem(i1).Bottom<=this.Right.getItem(i1).Top||this.Right.getItem(i1).Bottom<=this.Right.getItem(i1-1|0).Bottom)throw new System.Exception("State error at Right index "+i1);},ComputeOverlap:function(other,siblingSpacing,branchSpacing){for(var i=0,k=0,offense=0,my,th,desiredSpacing,diff;i<this.Right.getCount()&&k<other.Left.getCount();)my=this.Right.getItem(i),th=other.Left.getItem(k),my.Bottom<=th.Top?i=i+1|0:th.Bottom<=my.Top?k=k+1|0:(my.Node.getElement().DisableCollisionDetection||th.Node.getElement().DisableCollisionDetection||(desiredSpacing=my.Node.getElement().IsSpecial||th.Node.getElement().IsSpecial?0:my.Node.getElement().ParentId===th.Node.getElement().ParentId?siblingSpacing:branchSpacing,diff=my.X+desiredSpacing-th.X,diff>offense&&(offense=diff)),my.Bottom>=th.Bottom&&(k=k+1|0),th.Bottom>=my.Bottom&&(i=i+1|0));return offense},ReloadFromBranch:function(branchRoot){for(var left,newLeft,i1,right,newRight,leftmost=System.Double.max,rightmost=System.Double.min,i=0;i<this.Left.getCount();i=i+1|0)left=this.Left.getItem(i),newLeft=left.Node.getState().getLeft(),this.Left.setItem(i,left.ChangeX(newLeft)),leftmost=Math.min(leftmost,newLeft);for(i1=0;i1<this.Right.getCount();i1=i1+1|0)right=this.Right.getItem(i1),newRight=right.Node.getState().getRight(),this.Right.setItem(i1,right.ChangeX(newRight)),rightmost=Math.max(rightmost,newRight);leftmost=Math.min(branchRoot.getState().getLeft(),leftmost);rightmost=Math.max(branchRoot.getState().getRight(),rightmost);this.setBoundingRect(new OrgChart.Layout.Rect.$ctor1(new OrgChart.Layout.Point.$ctor1(leftmost,this.getBoundingRect().getTop()),new OrgChart.Layout.Size.$ctor1(rightmost-leftmost,this.getBoundingRect().Size.Height)))}});Bridge.define("OrgChart.Layout.Boundary.Step",{$kind:"struct",statics:{getDefaultValue:function(){return new OrgChart.Layout.Boundary.Step}},Node:null,X:0,Top:0,Bottom:0,$ctor1:function(node,x,top,bottom){this.$initialize();this.Node=node;this.X=x;this.Top=top;this.Bottom=bottom},ctor:function(){this.$initialize()},ChangeTop:function(newTop){return new OrgChart.Layout.Boundary.Step.$ctor1(this.Node,this.X,newTop,this.Bottom)},ChangeBottom:function(newBottom){return new OrgChart.Layout.Boundary.Step.$ctor1(this.Node,this.X,this.Top,newBottom)},ChangeOwner:function(newNode,newX){return new OrgChart.Layout.Boundary.Step.$ctor1(newNode,newX,this.Top,this.Bottom)},ChangeX:function(newX){return new OrgChart.Layout.Boundary.Step.$ctor1(this.Node,newX,this.Top,this.Bottom)},getHashCode:function(){return Bridge.addHash([1885697107,this.Node,this.X,this.Top,this.Bottom])},equals:function(o){return Bridge.is(o,OrgChart.Layout.Boundary.Step)?Bridge.equals(this.Node,o.Node)&&Bridge.equals(this.X,o.X)&&Bridge.equals(this.Top,o.Top)&&Bridge.equals(this.Bottom,o.Bottom):!1},$clone:function(to){var s=to||new OrgChart.Layout.Boundary.Step;return s.Node=this.Node,s.X=this.X,s.Top=this.Top,s.Bottom=this.Bottom,s}});Bridge.define("OrgChart.Layout.BoundaryChangedEventArgs",{State:null,LayoutLevel:null,Boundary:null,ctor:function(boundary,layoutLevel,state){this.$initialize();this.Boundary=boundary;this.LayoutLevel=layoutLevel;this.State=state}});Bridge.define("OrgChart.Layout.Box",{statics:{None:-1,Special:function(id,visualParentId,disableCollisionDetection){return new OrgChart.Layout.Box.$ctor1(null,id,visualParentId,!0,disableCollisionDetection,!1)}},Id:0,ParentId:0,DataId:null,IsSpecial:!1,IsAssistant:!1,DisableCollisionDetection:!1,LayoutStrategyId:null,AssistantLayoutStrategyId:null,IsCollapsed:!1,config:{init:function(){this.Size=new OrgChart.Layout.Size}},ctor:function(dataId,id,parentId,isAssistant){OrgChart.Layout.Box.$ctor1.call(this,dataId,id,parentId,!1,!1,isAssistant)},$ctor1:function(dataId,id,parentId,isSpecial,disableCollisionDetection,isAssistant){if(this.$initialize(),id===0)throw new System.ArgumentOutOfRangeException("id");this.Id=id;this.ParentId=parentId;this.DataId=dataId;this.IsSpecial=isSpecial;this.IsAssistant=isAssistant;this.DisableCollisionDetection=disableCollisionDetection},getIsDataBound:function(){return!System.String.isNullOrEmpty(this.DataId)}});Bridge.define("OrgChart.Layout.BoxContainer",{m_lastBoxId:0,m_boxesById:null,m_boxesByDataId:null,config:{properties:{SystemRoot:null},init:function(){this.m_boxesById=new(System.Collections.Generic.Dictionary$2(System.Int32,OrgChart.Layout.Box));this.m_boxesByDataId=new(System.Collections.Generic.Dictionary$2(String,OrgChart.Layout.Box))}},ctor:function(){this.$initialize()},$ctor1:function(source){this.$initialize();this.ReloadBoxes(source)},getBoxesById:function(){return this.m_boxesById},getBoxesByDataId:function(){return this.m_boxesByDataId},ReloadBoxes:function(source){var $t,$t1,map,dataId,getDataItem;for(this.m_boxesByDataId.clear(),this.m_boxesById.clear(),this.m_lastBoxId=0,this.setSystemRoot(OrgChart.Layout.Box.Special(this.m_lastBoxId=this.m_lastBoxId+1|0,OrgChart.Layout.Box.None,!0)),this.m_boxesById.add(this.getSystemRoot().Id,this.getSystemRoot()),map=new(System.Collections.Generic.Dictionary$2(String,System.Int32)),$t=Bridge.getEnumerator(source.OrgChart$Layout$IChartDataSource$getAllDataItemIds(),String);$t.moveNext();)dataId=$t.getCurrent(),map.add(dataId,this.NextBoxId());for(getDataItem=source.OrgChart$Layout$IChartDataSource$getGetDataItemFunc(),$t1=Bridge.getEnumerator(source.OrgChart$Layout$IChartDataSource$getAllDataItemIds(),String);$t1.moveNext();){var dataId1=$t1.getCurrent(),parentDataId=System.String.isNullOrEmpty(dataId1)?null:source.OrgChart$Layout$IChartDataSource$getGetParentKeyFunc()(dataId1),visualParentId=System.String.isNullOrEmpty(parentDataId)?this.getSystemRoot().Id:map.get(parentDataId);this.AddBox$1(dataId1,map.get(dataId1),visualParentId,getDataItem(dataId1).OrgChart$Layout$IChartDataItem$getIsAssistant())}},AddBox:function(dataId,visualParentId,isAssistant){return this.AddBox$1(dataId,this.NextBoxId(),visualParentId,isAssistant)},AddBox$1:function(dataId,id,visualParentId,isAssistant){var box=new OrgChart.Layout.Box.ctor(dataId,id,visualParentId,isAssistant);return this.m_boxesById.add(box.Id,box),System.String.isNullOrEmpty(dataId)||this.m_boxesByDataId.add(box.DataId,box),box},NextBoxId:function(){return this.m_lastBoxId=this.m_lastBoxId+1|0,this.m_lastBoxId}});Bridge.define("OrgChart.Layout.BoxTree",{statics:{Build:function(state){for(var $t1,result=new OrgChart.Layout.BoxTree,box,node,$t=Bridge.getEnumerator(state.getDiagram().getBoxes().getBoxesById().System$Collections$Generic$IDictionary$2$System$Int32$OrgChart$Layout$Box$getValues(),OrgChart.Layout.Box);$t.moveNext();)box=$t.getCurrent(),node=new OrgChart.Layout.BoxTree.Node(box),result.getNodes().add(box.Id,node);for($t1=Bridge.getEnumerator(result.getNodes().getValues(),OrgChart.Layout.BoxTree.Node);$t1.moveNext();){var node1=$t1.getCurrent(),parentKey=node1.getElement().ParentId,parentNode={};if(result.getNodes().tryGetValue(parentKey,parentNode))node1.getElement().IsAssistant&&parentNode.v.getElement().ParentId!==OrgChart.Layout.Box.None?parentNode.v.AddAssistantChild(node1):parentNode.v.AddRegularChild$1(node1);else{if(result.getRoot()!=null)throw new System.InvalidOperationException("More then one root found: "+node1.getElement().Id);result.setRoot(node1)}}return result}},config:{properties:{Root:null,Nodes:null,Depth:0}},ctor:function(){this.$initialize();this.setNodes(new(System.Collections.Generic.Dictionary$2(System.Int32,OrgChart.Layout.BoxTree.Node)))},IterateChildFirst:function(func){return this.getRoot().IterateChildFirst(func)},IterateParentFirst:function(enter,exit){exit===void 0&&(exit=null);this.getRoot().IterateParentFirst(enter,exit)},UpdateHierarchyStats:function(){this.setDepth(0);this.IterateParentFirst(Bridge.fn.bind(this,$asm.$.OrgChart.Layout.BoxTree.f1))}});Bridge.ns("OrgChart.Layout.BoxTree",$asm.$);Bridge.apply($asm.$.OrgChart.Layout.BoxTree,{f1:function(x){return x.getParentNode()!=null?(x.setLevel(x.getParentNode().getLevel()),x.getParentNode().getIsAssistantRoot()||x.setLevel(x.getLevel()+1|0),this.setDepth(Math.max(1+x.getLevel()|0,this.getDepth()))):(x.setLevel(0),this.setDepth(1)),!0}});Bridge.define("OrgChart.Layout.BoxTree.Node",{config:{properties:{Level:0,Element:null,State:null,ParentNode:null,Children:null,AssistantsRoot:null}},ctor:function(element){this.$initialize();this.setElement(element);this.setState(new OrgChart.Layout.NodeLayoutInfo)},getChildCount:function(){return this.getChildren()==null?0:System.Array.getCount(this.getChildren(),OrgChart.Layout.BoxTree.Node)},getIsAssistantRoot:function(){var $t;return Bridge.referenceEquals(($t=this.getParentNode())!=null?$t.getAssistantsRoot():null,this)},AddAssistantChild:function(child){return this.getAssistantsRoot()==null&&this.setAssistantsRoot(Bridge.merge(new OrgChart.Layout.BoxTree.Node(OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,this.getElement().Id,!0)),{setParentNode:this,setLevel:this.getLevel()+1|0})),this.getAssistantsRoot().AddRegularChild$1(child),this},AddRegularChild$1:function(child){return this.InsertRegularChild$1(this.getChildCount(),child)},AddRegularChild:function(child){return this.InsertRegularChild(this.getChildCount(),child)},InsertRegularChild:function(index,child){return this.InsertRegularChild$1(index,new OrgChart.Layout.BoxTree.Node(child))},InsertRegularChild$1:function(index,child){return this.getChildren()==null&&this.setChildren(new(System.Collections.Generic.List$1(OrgChart.Layout.BoxTree.Node))),System.Array.insert(this.getChildren(),index,child,OrgChart.Layout.BoxTree.Node),child.setParentNode(this),child.setLevel(this.getLevel()+1|0),this},IterateChildFirst:function(func){var $t,child;if(this.getAssistantsRoot()!=null&&!this.getAssistantsRoot().IterateChildFirst(func))return!1;if(this.getChildren()!=null)for($t=Bridge.getEnumerator(this.getChildren(),OrgChart.Layout.BoxTree.Node);$t.moveNext();)if(child=$t.getCurrent(),!child.IterateChildFirst(func))return!1;return func(this)},IterateParentFirst:function(enter,exit){var $t,$t1,child;if(exit===void 0&&(exit=null),!enter(this))return Bridge.staticEquals(exit,null)?null:exit(this),!1;if(($t=this.getAssistantsRoot())!=null?$t.IterateParentFirst(enter,exit):null,this.getChildren()!=null)for($t1=Bridge.getEnumerator(this.getChildren(),OrgChart.Layout.BoxTree.Node);$t1.moveNext();)child=$t1.getCurrent(),child.IterateParentFirst(enter,exit);return Bridge.staticEquals(exit,null)?null:exit(this),!0},SuppressAssistants:function(){var $t,child;if(this.getAssistantsRoot()!=null){for($t=Bridge.getEnumerator(this.getAssistantsRoot().getChildren(),OrgChart.Layout.BoxTree.Node);$t.moveNext();)child=$t.getCurrent(),this.AddRegularChild$1(child);this.setAssistantsRoot(null)}}});Bridge.define("OrgChart.Layout.BranchParentAlignment",{$kind:"enum",statics:{InvalidValue:0,Left:1,Center:2,Right:3}});Bridge.define("OrgChart.Layout.Connector",{config:{properties:{Segments:null}},ctor:function(segments){if(this.$initialize(),segments.length===0)throw new System.ArgumentException("Need at least one segment","segments");this.setSegments(segments)}});Bridge.define("OrgChart.Layout.Diagram",{m_visualTree:null,m_boxes:null,config:{properties:{LayoutSettings:null}},ctor:function(){this.$initialize();this.setLayoutSettings(new OrgChart.Layout.DiagramLayoutSettings)},getBoxes:function(){return this.m_boxes},setBoxes:function(value){this.m_visualTree=null;this.m_boxes=value},getVisualTree:function(){return this.m_visualTree},setVisualTree:function(value){this.m_visualTree=value}});Bridge.define("OrgChart.Layout.DiagramLayoutSettings",{m_branchSpacing:0,config:{properties:{LayoutStrategies:null,DefaultAssistantLayoutStrategyId:null,DefaultLayoutStrategyId:null}},ctor:function(){this.$initialize();this.setBranchSpacing(50);this.setLayoutStrategies(new(System.Collections.Generic.Dictionary$2(String,OrgChart.Layout.LayoutStrategyBase)))},getBranchSpacing:function(){return this.m_branchSpacing},setBranchSpacing:function(value){if(value<0)throw new System.ArgumentOutOfRangeException("value","Cannot be negative",null,value);this.m_branchSpacing=value},RequireDefaultLayoutStrategy:function(){var result={};if(System.String.isNullOrEmpty(this.getDefaultLayoutStrategyId())||!this.getLayoutStrategies().tryGetValue(this.getDefaultLayoutStrategyId(),result))throw new System.InvalidOperationException("defaultLayoutStrategyId is null or not valid");return result.v},RequireDefaultAssistantLayoutStrategy:function(){var result={};if(System.String.isNullOrEmpty(this.getDefaultAssistantLayoutStrategyId())||!this.getLayoutStrategies().tryGetValue(this.getDefaultAssistantLayoutStrategyId(),result))throw new System.InvalidOperationException("defaultAssistantLayoutStrategyId is null or not valid");return result.v}});Bridge.define("OrgChart.Layout.DiagramLayoutTemplates");Bridge.define("OrgChart.Layout.Dimensions",{$kind:"struct",statics:{MinMax:function(){return new OrgChart.Layout.Dimensions.$ctor1(System.Double.max,System.Double.min)},op_Addition:function(x,y){return new OrgChart.Layout.Dimensions.$ctor1(Math.min(x.From,y.From),Math.max(x.To,y.To))},getDefaultValue:function(){return new OrgChart.Layout.Dimensions}},From:0,To:0,$ctor1:function(from,to){this.$initialize();this.From=from;this.To=to},ctor:function(){this.$initialize()},getHashCode:function(){return Bridge.addHash([3570880544,this.From,this.To])},equals:function(o){return Bridge.is(o,OrgChart.Layout.Dimensions)?Bridge.equals(this.From,o.From)&&Bridge.equals(this.To,o.To):!1},$clone:function(to){var s=to||new OrgChart.Layout.Dimensions;return s.From=this.From,s.To=this.To,s}});Bridge.define("OrgChart.Layout.Edge",{$kind:"struct",statics:{getDefaultValue:function(){return new OrgChart.Layout.Edge}},config:{init:function(){this.From=new OrgChart.Layout.Point;this.To=new OrgChart.Layout.Point}},$ctor1:function(from,to){this.$initialize();this.From=from;this.To=to},ctor:function(){this.$initialize()},getHashCode:function(){return Bridge.addHash([1701274693,this.From,this.To])},equals:function(o){return Bridge.is(o,OrgChart.Layout.Edge)?Bridge.equals(this.From,o.From)&&Bridge.equals(this.To,o.To):!1},$clone:function(to){var s=to||new OrgChart.Layout.Edge;return s.From=this.From,s.To=this.To,s}});Bridge.define("OrgChart.Layout.LayoutStrategyBase",{ParentAlignment:0,ParentChildSpacing:20,ParentConnectorShield:50,SiblingSpacing:20,ChildConnectorHookLength:5});Bridge.define("OrgChart.Layout.Frame1",{Connector:null,config:{init:function(){this.Exterior=new OrgChart.Layout.Rect;this.BranchExterior=new OrgChart.Layout.Rect;this.SiblingsRowV=new OrgChart.Layout.Dimensions}}});Bridge.define("OrgChart.Layout.IChartDataItem",{$kind:"interface"});Bridge.define("OrgChart.Layout.IChartDataSource",{$kind:"interface"});Bridge.define("OrgChart.Layout.LayoutAlgorithm",{statics:{ComputeBranchVisualBoundingRect:function(visualTree){var result=new OrgChart.Layout.Rect.ctor,initialized=!1;return visualTree.getRoot().IterateParentFirst(function(node){var box=node.getElement();return node.getState().IsHidden||box.IsSpecial||(initialized?result=OrgChart.Layout.Rect.op_Addition(result,new OrgChart.Layout.Rect.$ctor1(node.getState().TopLeft,node.getState().Size)):(initialized=!0,result=new OrgChart.Layout.Rect.$ctor1(node.getState().TopLeft,node.getState().Size))),!box.IsCollapsed}),result},Apply:function(state){var $t,$t1,tree,box,box1;if(state.getDiagram().getBoxes().getSystemRoot()==null)throw new System.InvalidOperationException("SystemRoot is not initialized on the box container");if(state.setCurrentOperation(OrgChart.Layout.LayoutState.Operation.Preparing),tree=OrgChart.Layout.BoxTree.Build(state),state.getDiagram().setVisualTree(tree),tree.getRoot()==null||tree.getRoot().getElement().Id!==state.getDiagram().getBoxes().getSystemRoot().Id)throw new System.Exception("SystemRoot is not on the top of the visual tree");if(tree.UpdateHierarchyStats(),state.AttachVisualTree(tree),tree.IterateParentFirst($asm.$.OrgChart.Layout.LayoutAlgorithm.f1),state.setCurrentOperation(OrgChart.Layout.LayoutState.Operation.PreprocessVisualTree),!Bridge.staticEquals(state.getBoxSizeFunc(),null))for($t=Bridge.getEnumerator(System.Linq.Enumerable.from(state.getDiagram().getBoxes().getBoxesById().System$Collections$Generic$IDictionary$2$System$Int32$OrgChart$Layout$Box$getValues()).where($asm.$.OrgChart.Layout.LayoutAlgorithm.f2));$t.moveNext();)box=$t.getCurrent(),box.Size=state.getBoxSizeFunc()(box.DataId);for($t1=Bridge.getEnumerator(state.getDiagram().getBoxes().getBoxesById().System$Collections$Generic$IDictionary$2$System$Int32$OrgChart$Layout$Box$getValues(),OrgChart.Layout.Box);$t1.moveNext();)box1=$t1.getCurrent(),OrgChart.Layout.LayoutAlgorithm.AssertBoxSize(box1);tree.IterateParentFirst($asm.$.OrgChart.Layout.LayoutAlgorithm.f3);OrgChart.Layout.LayoutAlgorithm.PreprocessVisualTree(state,tree);tree.UpdateHierarchyStats();state.setCurrentOperation(OrgChart.Layout.LayoutState.Operation.VerticalLayout);OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,tree.getRoot());state.setCurrentOperation(OrgChart.Layout.LayoutState.Operation.HorizontalLayout);OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,tree.getRoot());state.setCurrentOperation(OrgChart.Layout.LayoutState.Operation.ConnectorsLayout);OrgChart.Layout.LayoutAlgorithm.RouteConnectors(state,tree);state.setCurrentOperation(OrgChart.Layout.LayoutState.Operation.Completed)},AssertBoxSize:function(box){if(!(box.Size.Width>=0)||!(box.Size.Width<=1e9)||!(box.Size.Height>=0)||!(box.Size.Width<=1e9))throw new System.InvalidOperationException(System.String.format("Box {0} has invalid size: {1}x{2}",box.Id,box.Size.Width,box.Size.Height));},PreprocessVisualTree:function(state,visualTree){var defaultStrategy=state.getDiagram().getLayoutSettings().RequireDefaultLayoutStrategy(),defaultAssistantsStrategy=state.getDiagram().getLayoutSettings().RequireDefaultAssistantLayoutStrategy(),regular=new(System.Collections.Generic.Stack$1(OrgChart.Layout.LayoutStrategyBase).ctor),assistants;regular.push(defaultStrategy);assistants=new(System.Collections.Generic.Stack$1(OrgChart.Layout.LayoutStrategyBase).ctor);assistants.push(defaultAssistantsStrategy);visualTree.IterateParentFirst(function(node){var strategy,suggestedStrategyId;return node.getState().IsHidden?!1:(strategy=null,Bridge.staticEquals(state.getLayoutOptimizerFunc(),null)||(suggestedStrategyId=state.getLayoutOptimizerFunc()(node),System.String.isNullOrEmpty(suggestedStrategyId)||(strategy=state.getDiagram().getLayoutSettings().getLayoutStrategies().get(suggestedStrategyId))),node.getIsAssistantRoot()?(strategy==null&&(strategy=node.getParentNode().getElement().AssistantLayoutStrategyId!=null?state.getDiagram().getLayoutSettings().getLayoutStrategies().get(node.getParentNode().getElement().AssistantLayoutStrategyId):assistants.peek()),assistants.push(strategy)):(strategy==null&&(strategy=node.getElement().LayoutStrategyId!=null?state.getDiagram().getLayoutSettings().getLayoutStrategies().get(node.getElement().LayoutStrategyId):regular.peek()),regular.push(strategy),strategy.getSupportsAssistants()||node.SuppressAssistants()),node.getState().setEffectiveLayoutStrategy(strategy),node.getState().RequireLayoutStrategy().PreProcessThisNode(state,node),!node.getElement().IsCollapsed&&node.getChildCount()>0||node.getAssistantsRoot()!=null)},function(node){node.getState().IsHidden||(node.getIsAssistantRoot()?assistants.pop():regular.pop())})},HorizontalLayout:function(state,branchRoot){if(branchRoot.getState().IsHidden)throw new System.InvalidOperationException(System.String.format("Branch root {0} does not affect layout",branchRoot.getElement().Id));var level=state.PushLayoutLevel(branchRoot);try{(branchRoot.getLevel()===0||(branchRoot.getState().NumberOfSiblings>0||branchRoot.getAssistantsRoot()!=null)&&!branchRoot.getElement().IsCollapsed)&&branchRoot.getState().RequireLayoutStrategy().ApplyHorizontalLayout(state,level)}finally{state.PopLayoutLevel()}},VerticalLayout:function(state,branchRoot){if(branchRoot.getState().IsHidden)throw new System.InvalidOperationException(System.String.format("Branch root {0} does not affect layout",branchRoot.getElement().Id));var level=state.PushLayoutLevel(branchRoot);try{(branchRoot.getLevel()===0||(branchRoot.getState().NumberOfSiblings>0||branchRoot.getAssistantsRoot()!=null)&&!branchRoot.getElement().IsCollapsed)&&branchRoot.getState().RequireLayoutStrategy().ApplyVerticalLayout(state,level)}finally{state.PopLayoutLevel()}},RouteConnectors:function(state,visualTree){visualTree.IterateParentFirst(function(node){return node.getElement().IsCollapsed||node.getState().NumberOfSiblings===0&&node.getAssistantsRoot()==null?!1:node.getLevel()===0?!0:!node.getElement().IsSpecial||node.getIsAssistantRoot()?(node.getState().RequireLayoutStrategy().RouteConnectors(state,node),!0):!1})},MoveChildrenOnly:function(state,layoutLevel,offset){var $t,children=layoutLevel.BranchRoot.getChildren(),action,child;if(children==null||System.Array.getCount(children,OrgChart.Layout.BoxTree.Node)===0)throw new System.InvalidOperationException("Should never be invoked when children not set");for(action=function(node){return node.getState().IsHidden||(node.getState().TopLeft=node.getState().TopLeft.MoveH(offset),node.getState().BranchExterior=node.getState().BranchExterior.MoveH(offset)),!0},$t=Bridge.getEnumerator(children,OrgChart.Layout.BoxTree.Node);$t.moveNext();)child=$t.getCurrent(),child.IterateChildFirst(action);layoutLevel.Boundary.ReloadFromBranch(layoutLevel.BranchRoot);layoutLevel.BranchRoot.getState().BranchExterior=layoutLevel.Boundary.getBoundingRect()},MoveOneChild:function(state,root,offset){root.IterateChildFirst(function(node){return node.getState().IsHidden||(node.getState().TopLeft=node.getState().TopLeft.MoveH(offset),node.getState().BranchExterior=node.getState().BranchExterior.MoveH(offset)),!0})},MoveBranch:function(state,layoutLevel,offset){OrgChart.Layout.LayoutAlgorithm.MoveOneChild(state,layoutLevel.BranchRoot,offset);layoutLevel.Boundary.ReloadFromBranch(layoutLevel.BranchRoot);layoutLevel.BranchRoot.getState().BranchExterior=layoutLevel.Boundary.getBoundingRect()},AlignHorizontalCenters:function(state,level,subset){for(var $t1,center=System.Double.min,child,c,leftmost,rightmost,diff,$t=Bridge.getEnumerator(subset,OrgChart.Layout.BoxTree.Node);$t.moveNext();)child=$t.getCurrent(),c=child.getState().getCenterH(),c>center&&(center=c);for(leftmost=System.Double.max,rightmost=System.Double.min,$t1=Bridge.getEnumerator(subset,OrgChart.Layout.BoxTree.Node);$t1.moveNext();){var child1=$t1.getCurrent(),frame=child1.getState(),c1=frame.getCenterH();OrgChart.Layout.LayoutAlgorithm.IsEqual(c1,center)||(diff=center-c1,OrgChart.Layout.LayoutAlgorithm.MoveOneChild(state,child1,diff));leftmost=Math.min(leftmost,child1.getState().BranchExterior.getLeft());rightmost=Math.max(rightmost,child1.getState().BranchExterior.getRight())}return level.Boundary.ReloadFromBranch(level.BranchRoot),new OrgChart.Layout.Dimensions.$ctor1(leftmost,rightmost)},CopyExteriorFrom:function(state,other){state.TopLeft=other.TopLeft;state.Size=other.Size;state.BranchExterior=other.BranchExterior;state.SiblingsRowV=other.SiblingsRowV},IsMinValue:function(value){return value<=System.Double.min+494065645841247e-338},IsMaxValue:function(value){return value>=System.Double.max-494065645841247e-338},IsZero:function(value){return value<=494065645841247e-338&&value>=-494065645841247e-338},IsEqual:function(value,other){return Math.abs(value-other)<=494065645841247e-338},MoveTo:function(state,x,y){state.TopLeft=new OrgChart.Layout.Point.$ctor1(x,y)},AdjustSpacer:function(state,x,y,w,h){state.TopLeft=new OrgChart.Layout.Point.$ctor1(x,y);state.Size=new OrgChart.Layout.Size.$ctor1(w,h);state.BranchExterior=new OrgChart.Layout.Rect.$ctor3(x,y,w,h)}}});Bridge.ns("OrgChart.Layout.LayoutAlgorithm",$asm.$);Bridge.apply($asm.$.OrgChart.Layout.LayoutAlgorithm,{f1:function(node){return node.getState().IsHidden=node.getParentNode()!=null&&(node.getParentNode().getState().IsHidden||node.getParentNode().getElement().IsCollapsed),!0},f2:function(x){return x.getIsDataBound()},f3:function(node){return OrgChart.Layout.LayoutAlgorithm.MoveTo(node.getState(),0,0),node.getState().Size=node.getElement().Size,node.getState().BranchExterior=new OrgChart.Layout.Rect.$ctor1(new OrgChart.Layout.Point.$ctor1(0,0),node.getElement().Size),!0}});Bridge.define("OrgChart.Layout.LayoutState",{m_layoutStack:null,m_pooledBoundaries:null,m_currentOperation:0,config:{events:{BoundaryChanged:null,OperationChanged:null},properties:{Diagram:null,BoxSizeFunc:null,LayoutOptimizerFunc:null},init:function(){this.m_layoutStack=new(System.Collections.Generic.Stack$1(OrgChart.Layout.LayoutState.LayoutLevel).ctor);this.m_pooledBoundaries=new(System.Collections.Generic.Stack$1(OrgChart.Layout.Boundary).ctor)}},ctor:function(diagram){this.$initialize();this.setDiagram(diagram)},getCurrentOperation:function(){return this.m_currentOperation},setCurrentOperation:function(value){this.m_currentOperation=value;Bridge.staticEquals(this.OperationChanged,null)?null:this.OperationChanged(this,new OrgChart.Layout.LayoutStateOperationChangedEventArgs(this))},AttachVisualTree:function(tree){while(this.m_pooledBoundaries.getCount()<tree.getDepth())this.m_pooledBoundaries.push(new OrgChart.Layout.Boundary.ctor)},PushLayoutLevel:function(node){var boundary,result;this.m_pooledBoundaries.getCount()===0&&this.m_pooledBoundaries.push(new OrgChart.Layout.Boundary.ctor);boundary=this.m_pooledBoundaries.pop();switch(this.getCurrentOperation()){case OrgChart.Layout.LayoutState.Operation.VerticalLayout:boundary.Prepare(node);break;case OrgChart.Layout.LayoutState.Operation.HorizontalLayout:boundary.PrepareForHorizontalLayout(node);break;default:throw new System.InvalidOperationException("This operation can only be invoked when performing vertical or horizontal layouts");}return result=new OrgChart.Layout.LayoutState.LayoutLevel(node,boundary),this.m_layoutStack.push(result),Bridge.staticEquals(this.BoundaryChanged,null)?null:this.BoundaryChanged(this,new OrgChart.Layout.BoundaryChangedEventArgs(boundary,result,this)),result},MergeSpacer:function(spacer){if(this.getCurrentOperation()!==OrgChart.Layout.LayoutState.Operation.HorizontalLayout)throw new System.InvalidOperationException("Spacers can only be merged during horizontal layout");if(this.m_layoutStack.getCount()===0)throw new System.InvalidOperationException("Cannot merge spacers at top nesting level");var level=this.m_layoutStack.peek();level.Boundary.MergeFrom$1(spacer);Bridge.staticEquals(this.BoundaryChanged,null)?null:this.BoundaryChanged(this,new OrgChart.Layout.BoundaryChangedEventArgs(level.Boundary,level,this))},PopLayoutLevel:function(){var innerLevel=this.m_layoutStack.pop(),higherLevel,strategy,overlap;if(Bridge.staticEquals(this.BoundaryChanged,null)?null:this.BoundaryChanged(this,new OrgChart.Layout.BoundaryChangedEventArgs(innerLevel.Boundary,innerLevel,this)),this.m_layoutStack.getCount()>0){higherLevel=this.m_layoutStack.peek();switch(this.getCurrentOperation()){case OrgChart.Layout.LayoutState.Operation.VerticalLayout:higherLevel.Boundary.VerticalMergeFrom(innerLevel.Boundary);higherLevel.BranchRoot.getState().BranchExterior=higherLevel.Boundary.getBoundingRect();break;case OrgChart.Layout.LayoutState.Operation.HorizontalLayout:Bridge.referenceEquals(higherLevel.BranchRoot.getAssistantsRoot(),innerLevel.BranchRoot)||(strategy=higherLevel.BranchRoot.getState().RequireLayoutStrategy(),overlap=higherLevel.Boundary.ComputeOverlap(innerLevel.Boundary,strategy.SiblingSpacing,this.getDiagram().getLayoutSettings().getBranchSpacing()),overlap>0&&(OrgChart.Layout.LayoutAlgorithm.MoveBranch(this,innerLevel,overlap),Bridge.staticEquals(this.BoundaryChanged,null)?null:this.BoundaryChanged(this,new OrgChart.Layout.BoundaryChangedEventArgs(innerLevel.Boundary,innerLevel,this))));higherLevel.Boundary.MergeFrom(innerLevel.Boundary);higherLevel.BranchRoot.getState().BranchExterior=new OrgChart.Layout.Rect.$ctor3(higherLevel.Boundary.getBoundingRect().getLeft(),higherLevel.BranchRoot.getState().BranchExterior.getTop(),higherLevel.Boundary.getBoundingRect().Size.Width,higherLevel.BranchRoot.getState().BranchExterior.Size.Height);break;default:throw new System.InvalidOperationException("This operation can only be invoked when performing vertical or horizontal layouts");}Bridge.staticEquals(this.BoundaryChanged,null)?null:this.BoundaryChanged(this,new OrgChart.Layout.BoundaryChangedEventArgs(higherLevel.Boundary,higherLevel,this))}this.m_pooledBoundaries.push(innerLevel.Boundary)}});Bridge.define("OrgChart.Layout.LayoutState.LayoutLevel",{BranchRoot:null,Boundary:null,ctor:function(node,boundary){this.$initialize();this.BranchRoot=node;this.Boundary=boundary}});Bridge.define("OrgChart.Layout.LayoutState.Operation",{$kind:"enum",statics:{Idle:0,Preparing:1,PreprocessVisualTree:2,VerticalLayout:3,HorizontalLayout:4,ConnectorsLayout:5,Completed:6}});Bridge.define("OrgChart.Layout.LayoutStateOperationChangedEventArgs",{State:null,ctor:function(state){this.$initialize();this.State=state}});Bridge.define("OrgChart.Layout.MultiLineFishboneLayoutStrategy.SingleFishboneLayoutAdapter.GroupIterator",{m_numberOfSiblings:0,m_numberOfGroups:0,Group:0,FromIndex:0,Count:0,MaxOnLeft:0,ctor:function(numberOfSiblings,numberOfGroups){this.$initialize();this.m_numberOfSiblings=numberOfSiblings;this.m_numberOfGroups=numberOfGroups},CountInGroup:function(){for(var countInRow=this.m_numberOfGroups*2|0,result=0,countToThisGroup=(this.Group*2|0)+2|0,firstInRow=0,countInThisRow;;){if(countInThisRow=firstInRow>=(this.m_numberOfSiblings-countInRow|0)?this.m_numberOfSiblings-firstInRow|0:countInRow,countInThisRow>=countToThisGroup)result=result+2|0;else{countToThisGroup=countToThisGroup-1|0;countInThisRow>=countToThisGroup&&(result=result+1|0);break}firstInRow=firstInRow+countInRow|0}return result},NextGroup:function(){return this.FromIndex=this.FromIndex+this.Count|0,this.FromIndex>0&&(this.Group=this.Group+1|0),this.Count=this.CountInGroup(),this.MaxOnLeft=(Bridge.Int.div(this.Count,2)|0)+this.Count%2|0,this.Count!==0}});Bridge.define("OrgChart.Layout.NodeLayoutInfo",{IsHidden:!1,NumberOfSiblings:0,NumberOfSiblingRows:0,NumberOfSiblingColumns:0,Connector:null,m_effectiveLayoutStrategy:null,config:{init:function(){this.TopLeft=new OrgChart.Layout.Point;this.Size=new OrgChart.Layout.Size;this.BranchExterior=new OrgChart.Layout.Rect;this.SiblingsRowV=new OrgChart.Layout.Dimensions}},setEffectiveLayoutStrategy:function(value){this.m_effectiveLayoutStrategy=value},getLeft:function(){return this.TopLeft.X},getRight:function(){return this.TopLeft.X+this.Size.Width},getTop:function(){return this.TopLeft.Y},getBottom:function(){return this.TopLeft.Y+this.Size.Height},getCenterH:function(){return this.TopLeft.X+this.Size.Width/2},getCenterV:function(){return this.TopLeft.Y+this.Size.Height/2},RequireLayoutStrategy:function(){if(this.m_effectiveLayoutStrategy==null)throw new System.Exception("effectiveLayoutStrategy is not set");return this.m_effectiveLayoutStrategy}});Bridge.define("OrgChart.Layout.Point",{$kind:"struct",statics:{getDefaultValue:function(){return new OrgChart.Layout.Point}},X:0,Y:0,$ctor1:function(x,y){this.$initialize();this.X=x;this.Y=y},ctor:function(){this.$initialize()},MoveH:function(offsetX){return new OrgChart.Layout.Point.$ctor1(this.X+offsetX,this.Y)},getHashCode:function(){return Bridge.addHash([1852403652,this.X,this.Y])},equals:function(o){return Bridge.is(o,OrgChart.Layout.Point)?Bridge.equals(this.X,o.X)&&Bridge.equals(this.Y,o.Y):!1},$clone:function(to){var s=to||new OrgChart.Layout.Point;return s.X=this.X,s.Y=this.Y,s}});Bridge.define("OrgChart.Layout.Rect",{$kind:"struct",statics:{op_Addition:function(x,y){var left=Math.min(x.getLeft(),y.getLeft()),top=Math.min(x.getTop(),y.getTop()),right=Math.max(x.getRight(),y.getRight()),bottom=Math.max(x.getBottom(),y.getBottom());return new OrgChart.Layout.Rect.$ctor3(left,top,right-left,bottom-top)},getDefaultValue:function(){return new OrgChart.Layout.Rect}},config:{init:function(){this.TopLeft=new OrgChart.Layout.Point;this.Size=new OrgChart.Layout.Size}},$ctor3:function(x,y,w,h){if(this.$initialize(),w<0)throw new System.ArgumentOutOfRangeException("w");if(h<0)throw new System.ArgumentOutOfRangeException("h");this.TopLeft=new OrgChart.Layout.Point.$ctor1(x,y);this.Size=new OrgChart.Layout.Size.$ctor1(w,h)},$ctor1:function(topLeft,size){this.$initialize();this.TopLeft=topLeft;this.Size=size},$ctor2:function(size){this.$initialize();this.TopLeft=new OrgChart.Layout.Point.$ctor1(0,0);this.Size=size},ctor:function(){this.$initialize()},getBottomRight:function(){return new OrgChart.Layout.Point.$ctor1(this.TopLeft.X+this.Size.Width,this.TopLeft.Y+this.Size.Height)},getLeft:function(){return this.TopLeft.X},getRight:function(){return this.TopLeft.X+this.Size.Width},getCenterH:function(){return this.TopLeft.X+this.Size.Width/2},getCenterV:function(){return this.TopLeft.Y+this.Size.Height/2},getTop:function(){return this.TopLeft.Y},getBottom:function(){return this.TopLeft.Y+this.Size.Height},MoveH:function(offsetX){return new OrgChart.Layout.Rect.$ctor1(new OrgChart.Layout.Point.$ctor1(this.getLeft()+offsetX,this.getTop()),this.Size)},getHashCode:function(){return Bridge.addHash([1952671058,this.TopLeft,this.Size])},equals:function(o){return Bridge.is(o,OrgChart.Layout.Rect)?Bridge.equals(this.TopLeft,o.TopLeft)&&Bridge.equals(this.Size,o.Size):!1},$clone:function(to){var s=to||new OrgChart.Layout.Rect;return s.TopLeft=this.TopLeft,s.Size=this.Size,s}});Bridge.define("OrgChart.Layout.Size",{$kind:"struct",statics:{getDefaultValue:function(){return new OrgChart.Layout.Size}},Width:0,Height:0,$ctor1:function(w,h){this.$initialize();this.Width=w;this.Height=h},ctor:function(){this.$initialize()},getHashCode:function(){return Bridge.addHash([1702521171,this.Width,this.Height])},equals:function(o){return Bridge.is(o,OrgChart.Layout.Size)?Bridge.equals(this.Width,o.Width)&&Bridge.equals(this.Height,o.Height):!1},$clone:function(to){var s=to||new OrgChart.Layout.Size;return s.Width=this.Width,s.Height=this.Height,s}});Bridge.define("OrgChart.Layout.StackOrientation",{$kind:"enum",statics:{InvalidValue:0,SingleRowHorizontal:1,SingleColumnVertical:2}});Bridge.define("OrgChart.Test.TestDataGen",{statics:{GenerateBoxSizes:function(boxContainer){var $t,seed=0,random,box;for(System.Diagnostics.Debug.writeln(seed.toString()),random=new System.Random.$ctor1(seed),$t=Bridge.getEnumerator(boxContainer.getBoxesById().System$Collections$Generic$IDictionary$2$System$Int32$OrgChart$Layout$Box$getValues(),OrgChart.Layout.Box);$t.moveNext();)box=$t.getCurrent(),box.IsSpecial||(box.Size=new OrgChart.Layout.Size.$ctor1(50+random.next$1(50)|0,50+random.next$1(50)|0))}},GenerateDataItems:function(dataSource,count,percentAssistants){for(var item,$t=Bridge.getEnumerator(this.GenerateRandomDataItems(count,percentAssistants));$t.moveNext();)item=$t.getCurrent(),dataSource.Items.add(item.getId(),item)},GenerateRandomDataItems:function(itemCount,percentAssistants){var random,items,i,firstInLayer,prevLayerSize,layerSize,i1,parentIndex,i2,assistantCount,i3;if(itemCount<0)throw new System.ArgumentOutOfRangeException("itemCount","Count must be zero or positive",null,itemCount);for(random=new System.Random.$ctor1(0),items=new(System.Collections.Generic.List$1(OrgChart.Test.TestDataItem))(itemCount),i=0;i<itemCount;i=i+1|0)items.add(Bridge.merge(new OrgChart.Test.TestDataItem,{setId:i.toString()}));for(firstInLayer=1,prevLayerSize=1;firstInLayer<itemCount;){for(layerSize=(15+prevLayerSize|0)+random.next$1(prevLayerSize*2|0)|0,i1=firstInLayer;i1<(firstInLayer+layerSize|0)&&i1<itemCount;i1=i1+1|0)parentIndex=(firstInLayer-1|0)-random.next$1(prevLayerSize)|0,items.getItem(i1).setParentId(items.getItem(parentIndex).getId());firstInLayer=firstInLayer+layerSize|0;prevLayerSize=layerSize}for(i2=0;i2<(Bridge.Int.div(items.getCount(),2)|0);i2=i2+1|0){var from=random.next$1(items.getCount()),to=random.next$1(items.getCount()),temp=items.getItem(from);items.setItem(from,items.getItem(to));items.setItem(to,temp)}if(percentAssistants>0)for(assistantCount=Math.min(items.getCount(),Bridge.Int.clip32(Math.ceil((items.getCount()*percentAssistants|0)/100))),i3=0;i3<assistantCount;i3=i3+1|0)items.getItem(random.next$1(items.getCount())).setIsAssistant(!0);return items}});Bridge.define("System.Diagnostics.DebuggerDisplayAttribute",{inherits:[System.Attribute],ctor:function(){this.$initialize();System.Attribute.ctor.call(this)}});Bridge.define("OrgChart.Layout.FishboneAssistantsLayoutStrategy",{inherits:[OrgChart.Layout.LayoutStrategyBase],getSupportsAssistants:function(){return!1},PreProcessThisNode:function(state,node){if(node.getState().NumberOfSiblings=node.getChildCount(),node.getState().NumberOfSiblings>0){node.getState().NumberOfSiblingColumns=1;node.getState().NumberOfSiblingRows=Bridge.Int.div(node.getState().NumberOfSiblings,2)|0;node.getState().NumberOfSiblings%2!=0&&(node.getState().NumberOfSiblingRows=node.getState().NumberOfSiblingRows+1|0);var spacer=OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,node.getElement().Id,!1);node.AddRegularChild(spacer)}},ApplyVerticalLayout:function(state,level){var node=level.BranchRoot,prevRowBottom,maxOnLeft,i,rowExterior,i2,child2,frame2;if(node.getLevel()===0)throw new System.InvalidOperationException("Should never be invoked on root node");for(prevRowBottom=node.getState().SiblingsRowV.To,maxOnLeft=this.MaxOnLeft(node),i=0;i<maxOnLeft;i=i+1|0){var spacing=i===0?this.ParentChildSpacing:this.SiblingSpacing,child=System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node),frame=child.getState();OrgChart.Layout.LayoutAlgorithm.MoveTo(frame,frame.getLeft(),prevRowBottom+spacing);rowExterior=new OrgChart.Layout.Dimensions.$ctor1(frame.getTop(),frame.getBottom());i2=i+maxOnLeft|0;i2<node.getState().NumberOfSiblings&&(child2=System.Array.getItem(node.getChildren(),i2,OrgChart.Layout.BoxTree.Node),frame2=child2.getState(),OrgChart.Layout.LayoutAlgorithm.MoveTo(frame2,frame2.getLeft(),prevRowBottom+spacing),frame2.getBottom()>frame.getBottom()?OrgChart.Layout.LayoutAlgorithm.MoveTo(frame,frame.getLeft(),frame2.getCenterV()-frame.Size.Height/2):frame2.getBottom()<frame.getBottom()&&OrgChart.Layout.LayoutAlgorithm.MoveTo(frame2,frame2.getLeft(),frame.getCenterV()-frame2.Size.Height/2),frame2.BranchExterior=new OrgChart.Layout.Rect.$ctor1(frame2.TopLeft,frame2.Size),rowExterior=OrgChart.Layout.Dimensions.op_Addition(rowExterior,new OrgChart.Layout.Dimensions.$ctor1(frame2.getTop(),frame2.getBottom())),frame2.SiblingsRowV=rowExterior,OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,child2),prevRowBottom=frame2.BranchExterior.getBottom());frame.BranchExterior=new OrgChart.Layout.Rect.$ctor1(frame.TopLeft,frame.Size);frame.SiblingsRowV=rowExterior;OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,child);prevRowBottom=Math.max(prevRowBottom,frame.BranchExterior.getBottom())}},ApplyHorizontalLayout:function(state,level){var node=level.BranchRoot,i,child,rightmost,k,opposite,spacer,diff,carrier,desiredCenter;node.getLevel()===0&&(node.getState().SiblingsRowV=new OrgChart.Layout.Dimensions.$ctor1(node.getState().getTop(),node.getState().getBottom()));var left=!0,countOnThisSide=0,maxOnLeft=this.MaxOnLeft(node);for(i=0;i<node.getState().NumberOfSiblings;i=i+1|0)if(child=System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node),OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,child),(countOnThisSide=countOnThisSide+1|0)===maxOnLeft&&left){for(OrgChart.Layout.LayoutAlgorithm.AlignHorizontalCenters(state,level,this.EnumerateSiblings(node,0,maxOnLeft)),left=!1,countOnThisSide=0,rightmost=System.Double.min,k=0;k<=i;k=k+1|0)rightmost=Math.max(rightmost,System.Array.getItem(node.getChildren(),k,OrgChart.Layout.BoxTree.Node).getState().BranchExterior.getRight());node.getState().NumberOfSiblings%2!=0?rightmost=Math.max(rightmost,child.getState().getRight()):(opposite=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings-1|0,OrgChart.Layout.BoxTree.Node),rightmost=opposite.getElement().IsCollapsed||opposite.getChildCount()===0?Math.max(rightmost,child.getState().getRight()):Math.max(rightmost,child.getState().BranchExterior.getRight()));spacer=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings,OrgChart.Layout.BoxTree.Node);OrgChart.Layout.LayoutAlgorithm.AdjustSpacer(spacer.getState(),rightmost,node.getState().getBottom(),this.ParentConnectorShield,node.getState().BranchExterior.getBottom()-node.getState().getBottom());level.Boundary.MergeFrom$1(spacer)}OrgChart.Layout.LayoutAlgorithm.AlignHorizontalCenters(state,level,this.EnumerateSiblings(node,maxOnLeft,node.getState().NumberOfSiblings));node.getLevel()>0&&node.getState().NumberOfSiblings>0&&(carrier=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings,OrgChart.Layout.BoxTree.Node).getState().getCenterH(),desiredCenter=node.getState().getCenterH(),diff=desiredCenter-carrier,OrgChart.Layout.LayoutAlgorithm.MoveChildrenOnly(state,level,diff))},RouteConnectors:function(state,node){var count=node.getState().NumberOfSiblings,i,to,y;if(count!==0){this.NeedCarrierProtector(node)&&(count=count+1|0);var segments=System.Array.init(count,function(){return new OrgChart.Layout.Edge}),ix=0,maxOnLeft=this.MaxOnLeft(node),carrier=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings,OrgChart.Layout.BoxTree.Node).getState(),from=carrier.getCenterH(),isLeft=!0,countOnThisSide=0,bottomMost=System.Double.min;for(i=0;i<node.getState().NumberOfSiblings;i=i+1|0)to=isLeft?System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node).getState().getRight():System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node).getState().getLeft(),y=System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node).getState().getCenterV(),bottomMost=Math.max(bottomMost,y),segments[Bridge.identity(ix,ix=ix+1|0)]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(from,y),new OrgChart.Layout.Point.$ctor1(to,y)),(countOnThisSide=countOnThisSide+1|0)===maxOnLeft&&(countOnThisSide=0,isLeft=!isLeft);this.NeedCarrierProtector(node)&&(segments[node.getState().NumberOfSiblings]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(carrier.getCenterH(),carrier.getTop()),new OrgChart.Layout.Point.$ctor1(carrier.getCenterH(),bottomMost)));node.getState().Connector=new OrgChart.Layout.Connector(segments)}},MaxOnLeft:function(node){return(Bridge.Int.div(node.getState().NumberOfSiblings,2)|0)+node.getState().NumberOfSiblings%2|0},NeedCarrierProtector:function(node){return node.getParentNode().getChildCount()===0},EnumerateSiblings:function(node,from,to){for(var $yield=[],i=from;i<to;i=i+1|0)$yield.push(System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node));return System.Array.toEnumerable($yield)}});Bridge.define("OrgChart.Layout.LinearLayoutStrategy",{inherits:[OrgChart.Layout.LayoutStrategyBase],getSupportsAssistants:function(){return!0},PreProcessThisNode:function(state,node){var verticalSpacer,horizontalSpacer;node.getChildCount()>0&&(node.getState().NumberOfSiblings=node.getElement().IsCollapsed?0:node.getChildCount(),node.getElement().IsCollapsed||(verticalSpacer=OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,node.getElement().Id,!1),node.AddRegularChild(verticalSpacer),horizontalSpacer=OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,node.getElement().Id,!1),node.AddRegularChild(horizontalSpacer)))},ApplyVerticalLayout:function(state,level){var node=level.BranchRoot,siblingsRowExterior,top,i,child,rect,i1,child1;if(node.getLevel()===0&&(node.getState().SiblingsRowV=new OrgChart.Layout.Dimensions.$ctor1(node.getState().getTop(),node.getState().getBottom())),node.getAssistantsRoot()!=null&&(OrgChart.Layout.LayoutAlgorithm.CopyExteriorFrom(node.getAssistantsRoot().getState(),node.getState()),OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,node.getAssistantsRoot())),node.getState().NumberOfSiblings!==0){for(siblingsRowExterior=OrgChart.Layout.Dimensions.MinMax(),top=node.getAssistantsRoot()==null?node.getState().SiblingsRowV.To+this.ParentChildSpacing:node.getState().BranchExterior.getBottom()+this.ParentChildSpacing,i=0;i<node.getState().NumberOfSiblings;i=i+1|0)child=System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node),rect=child.getState(),OrgChart.Layout.LayoutAlgorithm.MoveTo(child.getState(),0,top),child.getState().BranchExterior=new OrgChart.Layout.Rect.$ctor1(child.getState().TopLeft,child.getState().Size),siblingsRowExterior=OrgChart.Layout.Dimensions.op_Addition(siblingsRowExterior,new OrgChart.Layout.Dimensions.$ctor1(top,top+rect.Size.Height));for(siblingsRowExterior=new OrgChart.Layout.Dimensions.$ctor1(siblingsRowExterior.From,siblingsRowExterior.To),i1=0;i1<node.getState().NumberOfSiblings;i1=i1+1|0)child1=System.Array.getItem(node.getChildren(),i1,OrgChart.Layout.BoxTree.Node),child1.getState().SiblingsRowV=siblingsRowExterior,OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,child1)}},ApplyHorizontalLayout:function(state,level){var node=level.BranchRoot,i,child,verticalSpacer,firstInRow,horizontalSpacer;for(node.getAssistantsRoot()!=null&&OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,node.getAssistantsRoot()),i=0;i<node.getState().NumberOfSiblings;i=i+1|0)child=System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node),OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,child);if(node.getLevel()>0&&node.getChildCount()>0){var rect=node.getState(),leftmost=System.Array.getItem(node.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().getCenterH(),rightmost=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings-1|0,OrgChart.Layout.BoxTree.Node).getState().getCenterH(),desiredCenter=node.getState().NumberOfSiblings===1||this.ParentAlignment===OrgChart.Layout.BranchParentAlignment.Center?leftmost+(rightmost-leftmost)/2:this.ParentAlignment===OrgChart.Layout.BranchParentAlignment.Left?leftmost+this.ChildConnectorHookLength:rightmost-this.ChildConnectorHookLength,center=rect.getCenterH(),diff=center-desiredCenter;OrgChart.Layout.LayoutAlgorithm.MoveChildrenOnly(state,level,diff);verticalSpacer=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings,OrgChart.Layout.BoxTree.Node);OrgChart.Layout.LayoutAlgorithm.AdjustSpacer(verticalSpacer.getState(),center-this.ParentConnectorShield/2,rect.getBottom(),this.ParentConnectorShield,System.Array.getItem(node.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().SiblingsRowV.From-rect.getBottom());state.MergeSpacer(verticalSpacer);firstInRow=System.Array.getItem(node.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState();horizontalSpacer=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings+1|0,OrgChart.Layout.BoxTree.Node);OrgChart.Layout.LayoutAlgorithm.AdjustSpacer(horizontalSpacer.getState(),firstInRow.getLeft(),firstInRow.SiblingsRowV.From-this.ParentChildSpacing,System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings-1|0,OrgChart.Layout.BoxTree.Node).getState().getRight()-firstInRow.getLeft(),this.ParentChildSpacing);state.MergeSpacer(horizontalSpacer)}},RouteConnectors:function(state,node){var normalChildCount=node.getState().NumberOfSiblings,count=normalChildCount===0?0:normalChildCount===1?1:2+normalChildCount|0,space,i,childRect,childCenter;if(count===0){node.getState().Connector=null;return}var segments=System.Array.init(count,function(){return new OrgChart.Layout.Edge}),rootRect=node.getState(),center=rootRect.getCenterH();if(node.getChildren()==null)throw new System.Exception("State is present, but children not set");if(count===1)segments[0]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(center,rootRect.getBottom()),new OrgChart.Layout.Point.$ctor1(center,System.Array.getItem(node.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().getTop()));else{for(space=System.Array.getItem(node.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().SiblingsRowV.From-rootRect.getBottom(),segments[0]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(center,rootRect.getBottom()),new OrgChart.Layout.Point.$ctor1(center,rootRect.getBottom()+space-this.ChildConnectorHookLength)),i=0;i<normalChildCount;i=i+1|0)childRect=System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node).getState(),childCenter=childRect.getCenterH(),segments[1+i|0]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(childCenter,childRect.getTop()),new OrgChart.Layout.Point.$ctor1(childCenter,childRect.getTop()-this.ChildConnectorHookLength));segments[count-1|0]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(segments[1].To.X,segments[1].To.Y),new OrgChart.Layout.Point.$ctor1(segments[count-2|0].To.X,segments[1].To.Y))}node.getState().Connector=new OrgChart.Layout.Connector(segments)}});Bridge.define("OrgChart.Layout.MultiLineFishboneLayoutStrategy.SingleFishboneLayoutAdapter",{inherits:[OrgChart.Layout.LayoutStrategyBase],RealRoot:null,SpecialRoot:null,Iterator:null,ctor:function(realRoot){this.$initialize();OrgChart.Layout.LayoutStrategyBase.ctor.call(this);this.Iterator=new OrgChart.Layout.MultiLineFishboneLayoutStrategy.SingleFishboneLayoutAdapter.GroupIterator(realRoot.getState().NumberOfSiblings,realRoot.getState().NumberOfSiblingColumns);this.RealRoot=realRoot;this.SpecialRoot=Bridge.merge(new OrgChart.Layout.MultiLineFishboneLayoutStrategy.SingleFishboneLayoutAdapter.TreeNodeView(OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,realRoot.getElement().Id,!0)),{setLevel:this.RealRoot.getLevel(),setParentNode:this.RealRoot});this.SpecialRoot.getState().setEffectiveLayoutStrategy(this);var parentStrategy=Bridge.cast(realRoot.getState().RequireLayoutStrategy(),OrgChart.Layout.MultiLineFishboneLayoutStrategy);this.SiblingSpacing=parentStrategy.SiblingSpacing;this.ParentConnectorShield=parentStrategy.ParentConnectorShield;this.ParentChildSpacing=parentStrategy.ParentChildSpacing;this.ParentAlignment=parentStrategy.ParentAlignment;this.ChildConnectorHookLength=parentStrategy.ChildConnectorHookLength},getSupportsAssistants:function(){return!1},NextGroup:function(){var i,spacer;if(!this.Iterator.NextGroup())return!1;for(this.SpecialRoot.getState().NumberOfSiblings=this.Iterator.Count,this.SpecialRoot.Prepare(this.RealRoot.getState().NumberOfSiblingRows*2|0),i=0;i<this.Iterator.Count;i=i+1|0)this.SpecialRoot.AddChildView(System.Array.getItem(this.RealRoot.getChildren(),this.Iterator.FromIndex+i|0,OrgChart.Layout.BoxTree.Node));return spacer=System.Array.getItem(this.RealRoot.getChildren(),(this.RealRoot.getState().NumberOfSiblings+1|0)+this.Iterator.Group|0,OrgChart.Layout.BoxTree.Node),this.SpecialRoot.AddChildView(spacer),OrgChart.Layout.LayoutAlgorithm.CopyExteriorFrom(this.SpecialRoot.getState(),this.RealRoot.getState()),!0},PreProcessThisNode:function(){throw new System.NotSupportedException;},ApplyVerticalLayout:function(state){for(var rowExterior,i2,child2,frame2,$t,$t1,prevRowBottom=($t=this.RealRoot.getAssistantsRoot())!=null?$t.getState().BranchExterior.getBottom():($t1=null,$t1!=null?$t1:this.SpecialRoot.getState().SiblingsRowV.To),i=0;i<this.Iterator.MaxOnLeft;i=i+1|0){var spacing=i===0?this.ParentChildSpacing:this.SiblingSpacing,child=System.Array.getItem(this.SpecialRoot.getChildren(),i,OrgChart.Layout.BoxTree.Node),frame=child.getState();OrgChart.Layout.LayoutAlgorithm.MoveTo(frame,frame.getLeft(),prevRowBottom+spacing);rowExterior=new OrgChart.Layout.Dimensions.$ctor1(frame.getTop(),frame.getBottom());i2=i+this.Iterator.MaxOnLeft|0;i2<this.Iterator.Count&&(child2=System.Array.getItem(this.SpecialRoot.getChildren(),i2,OrgChart.Layout.BoxTree.Node),frame2=child2.getState(),OrgChart.Layout.LayoutAlgorithm.MoveTo(frame2,frame2.getLeft(),prevRowBottom+spacing),frame2.getBottom()>frame.getBottom()?OrgChart.Layout.LayoutAlgorithm.MoveTo(frame,frame.getLeft(),frame2.getCenterV()-frame.Size.Height/2):frame2.getBottom()<frame.getBottom()&&OrgChart.Layout.LayoutAlgorithm.MoveTo(frame2,frame2.getLeft(),frame.getCenterV()-frame2.Size.Height/2),frame2.BranchExterior=new OrgChart.Layout.Rect.$ctor1(frame2.TopLeft,frame2.Size),rowExterior=OrgChart.Layout.Dimensions.op_Addition(rowExterior,new OrgChart.Layout.Dimensions.$ctor1(frame2.getTop(),frame2.getBottom())),frame2.SiblingsRowV=rowExterior,OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,child2),prevRowBottom=frame2.BranchExterior.getBottom());frame.BranchExterior=new OrgChart.Layout.Rect.$ctor1(frame.TopLeft,frame.Size);frame.SiblingsRowV=rowExterior;OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,child);prevRowBottom=Math.max(prevRowBottom,frame.BranchExterior.getBottom())}},ApplyHorizontalLayout:function(state,level){var left,countOnThisSide,i,child,rightmost,k,spacer;if(!Bridge.referenceEquals(level.BranchRoot,this.SpecialRoot))throw new System.InvalidOperationException("Wrong root node received");for(left=!0,countOnThisSide=0,i=0;i<this.Iterator.Count;i=i+1|0)if(child=System.Array.getItem(this.SpecialRoot.getChildren(),i,OrgChart.Layout.BoxTree.Node),OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,child),(countOnThisSide=countOnThisSide+1|0)===this.Iterator.MaxOnLeft&&left){for(OrgChart.Layout.LayoutAlgorithm.AlignHorizontalCenters(state,level,this.EnumerateSiblings(0,this.Iterator.MaxOnLeft)),left=!1,countOnThisSide=0,rightmost=System.Double.min,k=0;k<i;k=k+1|0)rightmost=Math.max(rightmost,System.Array.getItem(this.SpecialRoot.getChildren(),k,OrgChart.Layout.BoxTree.Node).getState().BranchExterior.getRight());rightmost=Math.max(rightmost,child.getState().getRight());spacer=System.Array.getItem(this.SpecialRoot.getChildren(),this.SpecialRoot.getState().NumberOfSiblings,OrgChart.Layout.BoxTree.Node);OrgChart.Layout.LayoutAlgorithm.AdjustSpacer(spacer.getState(),rightmost,System.Array.getItem(this.SpecialRoot.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().SiblingsRowV.From,this.SiblingSpacing,child.getState().SiblingsRowV.To-System.Array.getItem(this.SpecialRoot.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().SiblingsRowV.From);level.Boundary.MergeFrom$1(spacer)}OrgChart.Layout.LayoutAlgorithm.AlignHorizontalCenters(state,level,this.EnumerateSiblings(this.Iterator.MaxOnLeft,this.Iterator.Count))},EnumerateSiblings:function(from,to){for(var $yield=[],i=from;i<to;i=i+1|0)$yield.push(System.Array.getItem(this.SpecialRoot.getChildren(),i,OrgChart.Layout.BoxTree.Node));return System.Array.toEnumerable($yield)},RouteConnectors:function(){throw new System.NotSupportedException;}});Bridge.define("OrgChart.Layout.MultiLineFishboneLayoutStrategy.SingleFishboneLayoutAdapter.TreeNodeView",{inherits:[OrgChart.Layout.BoxTree.Node],ctor:function(element){this.$initialize();OrgChart.Layout.BoxTree.Node.ctor.call(this,element)},Prepare:function(capacity){this.getChildren()==null?this.setChildren(new(System.Collections.Generic.List$1(OrgChart.Layout.BoxTree.Node))(capacity)):System.Array.clear(this.getChildren(),OrgChart.Layout.BoxTree.Node)},AddChildView:function(node){System.Array.add(this.getChildren(),node,OrgChart.Layout.BoxTree.Node)}});Bridge.define("OrgChart.Layout.SingleColumnLayoutStrategy",{inherits:[OrgChart.Layout.LayoutStrategyBase],getSupportsAssistants:function(){return!0},PreProcessThisNode:function(state,node){if(this.ParentAlignment!==OrgChart.Layout.BranchParentAlignment.Left&&this.ParentAlignment!==OrgChart.Layout.BranchParentAlignment.Right)throw new System.InvalidOperationException("Unsupported value for ParentAlignment");if(node.getState().NumberOfSiblings=node.getElement().IsCollapsed?0:node.getChildCount(),node.getState().NumberOfSiblings>0&&node.getLevel()>0){node.getState().NumberOfSiblingColumns=1;node.getState().NumberOfSiblingRows=node.getChildCount();var verticalSpacer=OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,node.getElement().Id,!1);node.AddRegularChild(verticalSpacer)}},ApplyVerticalLayout:function(state,level){var node=level.BranchRoot,prevRowExterior,row,rowExterior,childBranchBottom;for(node.getLevel()===0&&(node.getState().SiblingsRowV=new OrgChart.Layout.Dimensions.$ctor1(node.getState().getTop(),node.getState().getBottom())),node.getAssistantsRoot()!=null&&(OrgChart.Layout.LayoutAlgorithm.CopyExteriorFrom(node.getAssistantsRoot().getState(),node.getState()),OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,node.getAssistantsRoot())),prevRowExterior=new OrgChart.Layout.Dimensions.$ctor1(node.getState().SiblingsRowV.From,node.getAssistantsRoot()==null?node.getState().SiblingsRowV.To:node.getState().BranchExterior.getBottom()),row=0;row<node.getState().NumberOfSiblings;row=row+1|0){var child=System.Array.getItem(node.getChildren(),row,OrgChart.Layout.BoxTree.Node),rect=child.getState(),top=prevRowExterior.To+(row===0?this.ParentChildSpacing:this.SiblingSpacing);OrgChart.Layout.LayoutAlgorithm.MoveTo(child.getState(),rect.getLeft(),top);child.getState().BranchExterior=new OrgChart.Layout.Rect.$ctor1(child.getState().TopLeft,child.getState().Size);rowExterior=new OrgChart.Layout.Dimensions.$ctor1(top,top+rect.Size.Height);child=System.Array.getItem(node.getChildren(),row,OrgChart.Layout.BoxTree.Node);child.getState().SiblingsRowV=rowExterior;OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,child);childBranchBottom=child.getState().BranchExterior.getBottom();prevRowExterior=new OrgChart.Layout.Dimensions.$ctor1(rowExterior.From,Math.max(childBranchBottom,rowExterior.To))}},ApplyHorizontalLayout:function(state,level){var node=level.BranchRoot,nodeState=node.getState(),row,child,edges,rect,diff,desiredLeft,desiredRight,verticalSpacer,spacerTop,spacerBottom;for(node.getAssistantsRoot()!=null&&OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,node.getAssistantsRoot()),row=0;row<nodeState.NumberOfSiblings;row=row+1|0)child=System.Array.getItem(node.getChildren(),row,OrgChart.Layout.BoxTree.Node),OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,child);if(edges=OrgChart.Layout.LayoutAlgorithm.AlignHorizontalCenters(state,level,this.EnumerateColumn(node)),node.getLevel()>0&&node.getChildCount()>0){if(rect=node.getState(),this.ParentAlignment===OrgChart.Layout.BranchParentAlignment.Left)desiredLeft=rect.getCenterH()+this.ParentConnectorShield/2,diff=desiredLeft-edges.From;else if(this.ParentAlignment===OrgChart.Layout.BranchParentAlignment.Right)desiredRight=rect.getCenterH()-this.ParentConnectorShield/2,diff=desiredRight-edges.To;else throw new System.InvalidOperationException("Invalid ParentAlignment setting");OrgChart.Layout.LayoutAlgorithm.MoveChildrenOnly(state,level,diff);verticalSpacer=node.getLevel()>0?System.Array.getItem(node.getChildren(),node.getChildCount()-1|0,OrgChart.Layout.BoxTree.Node):null;verticalSpacer!=null&&(spacerTop=node.getState().getBottom(),spacerBottom=System.Array.getItem(node.getChildren(),node.getChildCount()-2|0,OrgChart.Layout.BoxTree.Node).getState().getBottom(),OrgChart.Layout.LayoutAlgorithm.AdjustSpacer(verticalSpacer.getState(),rect.getCenterH()-this.ParentConnectorShield/2,spacerTop,this.ParentConnectorShield,spacerBottom-spacerTop),state.MergeSpacer(verticalSpacer))}},EnumerateColumn:function(branchRoot){for(var $yield=[],i=0;i<branchRoot.getState().NumberOfSiblings;i=i+1|0)$yield.push(System.Array.getItem(branchRoot.getChildren(),i,OrgChart.Layout.BoxTree.Node));return System.Array.toEnumerable($yield)},RouteConnectors:function(state,node){var ix,rect,destination;if(node.getChildCount()!==0){var count=1+node.getState().NumberOfSiblings|0,segments=System.Array.init(count,function(){return new OrgChart.Layout.Edge}),rootRect=node.getState(),center=rootRect.getCenterH(),verticalCarrierHeight=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings-1|0,OrgChart.Layout.BoxTree.Node).getState().getCenterV()-node.getState().getBottom();for(segments[0]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(center,rootRect.getBottom()),new OrgChart.Layout.Point.$ctor1(center,rootRect.getBottom()+verticalCarrierHeight)),ix=0;ix<node.getState().NumberOfSiblings;ix=ix+1|0)rect=System.Array.getItem(node.getChildren(),ix,OrgChart.Layout.BoxTree.Node).getState(),destination=this.ParentAlignment===OrgChart.Layout.BranchParentAlignment.Left?rect.getLeft():rect.getRight(),segments[1+ix|0]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(center,rect.getCenterV()),new OrgChart.Layout.Point.$ctor1(destination,rect.getCenterV()));node.getState().Connector=new OrgChart.Layout.Connector(segments)}}});Bridge.define("OrgChart.Layout.StackingLayoutStrategy",{inherits:[OrgChart.Layout.LayoutStrategyBase],Orientation:0,ctor:function(){this.$initialize();OrgChart.Layout.LayoutStrategyBase.ctor.call(this);this.Orientation=OrgChart.Layout.StackOrientation.SingleRowHorizontal;this.ParentAlignment=OrgChart.Layout.BranchParentAlignment.InvalidValue;this.ChildConnectorHookLength=0;this.ParentConnectorShield=0;this.SiblingSpacing=5},getSupportsAssistants:function(){return!1},PreProcessThisNode:function(state,node){if(node.getState().NumberOfSiblings=node.getElement().IsCollapsed?0:node.getChildCount(),node.getState().NumberOfSiblings>0&&this.Orientation!==OrgChart.Layout.StackOrientation.SingleRowHorizontal&&this.Orientation!==OrgChart.Layout.StackOrientation.SingleColumnVertical)throw new System.InvalidOperationException("Unsupported value for orientation: "+System.Enum.toString(OrgChart.Layout.StackOrientation,this.Orientation));},ApplyVerticalLayout:function(state,level){var node=level.BranchRoot,siblingsRowExterior,top,i,child,rect,i1,child1,prevRowExterior,row,rowExterior,childBranchBottom;if(node.getLevel()===0&&(node.getState().SiblingsRowV=new OrgChart.Layout.Dimensions.$ctor1(node.getState().getTop(),node.getState().getBottom())),node.getState().NumberOfSiblings!==0)if(siblingsRowExterior=OrgChart.Layout.Dimensions.MinMax(),this.Orientation===OrgChart.Layout.StackOrientation.SingleRowHorizontal){for(top=node.getAssistantsRoot()==null?node.getState().SiblingsRowV.To+this.ParentChildSpacing:node.getState().BranchExterior.getBottom()+this.ParentChildSpacing,i=0;i<node.getState().NumberOfSiblings;i=i+1|0)child=System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node),rect=child.getState(),OrgChart.Layout.LayoutAlgorithm.MoveTo(child.getState(),0,top),child.getState().BranchExterior=new OrgChart.Layout.Rect.$ctor1(child.getState().TopLeft,child.getState().Size),siblingsRowExterior=OrgChart.Layout.Dimensions.op_Addition(siblingsRowExterior,new OrgChart.Layout.Dimensions.$ctor1(top,top+rect.Size.Height));for(siblingsRowExterior=new OrgChart.Layout.Dimensions.$ctor1(siblingsRowExterior.From,siblingsRowExterior.To),i1=0;i1<node.getState().NumberOfSiblings;i1=i1+1|0)child1=System.Array.getItem(node.getChildren(),i1,OrgChart.Layout.BoxTree.Node),child1.getState().SiblingsRowV=siblingsRowExterior,OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,child1)}else if(this.Orientation===OrgChart.Layout.StackOrientation.SingleColumnVertical)for(prevRowExterior=new OrgChart.Layout.Dimensions.$ctor1(node.getState().SiblingsRowV.From,node.getState().SiblingsRowV.To),row=0;row<node.getState().NumberOfSiblings;row=row+1|0){var child2=System.Array.getItem(node.getChildren(),row,OrgChart.Layout.BoxTree.Node),rect1=child2.getState(),top1=prevRowExterior.To+(row===0?this.ParentChildSpacing:this.SiblingSpacing);OrgChart.Layout.LayoutAlgorithm.MoveTo(child2.getState(),rect1.getLeft(),top1);child2.getState().BranchExterior=new OrgChart.Layout.Rect.$ctor1(child2.getState().TopLeft,child2.getState().Size);rowExterior=new OrgChart.Layout.Dimensions.$ctor1(top1,top1+rect1.Size.Height);child2=System.Array.getItem(node.getChildren(),row,OrgChart.Layout.BoxTree.Node);child2.getState().SiblingsRowV=rowExterior;OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,child2);childBranchBottom=child2.getState().BranchExterior.getBottom();prevRowExterior=new OrgChart.Layout.Dimensions.$ctor1(rowExterior.From,Math.max(childBranchBottom,rowExterior.To))}},ApplyHorizontalLayout:function(state,level){for(var node=level.BranchRoot,child,width,$t=Bridge.getEnumerator(node.getChildren(),OrgChart.Layout.BoxTree.Node);$t.moveNext();)child=$t.getCurrent(),OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,child);if(node.getChildCount()>0)if(this.Orientation===OrgChart.Layout.StackOrientation.SingleRowHorizontal){width=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings-1|0,OrgChart.Layout.BoxTree.Node).getState().getRight()-System.Array.getItem(node.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().getLeft();node.getState().Size=new OrgChart.Layout.Size.$ctor1(Math.max(node.getState().Size.Width,width),node.getState().Size.Height);var center=(System.Array.getItem(node.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().getLeft()+System.Array.getItem(node.getChildren(),node.getChildCount()-1|0,OrgChart.Layout.BoxTree.Node).getState().getRight())/2,desiredCenter=node.getState().getCenterH(),diff=desiredCenter-center;OrgChart.Layout.LayoutAlgorithm.MoveChildrenOnly(state,level,diff)}else if(this.Orientation===OrgChart.Layout.StackOrientation.SingleColumnVertical){OrgChart.Layout.LayoutAlgorithm.AlignHorizontalCenters(state,level,node.getChildren());var center1=System.Array.getItem(node.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().getCenterH(),desiredCenter1=node.getState().getCenterH(),diff1=desiredCenter1-center1;OrgChart.Layout.LayoutAlgorithm.MoveChildrenOnly(state,level,diff1)}},RouteConnectors:function(){}});Bridge.define("OrgChart.Test.TestDataItem",{inherits:[OrgChart.Layout.IChartDataItem],config:{properties:{Id:null,IsAssistant:!1,ParentId:null,String1:null,String2:null,Date1:null},alias:["getId","OrgChart$Layout$IChartDataItem$getId","setId","OrgChart$Layout$IChartDataItem$setId","getIsAssistant","OrgChart$Layout$IChartDataItem$getIsAssistant","setIsAssistant","OrgChart$Layout$IChartDataItem$setIsAssistant"],init:function(){this.Date1=new Date(-864e13)}}});Bridge.define("OrgChart.Test.TestDataSource",{inherits:[OrgChart.Layout.IChartDataSource],Items:null,config:{alias:["getAllDataItemIds","OrgChart$Layout$IChartDataSource$getAllDataItemIds","getGetParentKeyFunc","OrgChart$Layout$IChartDataSource$getGetParentKeyFunc","getGetDataItemFunc","OrgChart$Layout$IChartDataSource$getGetDataItemFunc"],init:function(){this.Items=new(System.Collections.Generic.Dictionary$2(String,OrgChart.Test.TestDataItem))}},getAllDataItemIds:function(){return System.Linq.Enumerable.from(this.Items.getKeys()).orderBy($asm.$.OrgChart.Test.TestDataSource.f1)},getGetParentKeyFunc:function(){return Bridge.fn.bind(this,this.GetParentKey)},getGetDataItemFunc:function(){return Bridge.fn.bind(this,this.GetDataItem)},GetParentKey:function(itemId){return this.Items.get(itemId).getParentId()},GetDataItem:function(itemId){return this.Items.get(itemId)}});Bridge.ns("OrgChart.Test.TestDataSource",$asm.$);Bridge.apply($asm.$.OrgChart.Test.TestDataSource,{f1:function(x){return x}});Bridge.define("OrgChart.Layout.MultiLineFishboneLayoutStrategy",{inherits:[OrgChart.Layout.LinearLayoutStrategy],MaxGroups:4,getSupportsAssistants:function(){return!0},PreProcessThisNode:function(state,node){var parentSpacer,i,verticalSpacer,horizontalSpacer;if(this.MaxGroups<=0)throw new System.InvalidOperationException("MaxGroups must be a positive value");if(node.getChildCount()<=(this.MaxGroups*2|0)){OrgChart.Layout.LinearLayoutStrategy.prototype.PreProcessThisNode.call(this,state,node);return}if(node.getState().NumberOfSiblings=node.getChildCount(),node.getState().NumberOfSiblings>0){for(node.getState().NumberOfSiblingColumns=this.MaxGroups,node.getState().NumberOfSiblingRows=Bridge.Int.div(node.getState().NumberOfSiblings,this.MaxGroups*2|0)|0,node.getState().NumberOfSiblings%(this.MaxGroups*2|0)!=0&&(node.getState().NumberOfSiblingRows=node.getState().NumberOfSiblingRows+1|0),parentSpacer=OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,node.getElement().Id,!1),node.AddRegularChild(parentSpacer),i=0;i<node.getState().NumberOfSiblingColumns;i=i+1|0)verticalSpacer=OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,node.getElement().Id,!1),node.AddRegularChild(verticalSpacer);node.getState().NumberOfSiblingColumns>1&&(horizontalSpacer=OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,node.getElement().Id,!1),node.AddRegularChild(horizontalSpacer))}},ApplyVerticalLayout:function(state,level){var node=level.BranchRoot,adapter;if(node.getState().NumberOfSiblings<=(this.MaxGroups*2|0)){OrgChart.Layout.LinearLayoutStrategy.prototype.ApplyVerticalLayout.call(this,state,level);return}for(node.getLevel()===0&&(node.getState().SiblingsRowV=new OrgChart.Layout.Dimensions.$ctor1(node.getState().getTop(),node.getState().getBottom())),node.getAssistantsRoot()!=null&&(OrgChart.Layout.LayoutAlgorithm.CopyExteriorFrom(node.getAssistantsRoot().getState(),node.getState()),OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,node.getAssistantsRoot())),adapter=new OrgChart.Layout.MultiLineFishboneLayoutStrategy.SingleFishboneLayoutAdapter(node);adapter.NextGroup();)OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,adapter.SpecialRoot)},ApplyHorizontalLayout:function(state,level){var node=level.BranchRoot,adapter,rect,diff,carrier,desiredCenter1,ix,verticalSpacer;if(node.getState().NumberOfSiblings<=(this.MaxGroups*2|0)){OrgChart.Layout.LinearLayoutStrategy.prototype.ApplyHorizontalLayout.call(this,state,level);return}for(node.getLevel()===0&&(node.getState().SiblingsRowV=new OrgChart.Layout.Dimensions.$ctor1(node.getState().getTop(),node.getState().getBottom())),node.getAssistantsRoot()!=null&&OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,node.getAssistantsRoot()),adapter=new OrgChart.Layout.MultiLineFishboneLayoutStrategy.SingleFishboneLayoutAdapter(node);adapter.NextGroup();)OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,adapter.SpecialRoot);if(rect=node.getState(),node.getLevel()>0){if(node.getState().NumberOfSiblingColumns>1){var leftCarrier=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings+1|0,OrgChart.Layout.BoxTree.Node).getState().getCenterH(),rightCarrier=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings+node.getState().NumberOfSiblingColumns|0,OrgChart.Layout.BoxTree.Node).getState().getCenterH(),desiredCenter=node.getState().NumberOfSiblings===1||this.ParentAlignment===OrgChart.Layout.BranchParentAlignment.Center?leftCarrier+(rightCarrier-leftCarrier)/2:this.ParentAlignment===OrgChart.Layout.BranchParentAlignment.Left?leftCarrier+this.ChildConnectorHookLength:rightCarrier-this.ChildConnectorHookLength;diff=rect.getCenterH()-desiredCenter}else carrier=System.Array.getItem(node.getChildren(),1+node.getState().NumberOfSiblings|0,OrgChart.Layout.BoxTree.Node).getState().getCenterH(),desiredCenter1=rect.getCenterH(),diff=desiredCenter1-carrier;OrgChart.Layout.LayoutAlgorithm.MoveChildrenOnly(state,level,diff)}if(node.getLevel()>0&&(ix=node.getState().NumberOfSiblings,verticalSpacer=System.Array.getItem(node.getChildren(),ix,OrgChart.Layout.BoxTree.Node),OrgChart.Layout.LayoutAlgorithm.AdjustSpacer(verticalSpacer.getState(),rect.getCenterH()-this.ParentConnectorShield/2,rect.getBottom(),this.ParentConnectorShield,System.Array.getItem(node.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().SiblingsRowV.From-rect.getBottom()),state.MergeSpacer(verticalSpacer),ix=ix+1|0,ix=ix+node.getState().NumberOfSiblingColumns|0,node.getState().NumberOfSiblingColumns>1)){var horizontalSpacer=System.Array.getItem(node.getChildren(),ix,OrgChart.Layout.BoxTree.Node),leftmost=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings+1|0,OrgChart.Layout.BoxTree.Node).getState().TopLeft,rightmost=System.Array.getItem(node.getChildren(),ix-1|0,OrgChart.Layout.BoxTree.Node).getState().getRight();OrgChart.Layout.LayoutAlgorithm.AdjustSpacer(horizontalSpacer.getState(),leftmost.X,leftmost.Y-this.ParentChildSpacing,rightmost-leftmost.X,this.ParentChildSpacing);state.MergeSpacer(horizontalSpacer)}},RouteConnectors:function(state,node){var count,iterator,i,to,y,leftGroup,rightGroup;if(node.getState().NumberOfSiblings<=(this.MaxGroups*2|0)){OrgChart.Layout.LinearLayoutStrategy.prototype.RouteConnectors.call(this,state,node);return}count=(1+node.getState().NumberOfSiblings|0)+node.getState().NumberOfSiblingColumns|0;node.getState().NumberOfSiblingColumns>1&&(count=count+1|0);var segments=System.Array.init(count,function(){return new OrgChart.Layout.Edge}),rootRect=node.getState(),center=rootRect.getCenterH(),ix=0,space=System.Array.getItem(node.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().SiblingsRowV.From-rootRect.getBottom();for(segments[Bridge.identity(ix,ix=ix+1|0)]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(center,rootRect.getBottom()),new OrgChart.Layout.Point.$ctor1(center,rootRect.getBottom()+space-this.ChildConnectorHookLength)),iterator=new OrgChart.Layout.MultiLineFishboneLayoutStrategy.SingleFishboneLayoutAdapter.GroupIterator(node.getState().NumberOfSiblings,node.getState().NumberOfSiblingColumns);iterator.NextGroup();){var carrier=System.Array.getItem(node.getChildren(),(1+node.getState().NumberOfSiblings|0)+iterator.Group|0,OrgChart.Layout.BoxTree.Node).getState(),from=carrier.getCenterH(),isLeft=!0,countOnThisSide=0;for(i=iterator.FromIndex;i<(iterator.FromIndex+iterator.Count|0);i=i+1|0)to=isLeft?System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node).getState().getRight():System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node).getState().getLeft(),y=System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node).getState().getCenterV(),segments[Bridge.identity(ix,ix=ix+1|0)]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(from,y),new OrgChart.Layout.Point.$ctor1(to,y)),(countOnThisSide=countOnThisSide+1|0)===iterator.MaxOnLeft&&(countOnThisSide=0,isLeft&&(segments[(1+node.getState().NumberOfSiblings|0)+iterator.Group|0]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(carrier.getCenterH(),carrier.getTop()-this.ChildConnectorHookLength),new OrgChart.Layout.Point.$ctor1(carrier.getCenterH(),System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node).getState().getCenterV()))),isLeft=!isLeft)}ix=ix+node.getState().NumberOfSiblingColumns|0;node.getState().NumberOfSiblingColumns>1&&(leftGroup=System.Array.getItem(node.getChildren(),1+node.getState().NumberOfSiblings|0,OrgChart.Layout.BoxTree.Node).getState(),rightGroup=System.Array.getItem(node.getChildren(),((1+node.getState().NumberOfSiblings|0)+node.getState().NumberOfSiblingColumns|0)-1|0,OrgChart.Layout.BoxTree.Node).getState(),segments[ix]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(leftGroup.getCenterH(),leftGroup.getTop()-this.ChildConnectorHookLength),new OrgChart.Layout.Point.$ctor1(rightGroup.getCenterH(),rightGroup.getTop()-this.ChildConnectorHookLength)));node.getState().Connector=new OrgChart.Layout.Connector(segments)}});Bridge.define("OrgChart.Layout.MultiLineHangerLayoutStrategy",{inherits:[OrgChart.Layout.LinearLayoutStrategy],MaxSiblingsPerRow:4,getSupportsAssistants:function(){return!0},PreProcessThisNode:function(state,node){var lastRowBoxCount,ix,siblingSpacer,verticalSpacer,i,horizontalSpacer;if(this.MaxSiblingsPerRow<=0||this.MaxSiblingsPerRow%2!=0)throw new System.InvalidOperationException("MaxSiblingsPerRow must be a positive even value");if(node.getChildCount()<=this.MaxSiblingsPerRow){OrgChart.Layout.LinearLayoutStrategy.prototype.PreProcessThisNode.call(this,state,node);return}if(node.getState().NumberOfSiblings=node.getChildCount(),node.getState().NumberOfSiblings>0){for(lastRowBoxCount=node.getChildCount()%this.MaxSiblingsPerRow,node.getState().NumberOfSiblingColumns=1+this.MaxSiblingsPerRow|0,node.getState().NumberOfSiblingRows=Bridge.Int.div(node.getChildCount(),this.MaxSiblingsPerRow)|0,lastRowBoxCount!==0&&(node.getState().NumberOfSiblingRows=node.getState().NumberOfSiblingRows+1|0),node.getState().NumberOfSiblings=node.getChildCount()+node.getState().NumberOfSiblingRows|0,lastRowBoxCount>0&&lastRowBoxCount<=(Bridge.Int.div(this.MaxSiblingsPerRow,2)|0)&&(node.getState().NumberOfSiblings=node.getState().NumberOfSiblings-1|0),ix=Bridge.Int.div(this.MaxSiblingsPerRow,2)|0;ix<node.getState().NumberOfSiblings;)siblingSpacer=OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,node.getElement().Id,!1),node.InsertRegularChild(ix,siblingSpacer),ix=ix+node.getState().NumberOfSiblingColumns|0;for(verticalSpacer=OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,node.getElement().Id,!1),node.AddRegularChild(verticalSpacer),i=0;i<node.getState().NumberOfSiblingRows;i=i+1|0)horizontalSpacer=OrgChart.Layout.Box.Special(OrgChart.Layout.Box.None,node.getElement().Id,!1),node.AddRegularChild(horizontalSpacer)}},ApplyVerticalLayout:function(state,level){var node=level.BranchRoot,prevRowExterior,row,i,child,rect,top,siblingsBottom,i1,child1,spacerIndex,spacerBottom,spacer;if(node.getState().NumberOfSiblings<=this.MaxSiblingsPerRow){OrgChart.Layout.LinearLayoutStrategy.prototype.ApplyVerticalLayout.call(this,state,level);return}for(node.getLevel()===0&&(node.getState().SiblingsRowV=new OrgChart.Layout.Dimensions.$ctor1(node.getState().getTop(),node.getState().getBottom())),node.getAssistantsRoot()!=null&&(OrgChart.Layout.LayoutAlgorithm.CopyExteriorFrom(node.getAssistantsRoot().getState(),node.getState()),OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,node.getAssistantsRoot())),prevRowExterior=new OrgChart.Layout.Dimensions.$ctor1(node.getState().SiblingsRowV.From,node.getAssistantsRoot()==null?node.getState().SiblingsRowV.To:node.getState().BranchExterior.getBottom()),row=0;row<node.getState().NumberOfSiblingRows;row=row+1|0){var siblingsRowExterior=OrgChart.Layout.Dimensions.MinMax(),spacing=row===0?this.ParentChildSpacing:this.SiblingSpacing,from=row*node.getState().NumberOfSiblingColumns|0,to=Math.min(from+node.getState().NumberOfSiblingColumns|0,node.getState().NumberOfSiblings);for(i=from;i<to;i=i+1|0)(child=System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node),child.getElement().IsSpecial)||(rect=child.getState(),top=prevRowExterior.To+spacing,OrgChart.Layout.LayoutAlgorithm.MoveTo(child.getState(),rect.getLeft(),top),child.getState().BranchExterior=new OrgChart.Layout.Rect.$ctor1(child.getState().TopLeft,child.getState().Size),siblingsRowExterior=OrgChart.Layout.Dimensions.op_Addition(siblingsRowExterior,new OrgChart.Layout.Dimensions.$ctor1(top,top+rect.Size.Height)));for(siblingsRowExterior=new OrgChart.Layout.Dimensions.$ctor1(siblingsRowExterior.From,siblingsRowExterior.To),siblingsBottom=System.Double.min,i1=from;i1<to;i1=i1+1|0)child1=System.Array.getItem(node.getChildren(),i1,OrgChart.Layout.BoxTree.Node),child1.getState().SiblingsRowV=siblingsRowExterior,OrgChart.Layout.LayoutAlgorithm.VerticalLayout(state,child1),siblingsBottom=Math.max(siblingsBottom,child1.getState().BranchExterior.getBottom());prevRowExterior=new OrgChart.Layout.Dimensions.$ctor1(siblingsRowExterior.From,Math.max(siblingsBottom,siblingsRowExterior.To));spacerIndex=from+(Bridge.Int.div(node.getState().NumberOfSiblingColumns,2)|0)|0;spacerIndex<node.getState().NumberOfSiblings&&(spacerBottom=row===(node.getState().NumberOfSiblingRows-1|0)?System.Array.getItem(node.getChildren(),spacerIndex-1|0,OrgChart.Layout.BoxTree.Node).getState().SiblingsRowV.To:prevRowExterior.To,spacer=System.Array.getItem(node.getChildren(),spacerIndex,OrgChart.Layout.BoxTree.Node).getState(),OrgChart.Layout.LayoutAlgorithm.AdjustSpacer(spacer,0,prevRowExterior.From,this.ParentConnectorShield,spacerBottom-prevRowExterior.From))}},ApplyHorizontalLayout:function(state,level){var node=level.BranchRoot,col,row,ix,child,verticalSpacer,spacing,firstInRowIndex;if(node.getState().NumberOfSiblings<=this.MaxSiblingsPerRow){OrgChart.Layout.LinearLayoutStrategy.prototype.ApplyHorizontalLayout.call(this,state,level);return}for(node.getAssistantsRoot()!=null&&OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,node.getAssistantsRoot()),col=0;col<node.getState().NumberOfSiblingColumns;col=col+1|0){for(row=0;row<node.getState().NumberOfSiblingRows;row=row+1|0){if(ix=(row*node.getState().NumberOfSiblingColumns|0)+col|0,ix>=node.getState().NumberOfSiblings)break;child=System.Array.getItem(node.getChildren(),ix,OrgChart.Layout.BoxTree.Node);OrgChart.Layout.LayoutAlgorithm.HorizontalLayout(state,child)}OrgChart.Layout.LayoutAlgorithm.AlignHorizontalCenters(state,level,this.EnumerateColumn(node,col))}var rect=node.getState(),spacer=System.Array.getItem(node.getChildren(),Bridge.Int.div(node.getState().NumberOfSiblingColumns,2)|0,OrgChart.Layout.BoxTree.Node),desiredCenter=spacer.getState().getCenterH(),diff=rect.getCenterH()-desiredCenter;for(OrgChart.Layout.LayoutAlgorithm.MoveChildrenOnly(state,level,diff),verticalSpacer=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings,OrgChart.Layout.BoxTree.Node),OrgChart.Layout.LayoutAlgorithm.AdjustSpacer(verticalSpacer.getState(),rect.getCenterH()-this.ParentConnectorShield/2,rect.getBottom(),this.ParentConnectorShield,System.Array.getItem(node.getChildren(),0,OrgChart.Layout.BoxTree.Node).getState().SiblingsRowV.From-rect.getBottom()),state.MergeSpacer(verticalSpacer),spacing=this.ParentChildSpacing,firstInRowIndex=0;firstInRowIndex<node.getState().NumberOfSiblings;firstInRowIndex=firstInRowIndex+node.getState().NumberOfSiblingColumns|0){var firstInRow=System.Array.getItem(node.getChildren(),firstInRowIndex,OrgChart.Layout.BoxTree.Node).getState(),lastInRow=System.Array.getItem(node.getChildren(),Math.min((firstInRowIndex+node.getState().NumberOfSiblingColumns|0)-1|0,node.getState().NumberOfSiblings-1|0),OrgChart.Layout.BoxTree.Node).getState(),horizontalSpacer=System.Array.getItem(node.getChildren(),(1+node.getState().NumberOfSiblings|0)+(Bridge.Int.div(firstInRowIndex,node.getState().NumberOfSiblingColumns)|0)|0,OrgChart.Layout.BoxTree.Node),width=lastInRow.getRight()>=verticalSpacer.getState().getRight()?lastInRow.getRight()-firstInRow.getLeft():verticalSpacer.getState().getRight()-firstInRow.getLeft();OrgChart.Layout.LayoutAlgorithm.AdjustSpacer(horizontalSpacer.getState(),firstInRow.getLeft(),firstInRow.SiblingsRowV.From-spacing,width,spacing);state.MergeSpacer(horizontalSpacer);spacing=this.SiblingSpacing}},EnumerateColumn:function(branchRoot,col){for(var ix,$yield=[],row=0;row<branchRoot.getState().NumberOfSiblingRows;row=row+1|0){if(ix=(row*branchRoot.getState().NumberOfSiblingColumns|0)+col|0,ix>=branchRoot.getState().NumberOfSiblings)break;$yield.push(System.Array.getItem(branchRoot.getChildren(),ix,OrgChart.Layout.BoxTree.Node))}return System.Array.toEnumerable($yield)},RouteConnectors:function(state,node){var $t,count,child,ix,i,child1,childRect,childCenter,lastChildHookIndex,firstInRowIndex,firstInRow,lastInRow;if(node.getState().NumberOfSiblings<=this.MaxSiblingsPerRow){OrgChart.Layout.LinearLayoutStrategy.prototype.RouteConnectors.call(this,state,node);return}for(count=1+node.getState().NumberOfSiblingRows|0,$t=Bridge.getEnumerator(node.getChildren(),OrgChart.Layout.BoxTree.Node);$t.moveNext();)child=$t.getCurrent(),child.getElement().IsSpecial||(count=count+1|0);var segments=System.Array.init(count,function(){return new OrgChart.Layout.Edge}),rootRect=node.getState(),center=rootRect.getCenterH(),verticalCarrierHeight=System.Array.getItem(node.getChildren(),node.getState().NumberOfSiblings-1|0,OrgChart.Layout.BoxTree.Node).getState().SiblingsRowV.From-this.ChildConnectorHookLength-rootRect.getBottom();for(segments[0]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(center,rootRect.getBottom()),new OrgChart.Layout.Point.$ctor1(center,rootRect.getBottom()+verticalCarrierHeight)),ix=1,i=0;i<node.getState().NumberOfSiblings;i=i+1|0)child1=System.Array.getItem(node.getChildren(),i,OrgChart.Layout.BoxTree.Node),child1.getElement().IsSpecial||(childRect=child1.getState(),childCenter=childRect.getCenterH(),segments[Bridge.identity(ix,ix=ix+1|0)]=new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(childCenter,childRect.getTop()),new OrgChart.Layout.Point.$ctor1(childCenter,childRect.getTop()-this.ChildConnectorHookLength)));for(lastChildHookIndex=(count-node.getState().NumberOfSiblingRows|0)-1|0,firstInRowIndex=1;firstInRowIndex<(count-node.getState().NumberOfSiblingRows|0);firstInRowIndex=firstInRowIndex+this.MaxSiblingsPerRow|0)firstInRow=segments[firstInRowIndex],lastInRow=segments[Math.min((firstInRowIndex+this.MaxSiblingsPerRow|0)-1|0,lastChildHookIndex)],segments[Bridge.identity(ix,ix=ix+1|0)]=lastInRow.From.X<segments[0].From.X?new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(firstInRow.To.X,firstInRow.To.Y),new OrgChart.Layout.Point.$ctor1(segments[0].To.X,firstInRow.To.Y)):new OrgChart.Layout.Edge.$ctor1(new OrgChart.Layout.Point.$ctor1(firstInRow.To.X,firstInRow.To.Y),new OrgChart.Layout.Point.$ctor1(lastInRow.To.X,firstInRow.To.Y));node.getState().Connector=new OrgChart.Layout.Connector(segments)}});var $m=Bridge.setMetadata,$n=[OrgChart.Layout,System,System.Collections.Generic,OrgChart.Annotations,OrgChart.Test];$m($n[3].ContractAnnotationAttribute,function(){return{m:[{at:[new OrgChart.Annotations.NotNullAttribute],a:2,n:"Contract",t:16,rt:String,g:{a:2,n:"get_Contract",t:8,sn:"getContract",rt:String},s:{a:1,n:"set_Contract",t:8,pi:[{n:"value",pt:String,ps:0}],sn:"setContract",rt:Object,p:[String]}}],am:!0}});$m($n[0].Boundary.Step,function(){return{at:[new System.Diagnostics.DebuggerDisplayAttribute("{X}, {Top} - {Bottom}, {Node.Element.Id}")],m:[{at:[new OrgChart.Annotations.NotNullAttribute],a:2,n:"Node",t:4,rt:$n[0].BoxTree.Node,sn:"Node",ro:!0}]}});$m($n[0].Box,function(){return{at:[new System.Diagnostics.DebuggerDisplayAttribute("{Id}, Size.Width}x{Size.Height}")],m:[{at:[new OrgChart.Annotations.NotNullAttribute],a:2,n:"Special",is:!0,t:8,pi:[{n:"id",pt:$n[1].Int32,ps:0},{n:"visualParentId",pt:$n[1].Int32,ps:1},{n:"disableCollisionDetection",pt:Boolean,ps:2}],sn:"Special",rt:$n[0].Box,p:[$n[1].Int32,$n[1].Int32,Boolean]},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"AssistantLayoutStrategyId",t:4,rt:String,sn:"AssistantLayoutStrategyId"},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"DataId",t:4,rt:String,sn:"DataId",ro:!0},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"LayoutStrategyId",t:4,rt:String,sn:"LayoutStrategyId"}]}});$m($n[0].BoxContainer,function(){return{m:[{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"SystemRoot",t:16,rt:$n[0].Box,g:{a:2,n:"get_SystemRoot",t:8,sn:"getSystemRoot",rt:$n[0].Box},s:{a:2,n:"set_SystemRoot",t:8,pi:[{n:"value",pt:$n[0].Box,ps:0}],sn:"setSystemRoot",rt:Object,p:[$n[0].Box]}}]}});$m($n[0].BoxTree.Node,function(){return{m:[{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"AssistantsRoot",t:16,rt:$n[0].BoxTree.Node,g:{a:2,n:"get_AssistantsRoot",t:8,sn:"getAssistantsRoot",rt:$n[0].BoxTree.Node},s:{a:3,n:"set_AssistantsRoot",t:8,pi:[{n:"value",pt:$n[0].BoxTree.Node,ps:0}],sn:"setAssistantsRoot",rt:Object,p:[$n[0].BoxTree.Node]}},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"Children",t:16,rt:$n[2].IList$1(OrgChart.Layout.BoxTree.Node),g:{a:2,n:"get_Children",t:8,sn:"getChildren",rt:$n[2].IList$1(OrgChart.Layout.BoxTree.Node)},s:{a:3,n:"set_Children",t:8,pi:[{n:"value",pt:$n[2].IList$1(OrgChart.Layout.BoxTree.Node),ps:0}],sn:"setChildren",rt:Object,p:[$n[2].IList$1(OrgChart.Layout.BoxTree.Node)]}},{at:[new OrgChart.Annotations.NotNullAttribute],a:2,n:"Element",t:16,rt:$n[0].Box,g:{a:2,n:"get_Element",t:8,sn:"getElement",rt:$n[0].Box},s:{a:1,n:"set_Element",t:8,pi:[{n:"value",pt:$n[0].Box,ps:0}],sn:"setElement",rt:Object,p:[$n[0].Box]}},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"ParentNode",t:16,rt:$n[0].BoxTree.Node,g:{a:2,n:"get_ParentNode",t:8,sn:"getParentNode",rt:$n[0].BoxTree.Node},s:{a:2,n:"set_ParentNode",t:8,pi:[{n:"value",pt:$n[0].BoxTree.Node,ps:0}],sn:"setParentNode",rt:Object,p:[$n[0].BoxTree.Node]}},{at:[new OrgChart.Annotations.NotNullAttribute],a:2,n:"State",t:16,rt:$n[0].NodeLayoutInfo,g:{a:2,n:"get_State",t:8,sn:"getState",rt:$n[0].NodeLayoutInfo},s:{a:1,n:"set_State",t:8,pi:[{n:"value",pt:$n[0].NodeLayoutInfo,ps:0}],sn:"setState",rt:Object,p:[$n[0].NodeLayoutInfo]}}]}});$m($n[0].Connector,function(){return{m:[{at:[new OrgChart.Annotations.NotNullAttribute],a:2,n:"Segments",t:16,rt:Array,g:{a:2,n:"get_Segments",t:8,sn:"getSegments",rt:Array},s:{a:1,n:"set_Segments",t:8,pi:[{n:"value",pt:Array,ps:0}],sn:"setSegments",rt:Object,p:[Array]}}]}});$m($n[0].Diagram,function(){return{m:[{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"VisualTree",t:16,rt:$n[0].BoxTree,g:{a:2,n:"get_VisualTree",t:8,sn:"getVisualTree",rt:$n[0].BoxTree},s:{a:2,n:"set_VisualTree",t:8,pi:[{n:"value",pt:$n[0].BoxTree,ps:0}],sn:"setVisualTree",rt:Object,p:[$n[0].BoxTree]}}]}});$m($n[0].DiagramLayoutSettings,function(){return{m:[{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"DefaultAssistantLayoutStrategyId",t:16,rt:String,g:{a:2,n:"get_DefaultAssistantLayoutStrategyId",t:8,sn:"getDefaultAssistantLayoutStrategyId",rt:String},s:{a:2,n:"set_DefaultAssistantLayoutStrategyId",t:8,pi:[{n:"value",pt:String,ps:0}],sn:"setDefaultAssistantLayoutStrategyId",rt:Object,p:[String]}},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"DefaultLayoutStrategyId",t:16,rt:String,g:{a:2,n:"get_DefaultLayoutStrategyId",t:8,sn:"getDefaultLayoutStrategyId",rt:String},s:{a:2,n:"set_DefaultLayoutStrategyId",t:8,pi:[{n:"value",pt:String,ps:0}],sn:"setDefaultLayoutStrategyId",rt:Object,p:[String]}},{at:[new OrgChart.Annotations.NotNullAttribute],a:2,n:"LayoutStrategies",t:16,rt:$n[2].Dictionary$2(String,OrgChart.Layout.LayoutStrategyBase),g:{a:2,n:"get_LayoutStrategies",t:8,sn:"getLayoutStrategies",rt:$n[2].Dictionary$2(String,OrgChart.Layout.LayoutStrategyBase)},s:{a:1,n:"set_LayoutStrategies",t:8,pi:[{n:"value",pt:$n[2].Dictionary$2(String,OrgChart.Layout.LayoutStrategyBase),ps:0}],sn:"setLayoutStrategies",rt:Object,p:[$n[2].Dictionary$2(String,OrgChart.Layout.LayoutStrategyBase)]}}]}});$m($n[0].Frame1,function(){return{at:[new System.Diagnostics.DebuggerDisplayAttribute("{Exterior.Left}:{Exterior.Top}, {Exterior.Size.Width}x{Exterior.Size.Height}")],m:[{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"Connector",t:4,rt:$n[0].Connector,sn:"Connector"}]}});$m($n[0].IChartDataSource,function(){return{m:[{at:[new OrgChart.Annotations.NotNullAttribute],ab:!0,a:2,n:"AllDataItemIds",t:16,rt:$n[2].IEnumerable$1(String),g:{ab:!0,a:2,n:"get_AllDataItemIds",t:8,sn:"OrgChart$Layout$IChartDataSource$getAllDataItemIds",rt:$n[2].IEnumerable$1(String)},s:{ab:!0,a:1,n:"set_AllDataItemIds",t:8,pi:[{n:"value",pt:$n[2].IEnumerable$1(String),ps:0}],sn:"OrgChart$Layout$IChartDataSource$setAllDataItemIds",rt:Object,p:[$n[2].IEnumerable$1(String)]}},{at:[new OrgChart.Annotations.NotNullAttribute],ab:!0,a:2,n:"GetDataItemFunc",t:16,rt:Function,g:{ab:!0,a:2,n:"get_GetDataItemFunc",t:8,sn:"OrgChart$Layout$IChartDataSource$getGetDataItemFunc",rt:Function},s:{ab:!0,a:1,n:"set_GetDataItemFunc",t:8,pi:[{n:"value",pt:Function,ps:0}],sn:"OrgChart$Layout$IChartDataSource$setGetDataItemFunc",rt:Object,p:[Function]}},{at:[new OrgChart.Annotations.NotNullAttribute],ab:!0,a:2,n:"GetParentKeyFunc",t:16,rt:Function,g:{ab:!0,a:2,n:"get_GetParentKeyFunc",t:8,sn:"OrgChart$Layout$IChartDataSource$getGetParentKeyFunc",rt:Function},s:{ab:!0,a:1,n:"set_GetParentKeyFunc",t:8,pi:[{n:"value",pt:Function,ps:0}],sn:"OrgChart$Layout$IChartDataSource$setGetParentKeyFunc",rt:Object,p:[Function]}}]}});$m($n[0].LayoutState,function(){return{m:[{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"BoxSizeFunc",t:16,rt:Function,g:{a:2,n:"get_BoxSizeFunc",t:8,sn:"getBoxSizeFunc",rt:Function},s:{a:2,n:"set_BoxSizeFunc",t:8,pi:[{n:"value",pt:Function,ps:0}],sn:"setBoxSizeFunc",rt:Object,p:[Function]}},{at:[new OrgChart.Annotations.NotNullAttribute],a:2,n:"Diagram",t:16,rt:$n[0].Diagram,g:{a:2,n:"get_Diagram",t:8,sn:"getDiagram",rt:$n[0].Diagram},s:{a:1,n:"set_Diagram",t:8,pi:[{n:"value",pt:$n[0].Diagram,ps:0}],sn:"setDiagram",rt:Object,p:[$n[0].Diagram]}},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"LayoutOptimizerFunc",t:16,rt:Function,g:{a:2,n:"get_LayoutOptimizerFunc",t:8,sn:"getLayoutOptimizerFunc",rt:Function},s:{a:2,n:"set_LayoutOptimizerFunc",t:8,pi:[{n:"value",pt:Function,ps:0}],sn:"setLayoutOptimizerFunc",rt:Object,p:[Function]}},{at:[new OrgChart.Annotations.NotNullAttribute],a:1,n:"m_layoutStack",t:4,rt:$n[2].Stack$1(OrgChart.Layout.LayoutState.LayoutLevel),sn:"m_layoutStack",ro:!0},{at:[new OrgChart.Annotations.NotNullAttribute],a:1,n:"m_pooledBoundaries",t:4,rt:$n[2].Stack$1(OrgChart.Layout.Boundary),sn:"m_pooledBoundaries",ro:!0},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"BoundaryChanged",t:2,ad:{a:2,n:"add_BoundaryChanged",t:8,pi:[{n:"value",pt:Function,ps:0}],sn:"addBoundaryChanged",rt:Object,p:[Function]},r:{a:2,n:"remove_BoundaryChanged",t:8,pi:[{n:"value",pt:Function,ps:0}],sn:"removeBoundaryChanged",rt:Object,p:[Function]}},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"OperationChanged",t:2,ad:{a:2,n:"add_OperationChanged",t:8,pi:[{n:"value",pt:Function,ps:0}],sn:"addOperationChanged",rt:Object,p:[Function]},r:{a:2,n:"remove_OperationChanged",t:8,pi:[{n:"value",pt:Function,ps:0}],sn:"removeOperationChanged",rt:Object,p:[Function]}}]}});$m($n[0].LayoutState.LayoutLevel,function(){return{at:[new System.Diagnostics.DebuggerDisplayAttribute("{BranchRoot.Element.Id}, {Boundary.BoundingRect.Top}..{Boundary.BoundingRect.Bottom}")]}});$m($n[0].NodeLayoutInfo,function(){return{m:[{at:[new OrgChart.Annotations.NotNullAttribute],a:2,n:"RequireLayoutStrategy",t:8,sn:"RequireLayoutStrategy",rt:$n[0].LayoutStrategyBase},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"Connector",t:4,rt:$n[0].Connector,sn:"Connector"}]}});$m($n[0].Rect,function(){return{at:[new System.Diagnostics.DebuggerDisplayAttribute("{TopLeft.X}:{TopLeft.Y}, {Size.Width}x{Size.Height}")]}});$m($n[4].TestDataItem,function(){return{m:[{at:[new OrgChart.Annotations.NotNullAttribute],a:2,n:"Id",t:16,rt:String,g:{a:2,n:"get_Id",t:8,sn:"getId",rt:String},s:{a:2,n:"set_Id",t:8,pi:[{n:"value",pt:String,ps:0}],sn:"setId",rt:Object,p:[String]}},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"ParentId",t:16,rt:String,g:{a:2,n:"get_ParentId",t:8,sn:"getParentId",rt:String},s:{a:2,n:"set_ParentId",t:8,pi:[{n:"value",pt:String,ps:0}],sn:"setParentId",rt:Object,p:[String]}},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"String1",t:16,rt:String,g:{a:2,n:"get_String1",t:8,sn:"getString1",rt:String},s:{a:2,n:"set_String1",t:8,pi:[{n:"value",pt:String,ps:0}],sn:"setString1",rt:Object,p:[String]}},{at:[new OrgChart.Annotations.CanBeNullAttribute],a:2,n:"String2",t:16,rt:String,g:{a:2,n:"get_String2",t:8,sn:"getString2",rt:String},s:{a:2,n:"set_String2",t:8,pi:[{n:"value",pt:String,ps:0}],sn:"setString2",rt:Object,p:[String]}}]}})}); +function mxOrgChartLayout(b,a,g,d){mxGraphLayout.call(this,b);switch(parseInt(a)){case 0:this.branchOptimizer=mxOrgChartLayout.prototype.BRANCH_OPT_LINEAR;break;case 1:this.branchOptimizer=mxOrgChartLayout.prototype.BRANCH_OPT_HANGER2;break;case 3:this.branchOptimizer=mxOrgChartLayout.prototype.BRANCH_OPT_FISHBONE1;break;case 4:this.branchOptimizer=mxOrgChartLayout.prototype.BRANCH_OPT_FISHBONE2;break;case 5:this.branchOptimizer=mxOrgChartLayout.prototype.BRANCH_OPT_1COLUMN_L;break;case 6:this.branchOptimizer= +mxOrgChartLayout.prototype.BRANCH_OPT_1COLUMN_R;break;case 7:this.branchOptimizer=mxOrgChartLayout.prototype.BRANCH_OPT_SMART;break;default:this.branchOptimizer=mxOrgChartLayout.prototype.BRANCH_OPT_HANGER4}this.parentChildSpacing=0<g?g:20;this.siblingSpacing=0<d?d:20}mxOrgChartLayout.prototype=new mxGraphLayout;mxOrgChartLayout.prototype.constructor=mxOrgChartLayout;mxOrgChartLayout.prototype.BRANCH_OPT_LINEAR="branchOptimizerAllLinear";mxOrgChartLayout.prototype.BRANCH_OPT_HANGER2="branchOptimizerAllHanger2"; +mxOrgChartLayout.prototype.BRANCH_OPT_HANGER4="branchOptimizerAllHanger4";mxOrgChartLayout.prototype.BRANCH_OPT_FISHBONE1="branchOptimizerAllFishbone1";mxOrgChartLayout.prototype.BRANCH_OPT_FISHBONE2="branchOptimizerAllFishbone2";mxOrgChartLayout.prototype.BRANCH_OPT_1COLUMN_L="branchOptimizerAllSingleColumnLeft";mxOrgChartLayout.prototype.BRANCH_OPT_1COLUMN_R="branchOptimizerAllSingleColumnRight";mxOrgChartLayout.prototype.BRANCH_OPT_SMART="branchOptimizerSmart"; +mxOrgChartLayout.prototype.execute=function(b){this.graph.model.beginUpdate();try{RPOrgChart.main(this.graph,b,this.branchOptimizer,this.parentChildSpacing,this.siblingSpacing)}finally{this.graph.model.endUpdate()}}; +Bridge.define("RPOrgChart",{statics:{config:{init:function(){}},main:function(b,a,g,d,q){Bridge.Console.log=console.log;Bridge.Console.error=console.error;Bridge.Console.debug=console.debug;RPOrgChart.graph=b;RPOrgChart.parent=a;RPOrgChart.branchOptimizer=g;RPOrgChart.parentChildSpacing=parseInt(d);RPOrgChart.siblingSpacing=parseInt(q);RPOrgChart.buildChart(!0)},diagram:{},dataSource:{},buildChart:function(b){b&&RPOrgChart.initDiagram();RPOrgChart.positionBoxes()},collapseAllBoxes:function(b,a){for(var g= +b.getBoxesById().getValues().getEnumerator();g.moveNext();){var d=g.getCurrent();d.IsSpecial||(d.IsCollapsed=a)}},generateData:function(){for(var b=new OrgChart.Test.TestDataSource,a=RPOrgChart.graph,g=a.getChildVertices(RPOrgChart.parent),d=0;d<g.length;d++){var q=g[d];if(null!=q.geometry&&q.vertex&&q.parent==RPOrgChart.parent){var r=null,v=a.getIncomingEdges(q)[0];null!=v&&null!=v.source&&(r=v.source.id);v=new OrgChart.Test.TestDataItem;v.Id=q.id;v.ParentId=r;b.Items.add(v.getId(),v)}}return b}, +initDiagram:function(){var b=RPOrgChart.generateData();RPOrgChart.dataSource=b;var a=new OrgChart.Layout.BoxContainer.$ctor1(b);RPOrgChart.diagram=new OrgChart.Layout.Diagram;b=RPOrgChart.diagram;b.setBoxes(a);a=new OrgChart.Layout.LinearLayoutStrategy;a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.Center;a.ParentChildSpacing=RPOrgChart.parentChildSpacing;a.SiblingSpacing=RPOrgChart.siblingSpacing;b.LayoutSettings.LayoutStrategies.add("linear",a);a=new OrgChart.Layout.MultiLineHangerLayoutStrategy; +a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.Center;a.MaxSiblingsPerRow=2;a.ParentChildSpacing=RPOrgChart.parentChildSpacing;a.SiblingSpacing=RPOrgChart.siblingSpacing;b.LayoutSettings.LayoutStrategies.add("hanger2",a);a=new OrgChart.Layout.MultiLineHangerLayoutStrategy;a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.Center;a.MaxSiblingsPerRow=4;a.ParentChildSpacing=RPOrgChart.parentChildSpacing;a.SiblingSpacing=RPOrgChart.siblingSpacing;b.LayoutSettings.LayoutStrategies.add("hanger4", +a);a=new OrgChart.Layout.SingleColumnLayoutStrategy;a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.Right;a.ParentChildSpacing=RPOrgChart.parentChildSpacing;a.SiblingSpacing=RPOrgChart.siblingSpacing;b.LayoutSettings.LayoutStrategies.add("singleColumnRight",a);a=new OrgChart.Layout.SingleColumnLayoutStrategy;a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.Left;a.ParentChildSpacing=RPOrgChart.parentChildSpacing;a.SiblingSpacing=RPOrgChart.siblingSpacing;b.LayoutSettings.LayoutStrategies.add("singleColumnLeft", +a);a=new OrgChart.Layout.MultiLineFishboneLayoutStrategy;a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.Center;a.MaxGroups=1;a.ParentChildSpacing=RPOrgChart.parentChildSpacing;a.SiblingSpacing=RPOrgChart.siblingSpacing;b.LayoutSettings.LayoutStrategies.add("fishbone1",a);a=new OrgChart.Layout.MultiLineFishboneLayoutStrategy;a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.Center;a.MaxGroups=2;a.ParentChildSpacing=RPOrgChart.parentChildSpacing;a.SiblingSpacing=RPOrgChart.siblingSpacing; +b.LayoutSettings.LayoutStrategies.add("fishbone2",a);a=new OrgChart.Layout.StackingLayoutStrategy;a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.InvalidValue;a.Orientation=OrgChart.Layout.StackOrientation.SingleRowHorizontal;a.ParentChildSpacing=RPOrgChart.parentChildSpacing;a.SiblingSpacing=RPOrgChart.siblingSpacing;b.LayoutSettings.LayoutStrategies.add("hstack",a);a=new OrgChart.Layout.StackingLayoutStrategy;a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.InvalidValue;a.Orientation= +OrgChart.Layout.StackOrientation.SingleColumnVertical;a.ParentChildSpacing=RPOrgChart.parentChildSpacing;a.SiblingSpacing=RPOrgChart.siblingSpacing;b.LayoutSettings.LayoutStrategies.add("vstack",a);a=new OrgChart.Layout.StackingLayoutStrategy;a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.InvalidValue;a.Orientation=OrgChart.Layout.StackOrientation.SingleColumnVertical;a.ParentChildSpacing=RPOrgChart.parentChildSpacing;a.SiblingSpacing=RPOrgChart.siblingSpacing;b.LayoutSettings.LayoutStrategies.add("vstackMiddle", +a);a=new OrgChart.Layout.StackingLayoutStrategy;a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.InvalidValue;a.Orientation=OrgChart.Layout.StackOrientation.SingleColumnVertical;a.ParentChildSpacing=RPOrgChart.parentChildSpacing;a.SiblingSpacing=RPOrgChart.siblingSpacing;b.LayoutSettings.LayoutStrategies.add("vstackTop",a);a=new OrgChart.Layout.FishboneAssistantsLayoutStrategy;a.ParentAlignment=OrgChart.Layout.BranchParentAlignment.Center;a.ParentChildSpacing=RPOrgChart.parentChildSpacing; +a.SiblingSpacing=RPOrgChart.siblingSpacing;b.LayoutSettings.LayoutStrategies.add("assistants",a);b.LayoutSettings.DefaultLayoutStrategyId="vstack";b.LayoutSettings.DefaultAssistantLayoutStrategyId="assistants"},getBoxLevel:function(b,a){for(var g=0,d={};0<a.ParentId&&b.getBoxesById().tryGetValue(a.ParentId,d);)a=d.v,g++;return g},onLayoutStateChanged:function(b,a){a.State.getCurrentOperation()===OrgChart.Layout.LayoutState.Operation.PreprocessVisualTree&&RPOrgChart.renderBoxes()},renderBoxes:function(){RPOrgChart.diagram.getVisualTree().IterateParentFirst(function(b){var a= +b.Element;if(a.getIsDataBound()){if(b.State.IsHidden)return!0;a.Size=RPOrgChart.getBoxElementSize(a.DataId)}return!0})},getBranchOptimizerFunc:function(){return RPOrgChart[RPOrgChart.branchOptimizer]},branchOptimizerAllLinear:function(b){return b.getIsAssistantRoot()?null:"linear"},branchOptimizerAllHanger2:function(b){return b.getIsAssistantRoot()?null:"hanger2"},branchOptimizerAllHanger4:function(b){return b.getIsAssistantRoot()?null:"hanger4"},branchOptimizerAllFishbone1:function(b){return b.getIsAssistantRoot()? +null:"fishbone1"},branchOptimizerAllFishbone2:function(b){return b.getIsAssistantRoot()?null:"fishbone2"},branchOptimizerAllSingleColumnLeft:function(b){return b.getIsAssistantRoot()?null:"singleColumnRight"},branchOptimizerAllSingleColumnRight:function(b){return b.getIsAssistantRoot()?null:"singleColumnLeft"},branchOptimizerStackers:function(b){return b.getIsAssistantRoot()?null:0===b.Level?"vstackTop":1===b.Level?"vstackMiddle":"hstack"},branchOptimizerSmart:function(b){if(b.getIsAssistantRoot())return null; +var a=b.getChildCount();if(1>=a)return"vstack";for(var g=0,d=0;d<a;d++)0<b.Children.getItem(d).getChildCount()&&g++;return 1>=g?4>=a?"vstack":8>=a?"fishbone1":"fishbone2":"hanger4"},boxSizeFunc:function(b){b=RPOrgChart.diagram.getBoxes().getBoxesByDataId().getItem(b).Id;return RPOrgChart.diagram.getBoxes().getBoxesById().getItem(b).Size},getBoxElementSize:function(b){b=RPOrgChart.graph.model.cells[b].geometry;return new OrgChart.Layout.Size.$ctor1(b.width,b.height)},positionBoxes:function(){var b= +RPOrgChart.diagram,a=new OrgChart.Layout.LayoutState(b);a.addOperationChanged(RPOrgChart.onLayoutStateChanged);a.BoxSizeFunc=Bridge.fn.bind(this,RPOrgChart.boxSizeFunc,null,!0);a.LayoutOptimizerFunc=Bridge.fn.bind(this,RPOrgChart.getBranchOptimizerFunc(),null,!0);OrgChart.Layout.LayoutAlgorithm.Apply(a);var a=OrgChart.Layout.LayoutAlgorithm.ComputeBranchVisualBoundingRect(b.getVisualTree()),g=-a.getLeft()+a.getTop(),d=RPOrgChart.graph,q=d.model.cells;b.getVisualTree().IterateParentFirst(function(a){if(a.State.IsHidden)return!1; +var b=a.Element;if(b.getIsDataBound()){var b=q[b.DataId],r=b.geometry.clone();r.x=a.State.TopLeft.X+g;r.y=a.State.TopLeft.Y;d.model.setGeometry(b,r)}return!0});b.getVisualTree().IterateParentFirst(function(a){if(null!=a.State.Connector){for(var b=function(a,b){var c=a.geometry.clone();c.points=b;d.model.setGeometry(a,c);d.setCellStyles("entryX",null,[a]);d.setCellStyles("entryY",null,[a]);d.setCellStyles("exitX",null,[a]);d.setCellStyles("exitY",null,[a]);d.setCellStyles("edgeStyle","orthogonalEdgeStyle", +[a])},r=function(a,b){return b.x>=a.x&&b.x<=a.x+a.width&&b.y>=a.y&&b.y<=a.y+a.height},k=q[a.Element.DataId],h=d.getOutgoingEdges(k),h={},n=0;n<a.State.Connector.Segments.length;n++){var c=a.State.Connector.Segments[n];c.mark=1<<n;c.From.X+=g;c.To.X+=g;var l=c.From.X,p=c.From.Y,w=c.To.X,x=c.To.Y;if(l==w&&p>x||p==x&&l>w){var e=c.From;c.From=c.To;c.To=e}}for(n=0;n<a.State.Connector.Segments.length;n++){c=a.State.Connector.Segments[n];l=c.From.X;p=c.From.Y;w=c.To.X;x=c.To.Y;e=new mxPoint(l,p);e.mark= +c.mark;var f=h[l+","+p];null!=f?f.mark|=e.mark:h[l+","+p]=e;e=new mxPoint(w,x);e.mark=c.mark;f=h[w+","+x];null!=f?f.mark|=e.mark:h[w+","+x]=e;for(e=n+1;e<a.State.Connector.Segments.length;e++){var f=a.State.Connector.Segments[e],y=f.From.X,z=f.From.Y,t=f.To.X,C=f.To.Y;l==w&&p<=z&&x>=z&&y<=l&&t>=l?(t=new mxPoint(l,z),t.mark=c.mark|f.mark,f=h[l+","+z],null!=f?f.mark|=t.mark:h[l+","+z]=t):p==x&&l<=y&&w>=y&&z<=p&&C>=p&&(t=new mxPoint(y,p),t.mark=c.mark|f.mark,f=h[y+","+p],null!=f?f.mark|=t.mark:h[y+","+ +p]=t)}}var u=[],m;for(m in h)u.push(h[m]);u.sort(function(a,b){var c=a.y-b.y;return 0==c?a.x-b.x:c});h=d.getOutgoingEdges(k);if(2==u.length&&1==h.length)b(h[0],u);else{a=function(a){for(var b=0;b<u.length;b++){var c=u[b];if(!B[c.x+","+c.y]&&c.mark&a.mark)return B[c.x+","+c.y]=!0,c}};var e=k.geometry,A;for(m=0;m<u.length;m++)if(r(e,u[m])){A=u[m];break}for(var B,e=0;e<h.length;e++)if(null!=h[e].target){B={};B[A.x+","+A.y]=!0;m=h[e].target.geometry;k=[A];n=A;for(c=0;1E3>c;)if(c++,l=a(n),null==l)k.pop(), +n=k[k.length-1];else if(k.push(l),n=l,r(m,l))break;if(2<k.length)for(n=k[0].x,c=k[k.length-1].x,m=k.length-2;0<m;m--)(n>c&&k[m].x<c||n<c&&k[m].x<n)&&k.splice(m,1);m=h[e].geometry.clone();m.points=k;RPOrgChart.graph.model.setGeometry(h[e],m);b(h[e],k)}}}return!0})}}});Bridge.init(); diff --git a/src/main/webapp/js/orgchart/mxOrgChartLayout.js b/src/main/webapp/js/orgchart/mxOrgChartLayout.js index dc3427271..ebd3c58c2 100644 --- a/src/main/webapp/js/orgchart/mxOrgChartLayout.js +++ b/src/main/webapp/js/orgchart/mxOrgChartLayout.js @@ -16,9 +16,39 @@ * (end) * */ -function mxOrgChartLayout(graph) +function mxOrgChartLayout(graph, branchOptimizer, parentChildSpacing, siblingSpacing) { mxGraphLayout.call(this, graph); + + switch(parseInt(branchOptimizer)) + { + case 0: + this.branchOptimizer = mxOrgChartLayout.prototype.BRANCH_OPT_LINEAR; + break; + case 1: + this.branchOptimizer = mxOrgChartLayout.prototype.BRANCH_OPT_HANGER2; + break; + case 3: + this.branchOptimizer = mxOrgChartLayout.prototype.BRANCH_OPT_FISHBONE1; + break; + case 4: + this.branchOptimizer = mxOrgChartLayout.prototype.BRANCH_OPT_FISHBONE2; + break; + case 5: + this.branchOptimizer = mxOrgChartLayout.prototype.BRANCH_OPT_1COLUMN_L; + break; + case 6: + this.branchOptimizer = mxOrgChartLayout.prototype.BRANCH_OPT_1COLUMN_R; + break; + case 7: + this.branchOptimizer = mxOrgChartLayout.prototype.BRANCH_OPT_SMART; + break; + default: //and case 2 + this.branchOptimizer = mxOrgChartLayout.prototype.BRANCH_OPT_HANGER4; + } + + this.parentChildSpacing = parentChildSpacing > 0 ? parentChildSpacing : 20; + this.siblingSpacing = siblingSpacing > 0 ? siblingSpacing : 20; }; /** @@ -27,6 +57,16 @@ function mxOrgChartLayout(graph) mxOrgChartLayout.prototype = new mxGraphLayout(); mxOrgChartLayout.prototype.constructor = mxOrgChartLayout; +//Branch Optimizers +mxOrgChartLayout.prototype.BRANCH_OPT_LINEAR = 'branchOptimizerAllLinear'; +mxOrgChartLayout.prototype.BRANCH_OPT_HANGER2 = 'branchOptimizerAllHanger2'; +mxOrgChartLayout.prototype.BRANCH_OPT_HANGER4 = 'branchOptimizerAllHanger4'; +mxOrgChartLayout.prototype.BRANCH_OPT_FISHBONE1 = 'branchOptimizerAllFishbone1'; +mxOrgChartLayout.prototype.BRANCH_OPT_FISHBONE2 = 'branchOptimizerAllFishbone2'; +mxOrgChartLayout.prototype.BRANCH_OPT_1COLUMN_L = 'branchOptimizerAllSingleColumnLeft'; +mxOrgChartLayout.prototype.BRANCH_OPT_1COLUMN_R = 'branchOptimizerAllSingleColumnRight'; +mxOrgChartLayout.prototype.BRANCH_OPT_SMART = 'branchOptimizerSmart'; + /** * Function: execute * @@ -38,7 +78,7 @@ mxOrgChartLayout.prototype.execute = function(parent) this.graph.model.beginUpdate(); try { - RPOrgChart.main(this.graph, parent); + RPOrgChart.main(this.graph, parent, this.branchOptimizer, this.parentChildSpacing, this.siblingSpacing); } finally { @@ -54,13 +94,16 @@ Bridge.define('RPOrgChart', } }, - main: function (graph, parent) { + main: function (graph, parent, branchOptimizer, parentChildSpacing, siblingSpacing) { Bridge.Console.log = console.log; Bridge.Console.error = console.error; Bridge.Console.debug = console.debug; RPOrgChart.graph = graph; RPOrgChart.parent = parent; + RPOrgChart.branchOptimizer = branchOptimizer; + RPOrgChart.parentChildSpacing = parseInt(parentChildSpacing); + RPOrgChart.siblingSpacing = parseInt(siblingSpacing); RPOrgChart.buildChart(true); }, @@ -130,62 +173,82 @@ Bridge.define('RPOrgChart', var linearLayoutStrategy = new OrgChart.Layout.LinearLayoutStrategy(); linearLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.Center; + linearLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + linearLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("linear", linearLayoutStrategy); var multiLineHangerLayoutStrategy = new OrgChart.Layout.MultiLineHangerLayoutStrategy(); multiLineHangerLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.Center; multiLineHangerLayoutStrategy.MaxSiblingsPerRow = 2; + multiLineHangerLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + multiLineHangerLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("hanger2", multiLineHangerLayoutStrategy); multiLineHangerLayoutStrategy = new OrgChart.Layout.MultiLineHangerLayoutStrategy(); multiLineHangerLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.Center; multiLineHangerLayoutStrategy.MaxSiblingsPerRow = 4; + multiLineHangerLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + multiLineHangerLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("hanger4", multiLineHangerLayoutStrategy); var singleColumnLayoutStrategy = new OrgChart.Layout.SingleColumnLayoutStrategy(); singleColumnLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.Right; + singleColumnLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + singleColumnLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("singleColumnRight", singleColumnLayoutStrategy); singleColumnLayoutStrategy = new OrgChart.Layout.SingleColumnLayoutStrategy(); singleColumnLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.Left; + singleColumnLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + singleColumnLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("singleColumnLeft", singleColumnLayoutStrategy); var fishboneLayoutStrategy = new OrgChart.Layout.MultiLineFishboneLayoutStrategy(); fishboneLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.Center; fishboneLayoutStrategy.MaxGroups = 1; + fishboneLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + fishboneLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("fishbone1", fishboneLayoutStrategy); fishboneLayoutStrategy = new OrgChart.Layout.MultiLineFishboneLayoutStrategy(); fishboneLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.Center; fishboneLayoutStrategy.MaxGroups = 2; + fishboneLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + fishboneLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("fishbone2", fishboneLayoutStrategy); var hstackLayoutStrategy = new OrgChart.Layout.StackingLayoutStrategy(); hstackLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.InvalidValue; hstackLayoutStrategy.Orientation = OrgChart.Layout.StackOrientation.SingleRowHorizontal; - hstackLayoutStrategy.ParentChildSpacing = 10; + hstackLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + hstackLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("hstack", hstackLayoutStrategy); var vstackLayoutStrategy = new OrgChart.Layout.StackingLayoutStrategy(); vstackLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.InvalidValue; vstackLayoutStrategy.Orientation = OrgChart.Layout.StackOrientation.SingleColumnVertical; - vstackLayoutStrategy.ParentChildSpacing = 10; + vstackLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + vstackLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("vstack", vstackLayoutStrategy); vstackLayoutStrategy = new OrgChart.Layout.StackingLayoutStrategy(); vstackLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.InvalidValue; vstackLayoutStrategy.Orientation = OrgChart.Layout.StackOrientation.SingleColumnVertical; - vstackLayoutStrategy.SiblingSpacing = 20; + vstackLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + vstackLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("vstackMiddle", vstackLayoutStrategy); vstackLayoutStrategy = new OrgChart.Layout.StackingLayoutStrategy(); vstackLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.InvalidValue; vstackLayoutStrategy.Orientation = OrgChart.Layout.StackOrientation.SingleColumnVertical; - vstackLayoutStrategy.SiblingSpacing = 50; + vstackLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + vstackLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("vstackTop", vstackLayoutStrategy); var assistantsLayoutStrategy = new OrgChart.Layout.FishboneAssistantsLayoutStrategy(); assistantsLayoutStrategy.ParentAlignment = OrgChart.Layout.BranchParentAlignment.Center; + assistantsLayoutStrategy.ParentChildSpacing = RPOrgChart.parentChildSpacing; + assistantsLayoutStrategy.SiblingSpacing = RPOrgChart.siblingSpacing; diagram.LayoutSettings.LayoutStrategies.add("assistants", assistantsLayoutStrategy); diagram.LayoutSettings.DefaultLayoutStrategyId = "vstack"; @@ -238,11 +301,8 @@ Bridge.define('RPOrgChart', RPOrgChart.diagram.getVisualTree().IterateParentFirst(visitorFunc); }, - //TODO implement this getBranchOptimizerFunc: function () { -// var value = $("input[name='SelectBranchOptimizer']:checked").val(); - var func = RPOrgChart['branchOptimizer' + 'AllHanger4']; - return func; + return RPOrgChart[RPOrgChart.branchOptimizer]; }, branchOptimizerAllLinear: function(node) { diff --git a/src/main/webapp/js/viewer.min.js b/src/main/webapp/js/viewer.min.js index f1769de1a..56de9c297 100644 --- a/src/main/webapp/js/viewer.min.js +++ b/src/main/webapp/js/viewer.min.js @@ -98,8 +98,8 @@ var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456 "");l<a.length;)d=this._keyStr.indexOf(a.charAt(l++)),e=this._keyStr.indexOf(a.charAt(l++)),g=this._keyStr.indexOf(a.charAt(l++)),k=this._keyStr.indexOf(a.charAt(l++)),d=d<<2|e>>4,e=(e&15)<<4|g>>2,f=(g&3)<<6|k,c+=String.fromCharCode(d),64!=g&&(c+=String.fromCharCode(e)),64!=k&&(c+=String.fromCharCode(f));b||(c=Base64._utf8_decode(c));return c},_utf8_encode:function(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b+=String.fromCharCode(d):(127<d&&2048>d?b+= String.fromCharCode(d>>6|192):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128)),b+=String.fromCharCode(d&63|128))}return b},_utf8_decode:function(a){var b="",c=0,d;for(c1=c2=0;c<a.length;)d=a.charCodeAt(c),128>d?(b+=String.fromCharCode(d),c++):191<d&&224>d?(c2=a.charCodeAt(c+1),b+=String.fromCharCode((d&31)<<6|c2&63),c+=2):(c2=a.charCodeAt(c+1),c3=a.charCodeAt(c+2),b+=String.fromCharCode((d&15)<<12|(c2&63)<<6|c3&63),c+=3);return b}};window.urlParams=window.urlParams||{};window.isLocalStorage=window.isLocalStorage||!1;window.mxLoadSettings=window.mxLoadSettings||"1"!=urlParams.configure;window.isSvgBrowser=window.isSvgBrowser||0>navigator.userAgent.indexOf("MSIE")||9<=document.documentMode;window.EXPORT_URL=window.EXPORT_URL||"https://exp.draw.io/ImageExport4/export";window.PLANT_URL=window.PLANT_URL||"https://exp-plant.draw.io/plantuml-1-2019-7";window.DRAW_MATH_URL=window.DRAW_MATH_URL||"https://www.draw.io/math"; window.VSD_CONVERT_URL=window.VSD_CONVERT_URL||"https://convert.draw.io/VsdConverter/api/converter";window.EMF_CONVERT_URL=window.EMF_CONVERT_URL||"https://convert.draw.io/emf2png/convertEMF";window.REALTIME_URL=window.REALTIME_URL||"https://rt.draw.io/cache";window.DRAWIO_GITLAB_URL=window.DRAWIO_GITLAB_URL||"https://gitlab.com";window.DRAWIO_GITLAB_ID=window.DRAWIO_GITLAB_ID||"5cdc018a32acddf6eba37592d9374945241e644b8368af847422d74c8709bc44";window.SAVE_URL=window.SAVE_URL||"save"; -window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.VIEWER_URL=null;window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch");window.TEMPLATE_PATH=window.TEMPLATE_PATH||"templates"; -window.NEW_DIAGRAM_CATS_PATH=window.NEW_DIAGRAM_CATS_PATH||"newDiagramCats";window.PLUGINS_BASE_PATH=window.PLUGINS_BASE_PATH||"";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||RESOURCES_PATH+"/dia";window.DRAWIO_CONFIG=window.DRAWIO_CONFIG||null;window.mxLoadResources=window.mxLoadResources||!1; +window.OPEN_URL=window.OPEN_URL||"open";window.PROXY_URL=window.PROXY_URL||"proxy";window.DRAWIO_BASE_URL=window.DRAWIO_BASE_URL||"https://www.draw.io";window.DRAWIO_VIEWER_URL=window.DRAWIO_VIEWER_URL||null;window.SHAPES_PATH=window.SHAPES_PATH||"shapes";window.GRAPH_IMAGE_PATH=window.GRAPH_IMAGE_PATH||"img";window.ICONSEARCH_PATH=window.ICONSEARCH_PATH||((0<=navigator.userAgent.indexOf("MSIE")||urlParams.dev)&&"file:"!=window.location.protocol?"iconSearch":"https://www.draw.io/iconSearch"); +window.TEMPLATE_PATH=window.TEMPLATE_PATH||"templates";window.NEW_DIAGRAM_CATS_PATH=window.NEW_DIAGRAM_CATS_PATH||"newDiagramCats";window.PLUGINS_BASE_PATH=window.PLUGINS_BASE_PATH||"";window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||RESOURCES_PATH+"/dia";window.DRAWIO_CONFIG=window.DRAWIO_CONFIG||null;window.mxLoadResources=window.mxLoadResources||!1; window.mxLanguage=window.mxLanguage||function(){var a="1"==urlParams.offline?"en":urlParams.lang;if(null==a&&"undefined"!=typeof JSON&&isLocalStorage)try{var b=localStorage.getItem(".drawio-config");null!=b&&(a=JSON.parse(b).language||null)}catch(c){isLocalStorage=!1}return a}(); window.mxLanguageMap=window.mxLanguageMap||{i18n:"",id:"Bahasa Indonesia",ms:"Bahasa Melayu",bs:"Bosanski",bg:"Bulgarian",ca:"Català ",cs:"ÄŒeÅ¡tina",da:"Dansk",de:"Deutsch",et:"Eesti",en:"English",es:"Español",fil:"Filipino",fr:"Français",gl:"Galego",it:"Italiano",hu:"Magyar",nl:"Nederlands",no:"Norsk",pl:"Polski","pt-br":"Português (Brasil)",pt:"Português (Portugal)",ro:"Română",fi:"Suomi",sv:"Svenska",vi:"Tiếng Việt",tr:"Türkçe",el:"Ελληνικά",ru:"РуÑÑкий",sr:"СрпÑки",uk:"УкраїнÑька",he:"עברית",ar:"العربية", th:"ไทย",ko:"한êµì–´",ja:"日本語",zh:"ç®€ä½“ä¸æ–‡","zh-tw":"ç¹é«”䏿–‡"};"undefined"===typeof window.mxBasePath&&(window.mxBasePath="mxgraph");if(null==window.mxLanguages){window.mxLanguages=[];for(var lang in mxLanguageMap)"en"!=lang&&window.mxLanguages.push(lang)} @@ -1035,10 +1035,10 @@ mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon);mxCellRenderer mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape);mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel);mxCellRenderer.prototype.initializeShape=function(a){a.shape.dialect=a.view.graph.dialect;this.configureShape(a);a.shape.init(a.view.getDrawPane())};mxCellRenderer.prototype.createShape=function(a){var b=null;null!=a.style&&(b=mxStencilRegistry.getStencil(a.style[mxConstants.STYLE_SHAPE]),b=null!=b?new mxShape(b):new (this.getShapeConstructor(a)));return b}; mxCellRenderer.prototype.createIndicatorShape=function(a){a.shape.indicatorShape=this.getShape(a.view.graph.getIndicatorShape(a))};mxCellRenderer.prototype.getShape=function(a){return null!=a?mxCellRenderer.defaultShapes[a]:null};mxCellRenderer.prototype.getShapeConstructor=function(a){var b=this.getShape(a.style[mxConstants.STYLE_SHAPE]);null==b&&(b=a.view.graph.getModel().isEdge(a.cell)?this.defaultEdgeShape:this.defaultVertexShape);return b}; mxCellRenderer.prototype.configureShape=function(a){a.shape.apply(a);a.shape.image=a.view.graph.getImage(a);a.shape.indicatorColor=a.view.graph.getIndicatorColor(a);a.shape.indicatorStrokeColor=a.style[mxConstants.STYLE_INDICATOR_STROKECOLOR];a.shape.indicatorGradientColor=a.view.graph.getIndicatorGradientColor(a);a.shape.indicatorDirection=a.style[mxConstants.STYLE_INDICATOR_DIRECTION];a.shape.indicatorImage=a.view.graph.getIndicatorImage(a);this.postConfigureShape(a)}; -mxCellRenderer.prototype.postConfigureShape=function(a){null!=a.shape&&(this.resolveColor(a,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(a,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(a,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(a,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(a,"gradient",mxConstants.STYLE_GRADIENTCOLOR))}; -mxCellRenderer.prototype.checkPlaceholderStyles=function(a){if(null!=a.style)for(var b=["inherit","swimlane","indicated"],c=[mxConstants.STYLE_FILLCOLOR,mxConstants.STYLE_STROKECOLOR,mxConstants.STYLE_GRADIENTCOLOR],d=0;d<c.length;d++)if(0<=mxUtils.indexOf(b,a.style[c[d]]))return!0;return!1}; -mxCellRenderer.prototype.resolveColor=function(a,b,c){var d=a.shape[b],e=a.view.graph,f=null;"inherit"==d?f=e.model.getParent(a.cell):"swimlane"==d?(a.shape[b]=c==mxConstants.STYLE_STROKECOLOR?"#000000":"#ffffff",f=null!=e.model.getTerminal(a.cell,!1)?e.model.getTerminal(a.cell,!1):a.cell,f=e.getSwimlane(f),c=e.swimlaneIndicatorColorAttribute):"indicated"==d&&(a.shape[b]=a.shape.indicatorColor);null!=f&&(d=e.getView().getState(f),a.shape[b]=null,null!=d&&(a.shape[b]=null!=d.shape&&"indicatorColor"!= -b?d.shape[b]:d.style[c]))};mxCellRenderer.prototype.getLabelValue=function(a){return a.view.graph.getLabel(a.cell)}; +mxCellRenderer.prototype.postConfigureShape=function(a){null!=a.shape&&(this.resolveColor(a,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(a,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(a,"gradient",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(a,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(a,"fill",mxConstants.STYLE_FILLCOLOR))}; +mxCellRenderer.prototype.checkPlaceholderStyles=function(a){if(null!=a.style)for(var b=["inherit","swimlane","indicated"],c=[mxConstants.STYLE_FILLCOLOR,mxConstants.STYLE_STROKECOLOR,mxConstants.STYLE_GRADIENTCOLOR,mxConstants.STYLE_FONTCOLOR],d=0;d<c.length;d++)if(0<=mxUtils.indexOf(b,a.style[c[d]]))return!0;return!1}; +mxCellRenderer.prototype.resolveColor=function(a,b,c){var d=c==mxConstants.STYLE_FONTCOLOR?a.text:a.shape;if(null!=d){var e=a.view.graph,f=d[b],g=null;"inherit"==f?g=e.model.getParent(a.cell):"swimlane"==f?(d[b]=c==mxConstants.STYLE_STROKECOLOR||c==mxConstants.STYLE_FONTCOLOR?"#000000":"#ffffff",g=null!=e.model.getTerminal(a.cell,!1)?e.model.getTerminal(a.cell,!1):a.cell,g=e.getSwimlane(g),c=e.swimlaneIndicatorColorAttribute):"indicated"==f&&null!=a.shape&&(d[b]=a.shape.indicatorColor);null!=g&&(a= +e.getView().getState(g),d[b]=null,null!=a&&(e=c==mxConstants.STYLE_FONTCOLOR?a.text:a.shape,d[b]=null!=e&&"indicatorColor"!=b?e[b]:a.style[c]))}};mxCellRenderer.prototype.getLabelValue=function(a){return a.view.graph.getLabel(a.cell)}; mxCellRenderer.prototype.createLabel=function(a,b){var c=a.view.graph;c.getModel().isEdge(a.cell);if(0<a.style[mxConstants.STYLE_FONTSIZE]||null==a.style[mxConstants.STYLE_FONTSIZE]){var d=c.isHtmlLabel(a.cell)||null!=b&&mxUtils.isNode(b);a.text=new this.defaultTextShape(b,new mxRectangle,a.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,c.getVerticalAlign(a),a.style[mxConstants.STYLE_FONTCOLOR],a.style[mxConstants.STYLE_FONTFAMILY],a.style[mxConstants.STYLE_FONTSIZE],a.style[mxConstants.STYLE_FONTSTYLE], a.style[mxConstants.STYLE_SPACING],a.style[mxConstants.STYLE_SPACING_TOP],a.style[mxConstants.STYLE_SPACING_RIGHT],a.style[mxConstants.STYLE_SPACING_BOTTOM],a.style[mxConstants.STYLE_SPACING_LEFT],a.style[mxConstants.STYLE_HORIZONTAL],a.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],a.style[mxConstants.STYLE_LABEL_BORDERCOLOR],c.isWrapping(a.cell)&&c.isHtmlLabel(a.cell),c.isLabelClipped(a.cell),a.style[mxConstants.STYLE_OVERFLOW],a.style[mxConstants.STYLE_LABEL_PADDING],mxUtils.getValue(a.style,mxConstants.STYLE_TEXT_DIRECTION, mxConstants.DEFAULT_TEXT_DIRECTION));a.text.opacity=mxUtils.getValue(a.style,mxConstants.STYLE_TEXT_OPACITY,100);a.text.dialect=d?mxConstants.DIALECT_STRICTHTML:a.view.graph.dialect;a.text.style=a.style;a.text.state=a;this.initializeLabel(a,a.text);var e=!1,f=function(b){var d=a;if(mxClient.IS_TOUCH||e)d=mxEvent.getClientX(b),b=mxEvent.getClientY(b),b=mxUtils.convertPoint(c.container,d,b),d=c.view.getState(c.getCellAt(b.x,b.y));return d};mxEvent.addGestureListeners(a.text.node,mxUtils.bind(this,function(b){this.isLabelEvent(a, @@ -1055,8 +1055,8 @@ mxCellRenderer.prototype.isShapeEvent=function(a,b){return!0};mxCellRenderer.pro mxCellRenderer.prototype.installListeners=function(a){var b=a.view.graph,c=function(c){var d=a;if(b.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(c).nodeName||mxClient.IS_TOUCH)d=mxEvent.getClientX(c),c=mxEvent.getClientY(c),c=mxUtils.convertPoint(b.container,d,c),d=b.view.getState(b.getCellAt(c.x,c.y));return d};mxEvent.addGestureListeners(a.shape.node,mxUtils.bind(this,function(c){this.isShapeEvent(a,c)&&b.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(c,a))}),mxUtils.bind(this, function(d){this.isShapeEvent(a,d)&&b.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(d,c(d)))}),mxUtils.bind(this,function(d){this.isShapeEvent(a,d)&&b.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(d,c(d)))}));b.nativeDblClickEnabled&&mxEvent.addListener(a.shape.node,"dblclick",mxUtils.bind(this,function(c){this.isShapeEvent(a,c)&&(b.dblClick(c,a.cell),mxEvent.consume(c))}))}; mxCellRenderer.prototype.redrawLabel=function(a,b){var c=a.view.graph,d=this.getLabelValue(a),e=c.isWrapping(a.cell),f=c.isLabelClipped(a.cell),g=a.view.graph.isHtmlLabel(a.cell)||null!=d&&mxUtils.isNode(d)?mxConstants.DIALECT_STRICTHTML:a.view.graph.dialect,k=a.style[mxConstants.STYLE_OVERFLOW]||"visible";null==a.text||a.text.wrap==e&&a.text.clipped==f&&a.text.overflow==k&&a.text.dialect==g||(a.text.destroy(),a.text=null);null==a.text&&null!=d&&(mxUtils.isNode(d)||0<d.length)?this.createLabel(a, -d):null==a.text||null!=d&&0!=d.length||(a.text.destroy(),a.text=null);if(null!=a.text){b&&(null!=a.text.lastValue&&this.isTextShapeInvalid(a,a.text)&&(a.text.lastValue=null),a.text.resetStyles(),a.text.apply(a),a.text.valign=c.getVerticalAlign(a));var c=this.getLabelBounds(a),l=this.getTextScale(a);if(b||a.text.value!=d||a.text.isWrapping!=e||a.text.overflow!=k||a.text.isClipping!=f||a.text.scale!=l||a.text.dialect!=g||null==a.text.bounds||!a.text.bounds.equals(c))a.text.dialect=g,a.text.value=d, -a.text.bounds=c,a.text.scale=l,a.text.wrap=e,a.text.clipped=f,a.text.overflow=k,d=a.text.node.style.visibility,this.redrawLabelShape(a.text),a.text.node.style.visibility=d}}; +d):null==a.text||null!=d&&0!=d.length||(a.text.destroy(),a.text=null);if(null!=a.text){b&&(null!=a.text.lastValue&&this.isTextShapeInvalid(a,a.text)&&(a.text.lastValue=null),a.text.resetStyles(),a.text.apply(a),a.text.valign=c.getVerticalAlign(a));var c=this.getLabelBounds(a),l=this.getTextScale(a);this.resolveColor(a,"color",mxConstants.STYLE_FONTCOLOR);if(b||a.text.value!=d||a.text.isWrapping!=e||a.text.overflow!=k||a.text.isClipping!=f||a.text.scale!=l||a.text.dialect!=g||null==a.text.bounds|| +!a.text.bounds.equals(c))a.text.dialect=g,a.text.value=d,a.text.bounds=c,a.text.scale=l,a.text.wrap=e,a.text.clipped=f,a.text.overflow=k,d=a.text.node.style.visibility,this.redrawLabelShape(a.text),a.text.node.style.visibility=d}}; mxCellRenderer.prototype.isTextShapeInvalid=function(a,b){function c(c,e,f){return"spacingTop"==e||"spacingRight"==e||"spacingBottom"==e||"spacingLeft"==e?parseFloat(b[c])-parseFloat(b.spacing)!=(a.style[e]||f):b[c]!=(a.style[e]||f)}return c("fontStyle",mxConstants.STYLE_FONTSTYLE,mxConstants.DEFAULT_FONTSTYLE)||c("family",mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)||c("size",mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)||c("color",mxConstants.STYLE_FONTCOLOR,"black")|| c("align",mxConstants.STYLE_ALIGN,"")||c("valign",mxConstants.STYLE_VERTICAL_ALIGN,"")||c("spacing",mxConstants.STYLE_SPACING,2)||c("spacingTop",mxConstants.STYLE_SPACING_TOP,0)||c("spacingRight",mxConstants.STYLE_SPACING_RIGHT,0)||c("spacingBottom",mxConstants.STYLE_SPACING_BOTTOM,0)||c("spacingLeft",mxConstants.STYLE_SPACING_LEFT,0)||c("horizontal",mxConstants.STYLE_HORIZONTAL,!0)||c("background",mxConstants.STYLE_LABEL_BACKGROUNDCOLOR)||c("border",mxConstants.STYLE_LABEL_BORDERCOLOR)||c("opacity", mxConstants.STYLE_TEXT_OPACITY,100)||c("textDirection",mxConstants.STYLE_TEXT_DIRECTION,mxConstants.DEFAULT_TEXT_DIRECTION)};mxCellRenderer.prototype.redrawLabelShape=function(a){a.redraw()};mxCellRenderer.prototype.getTextScale=function(a){return a.view.scale}; @@ -2038,12 +2038,12 @@ Editor.prototype.setFilename=function(a){this.filename=a}; Editor.prototype.createUndoManager=function(){var a=this.graph,b=new mxUndoManager;this.undoListener=function(a,f){b.undoableEditHappened(f.getProperty("edit"))};var f=mxUtils.bind(this,function(a,b){this.undoListener.apply(this,arguments)});a.getModel().addListener(mxEvent.UNDO,f);a.getView().addListener(mxEvent.UNDO,f);f=function(b,f){var d=a.getSelectionCellsForChanges(f.getProperty("edit").changes);a.getModel();for(var l=[],u=0;u<d.length;u++)null!=a.view.getState(d[u])&&l.push(d[u]);a.setSelectionCells(l)}; b.addListener(mxEvent.UNDO,f);b.addListener(mxEvent.REDO,f);return b};Editor.prototype.initStencilRegistry=function(){};Editor.prototype.destroy=function(){null!=this.graph&&(this.graph.destroy(),this.graph=null)};OpenFile=function(a){this.consumer=this.producer=null;this.done=a;this.args=null};OpenFile.prototype.setConsumer=function(a){this.consumer=a;this.execute()};OpenFile.prototype.setData=function(){this.args=arguments;this.execute()};OpenFile.prototype.error=function(a){this.cancel(!0);mxUtils.alert(a)}; OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.args&&(this.cancel(!1),this.consumer.apply(this,this.args))};OpenFile.prototype.cancel=function(a){null!=this.done&&this.done(null!=a?a:!0)}; -function Dialog(a,b,f,d,l,m,p,u,z,B,c){var e=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(e=80);f+=e;d+=e;var k=f,q=d,n=mxUtils.getDocumentSize();null!=window.innerHeight&&(n.height=window.innerHeight);var g=n.height,A=Math.max(1,Math.round((n.width-f-64)/2)),x=Math.max(1,Math.round((g-d-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");f=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;d=Math.min(d,g-64);0<a.dialogs.length&&(this.zIndex+= -2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=g+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));n=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=n.x+"px";this.bg.style.top=n.y+"px";A+=n.x;x+=n.y;l&&document.body.appendChild(this.bg);var t=a.createDiv(z?"geTransDialog": -"geDialog");l=this.getPosition(A,x,f,d);A=l.x;x=l.y;t.style.width=f+"px";t.style.height=d+"px";t.style.left=A+"px";t.style.top=x+"px";t.style.zIndex=this.zIndex;t.appendChild(b);document.body.appendChild(t);!u&&b.clientHeight>t.clientHeight-64&&(b.style.overflowY="auto");if(m&&(m=document.createElement("img"),m.setAttribute("src",Dialog.prototype.closeImage),m.setAttribute("title",mxResources.get("close")),m.className="geDialogClose",m.style.top=x+14+"px",m.style.left=A+f+38-e+"px",m.style.zIndex= -this.zIndex,mxEvent.addListener(m,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(m),this.dialogImg=m,!c)){var H=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(a){H=!0}),null,mxUtils.bind(this,function(c){H&&(a.hideDialog(!0),H=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=B){var c=B();null!=c&&(k=f=c.w,q=d=c.h)}c=mxUtils.getDocumentSize();g=c.height;this.bg.style.height=g+"px";A=Math.max(1,Math.round((c.width-f-64)/2));x=Math.max(1, -Math.round((g-d-a.footerHeight)/3));f=null!=document.body?Math.min(k,document.body.scrollWidth-64):k;d=Math.min(q,g-64);c=this.getPosition(A,x,f,d);A=c.x;x=c.y;t.style.left=A+"px";t.style.top=x+"px";t.style.width=f+"px";t.style.height=d+"px";!u&&b.clientHeight>t.clientHeight-64&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=x+14+"px",this.dialogImg.style.left=A+f+38-e+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=p;this.container= -t;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1; +function Dialog(a,b,f,d,l,m,p,u,A,B,c){var e=0;mxClient.IS_VML&&(null==document.documentMode||8>document.documentMode)&&(e=80);f+=e;d+=e;var k=f,q=d,n=mxUtils.getDocumentSize();null!=window.innerHeight&&(n.height=window.innerHeight);var g=n.height,z=Math.max(1,Math.round((n.width-f-64)/2)),x=Math.max(1,Math.round((g-d-a.footerHeight)/3));mxClient.IS_QUIRKS||(b.style.maxHeight="100%");f=null!=document.body?Math.min(f,document.body.scrollWidth-64):f;d=Math.min(d,g-64);0<a.dialogs.length&&(this.zIndex+= +2*a.dialogs.length);null==this.bg&&(this.bg=a.createDiv("background"),this.bg.style.position="absolute",this.bg.style.background=Dialog.backdropColor,this.bg.style.height=g+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity),mxClient.IS_QUIRKS&&new mxDivResizer(this.bg));n=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=n.x+"px";this.bg.style.top=n.y+"px";z+=n.x;x+=n.y;l&&document.body.appendChild(this.bg);var v=a.createDiv(A?"geTransDialog": +"geDialog");l=this.getPosition(z,x,f,d);z=l.x;x=l.y;v.style.width=f+"px";v.style.height=d+"px";v.style.left=z+"px";v.style.top=x+"px";v.style.zIndex=this.zIndex;v.appendChild(b);document.body.appendChild(v);!u&&b.clientHeight>v.clientHeight-64&&(b.style.overflowY="auto");if(m&&(m=document.createElement("img"),m.setAttribute("src",Dialog.prototype.closeImage),m.setAttribute("title",mxResources.get("close")),m.className="geDialogClose",m.style.top=x+14+"px",m.style.left=z+f+38-e+"px",m.style.zIndex= +this.zIndex,mxEvent.addListener(m,"click",mxUtils.bind(this,function(){a.hideDialog(!0)})),document.body.appendChild(m),this.dialogImg=m,!c)){var I=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(a){I=!0}),null,mxUtils.bind(this,function(c){I&&(a.hideDialog(!0),I=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=B){var c=B();null!=c&&(k=f=c.w,q=d=c.h)}c=mxUtils.getDocumentSize();g=c.height;this.bg.style.height=g+"px";z=Math.max(1,Math.round((c.width-f-64)/2));x=Math.max(1, +Math.round((g-d-a.footerHeight)/3));f=null!=document.body?Math.min(k,document.body.scrollWidth-64):k;d=Math.min(q,g-64);c=this.getPosition(z,x,f,d);z=c.x;x=c.y;v.style.left=z+"px";v.style.top=x+"px";v.style.width=f+"px";v.style.height=d+"px";!u&&b.clientHeight>v.clientHeight-64&&(b.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=x+14+"px",this.dialogImg.style.left=z+f+38-e+"px")});mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=p;this.container= +v;a.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.backdropColor="white";Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-1; Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+ "/nocolor.png";Dialog.prototype.closeImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAQMAAADaX5RTAAAABlBMVEV7mr3///+wksspAAAAAnRSTlP/AOW3MEoAAAAdSURBVAgdY9jXwCDDwNDRwHCwgeExmASygSL7GgB12QiqNHZZIwAAAABJRU5ErkJggg==":IMAGE_PATH+"/close.png"; Dialog.prototype.clearImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQAKAIABAMDAwP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUIzOEM1NzI4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUIzOEM1NzM4NjEyMTFFMUEzMkNDMUE3NjZERDE2QjIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QjM4QzU3MDg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QjM4QzU3MTg2MTIxMUUxQTMyQ0MxQTc2NkREMTZCMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAANAAoAAAIXTGCJebD9jEOTqRlttXdrB32PJ2ncyRQAOw==":IMAGE_PATH+ @@ -2052,33 +2052,33 @@ Dialog.prototype.lockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoA "/locked.png"; Dialog.prototype.unlockedImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzdDMDZCN0QxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzdDMDZCN0UxNzIxMTFFNUI0RTk5NTg4OTcyMUUyODEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozN0MwNkI3QjE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozN0MwNkI3QzE3MjExMUU1QjRFOTk1ODg5NzIxRTI4MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkKMpVwAAAAYUExURZmZmbKysr+/v6ysrOXl5czMzLGxsf///zHN5lwAAAAIdFJOU/////////8A3oO9WQAAADxJREFUeNpUzFESACAEBNBVsfe/cZJU+8Mzs8CIABCidtfGOndnYsT40HDSiCcbPdoJo10o9aI677cpwACRoAF3dFNlswAAAABJRU5ErkJggg==":IMAGE_PATH+ "/unlocked.png";Dialog.prototype.bgOpacity=80;Dialog.prototype.getPosition=function(a,b){return new mxPoint(a,b)};Dialog.prototype.close=function(a,b){if(null!=this.onDialogClose){if(0==this.onDialogClose(a,b))return!1;this.onDialogClose=null}null!=this.dialogImg&&(this.dialogImg.parentNode.removeChild(this.dialogImg),this.dialogImg=null);null!=this.bg&&null!=this.bg.parentNode&&this.bg.parentNode.removeChild(this.bg);mxEvent.removeListener(window,"resize",this.resizeListener);this.container.parentNode.removeChild(this.container)}; -var ErrorDialog=function(a,b,f,d,l,m,p,u,z,B,c){z=null!=z?z:!0;var e=document.createElement("div");e.style.textAlign="center";if(null!=b){var k=document.createElement("div");k.style.padding="0px";k.style.margin="0px";k.style.fontSize="18px";k.style.paddingBottom="16px";k.style.marginBottom="10px";k.style.borderBottom="1px solid #c0c0c0";k.style.color="gray";k.style.whiteSpace="nowrap";k.style.textOverflow="ellipsis";k.style.overflow="hidden";mxUtils.write(k,b);k.setAttribute("title",b);e.appendChild(k)}b= -document.createElement("div");b.style.lineHeight="1.2em";b.style.padding="6px";b.innerHTML=f;e.appendChild(b);f=document.createElement("div");f.style.marginTop="12px";f.style.textAlign="center";null!=m&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();m()}),b.className="geBtn",f.appendChild(b),f.style.textAlign="center");null!=B&&(B=mxUtils.button(B,function(){null!=c&&c()}),B.className="geBtn",f.appendChild(B));var q=mxUtils.button(d,function(){z&&a.hideDialog();null!=l&&l()}); -q.className="geBtn";f.appendChild(q);null!=p&&(d=mxUtils.button(p,function(){z&&a.hideDialog();null!=u&&u()}),d.className="geBtn gePrimaryBtn",f.appendChild(d));this.init=function(){q.focus()};e.appendChild(f);this.container=e},PrintDialog=function(a,b){this.create(a,b)}; -PrintDialog.prototype.create=function(a){function b(a){var b=u.checked||B.checked,d=parseInt(e.value)/100;isNaN(d)&&(d=1,e.value="100%");var d=.75*d,k=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,q=1/f.pageScale;if(b){var t=u.checked?1:parseInt(c.value);isNaN(t)||(q=mxUtils.getScaleForPageCount(t,f,k))}f.getGraphBounds();var l=t=0,k=mxRectangle.fromRectangle(k);k.width=Math.ceil(k.width*d);k.height=Math.ceil(k.height*d);q*=d;!b&&f.pageVisible?(d=f.getPageLayout(),t-=d.x*k.width,l-=d.y*k.height): -b=!0;b=PrintDialog.createPrintPreview(f,q,k,0,t,l,b);b.open();a&&PrintDialog.printPreview(b)}var f=a.editor.graph,d,l,m=document.createElement("table");m.style.width="100%";m.style.height="100%";var p=document.createElement("tbody");d=document.createElement("tr");var u=document.createElement("input");u.setAttribute("type","checkbox");l=document.createElement("td");l.setAttribute("colspan","2");l.style.fontSize="10pt";l.appendChild(u);var z=document.createElement("span");mxUtils.write(z," "+mxResources.get("fitPage")); -l.appendChild(z);mxEvent.addListener(z,"click",function(a){u.checked=!u.checked;B.checked=!u.checked;mxEvent.consume(a)});mxEvent.addListener(u,"change",function(){B.checked=!u.checked});d.appendChild(l);p.appendChild(d);d=d.cloneNode(!1);var B=document.createElement("input");B.setAttribute("type","checkbox");l=document.createElement("td");l.style.fontSize="10pt";l.appendChild(B);z=document.createElement("span");mxUtils.write(z," "+mxResources.get("posterPrint")+":");l.appendChild(z);mxEvent.addListener(z, +var ErrorDialog=function(a,b,f,d,l,m,p,u,A,B,c){A=null!=A?A:!0;var e=document.createElement("div");e.style.textAlign="center";if(null!=b){var k=document.createElement("div");k.style.padding="0px";k.style.margin="0px";k.style.fontSize="18px";k.style.paddingBottom="16px";k.style.marginBottom="10px";k.style.borderBottom="1px solid #c0c0c0";k.style.color="gray";k.style.whiteSpace="nowrap";k.style.textOverflow="ellipsis";k.style.overflow="hidden";mxUtils.write(k,b);k.setAttribute("title",b);e.appendChild(k)}b= +document.createElement("div");b.style.lineHeight="1.2em";b.style.padding="6px";b.innerHTML=f;e.appendChild(b);f=document.createElement("div");f.style.marginTop="12px";f.style.textAlign="center";null!=m&&(b=mxUtils.button(mxResources.get("tryAgain"),function(){a.hideDialog();m()}),b.className="geBtn",f.appendChild(b),f.style.textAlign="center");null!=B&&(B=mxUtils.button(B,function(){null!=c&&c()}),B.className="geBtn",f.appendChild(B));var q=mxUtils.button(d,function(){A&&a.hideDialog();null!=l&&l()}); +q.className="geBtn";f.appendChild(q);null!=p&&(d=mxUtils.button(p,function(){A&&a.hideDialog();null!=u&&u()}),d.className="geBtn gePrimaryBtn",f.appendChild(d));this.init=function(){q.focus()};e.appendChild(f);this.container=e},PrintDialog=function(a,b){this.create(a,b)}; +PrintDialog.prototype.create=function(a){function b(a){var b=u.checked||B.checked,d=parseInt(e.value)/100;isNaN(d)&&(d=1,e.value="100%");var d=.75*d,k=f.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT,q=1/f.pageScale;if(b){var v=u.checked?1:parseInt(c.value);isNaN(v)||(q=mxUtils.getScaleForPageCount(v,f,k))}f.getGraphBounds();var l=v=0,k=mxRectangle.fromRectangle(k);k.width=Math.ceil(k.width*d);k.height=Math.ceil(k.height*d);q*=d;!b&&f.pageVisible?(d=f.getPageLayout(),v-=d.x*k.width,l-=d.y*k.height): +b=!0;b=PrintDialog.createPrintPreview(f,q,k,0,v,l,b);b.open();a&&PrintDialog.printPreview(b)}var f=a.editor.graph,d,l,m=document.createElement("table");m.style.width="100%";m.style.height="100%";var p=document.createElement("tbody");d=document.createElement("tr");var u=document.createElement("input");u.setAttribute("type","checkbox");l=document.createElement("td");l.setAttribute("colspan","2");l.style.fontSize="10pt";l.appendChild(u);var A=document.createElement("span");mxUtils.write(A," "+mxResources.get("fitPage")); +l.appendChild(A);mxEvent.addListener(A,"click",function(a){u.checked=!u.checked;B.checked=!u.checked;mxEvent.consume(a)});mxEvent.addListener(u,"change",function(){B.checked=!u.checked});d.appendChild(l);p.appendChild(d);d=d.cloneNode(!1);var B=document.createElement("input");B.setAttribute("type","checkbox");l=document.createElement("td");l.style.fontSize="10pt";l.appendChild(B);A=document.createElement("span");mxUtils.write(A," "+mxResources.get("posterPrint")+":");l.appendChild(A);mxEvent.addListener(A, "click",function(a){B.checked=!B.checked;u.checked=!B.checked;mxEvent.consume(a)});d.appendChild(l);var c=document.createElement("input");c.setAttribute("value","1");c.setAttribute("type","number");c.setAttribute("min","1");c.setAttribute("size","4");c.setAttribute("disabled","disabled");c.style.width="50px";l=document.createElement("td");l.style.fontSize="10pt";l.appendChild(c);mxUtils.write(l," "+mxResources.get("pages")+" (max)");d.appendChild(l);p.appendChild(d);mxEvent.addListener(B,"change", function(){B.checked?c.removeAttribute("disabled"):c.setAttribute("disabled","disabled");u.checked=!B.checked});d=d.cloneNode(!1);l=document.createElement("td");mxUtils.write(l,mxResources.get("pageScale")+":");d.appendChild(l);l=document.createElement("td");var e=document.createElement("input");e.setAttribute("value","100 %");e.setAttribute("size","5");e.style.width="50px";l.appendChild(e);d.appendChild(l);p.appendChild(d);d=document.createElement("tr");l=document.createElement("td");l.colSpan=2; -l.style.paddingTop="20px";l.setAttribute("align","right");z=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});z.className="geBtn";a.editor.cancelFirst&&l.appendChild(z);if(PrintDialog.previewEnabled){var k=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});k.className="geBtn";l.appendChild(k)}k=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});k.className="geBtn gePrimaryBtn";l.appendChild(k);a.editor.cancelFirst|| -l.appendChild(z);d.appendChild(l);p.appendChild(d);m.appendChild(p);this.container=m};PrintDialog.printPreview=function(a){try{if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}}catch(f){}}; +l.style.paddingTop="20px";l.setAttribute("align","right");A=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});A.className="geBtn";a.editor.cancelFirst&&l.appendChild(A);if(PrintDialog.previewEnabled){var k=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();b(!1)});k.className="geBtn";l.appendChild(k)}k=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();b(!0)});k.className="geBtn gePrimaryBtn";l.appendChild(k);a.editor.cancelFirst|| +l.appendChild(A);d.appendChild(l);p.appendChild(d);m.appendChild(p);this.container=m};PrintDialog.printPreview=function(a){try{if(null!=a.wnd){var b=function(){a.wnd.focus();a.wnd.print();a.wnd.close()};mxClient.IS_GC?window.setTimeout(b,500):b()}}catch(f){}}; PrintDialog.createPrintPreview=function(a,b,f,d,l,m,p){b=new mxPrintPreview(a,b,f,d,l,m);b.title=mxResources.get("preview");b.printBackgroundImage=!0;b.autoOrigin=p;a=a.background;if(null==a||""==a||a==mxConstants.NONE)a="#ffffff";b.backgroundColor=a;var u=b.writeHead;b.writeHead=function(a){u.apply(this,arguments);a.writeln('<style type="text/css">');a.writeln("@media screen {");a.writeln(" body > div { padding:30px;box-sizing:content-box; }");a.writeln("}");a.writeln("</style>")};return b}; PrintDialog.previewEnabled=!0; var PageSetupDialog=function(a){function b(){null==c||c==mxConstants.NONE?(B.style.backgroundColor="",B.style.backgroundImage="url('"+Dialog.prototype.noColorImage+"')"):(B.style.backgroundColor=c,B.style.backgroundImage="")}function f(){null==q?(k.removeAttribute("title"),k.style.fontSize="",k.innerHTML=mxResources.get("change")+"..."):(k.setAttribute("title",q.src),k.style.fontSize="11px",k.innerHTML=q.src.substring(0,42)+"...")}var d=a.editor.graph,l,m,p=document.createElement("table");p.style.width= -"100%";p.style.height="100%";var u=document.createElement("tbody");l=document.createElement("tr");m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("paperSize")+":");l.appendChild(m);m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";var z=PageSetupDialog.addPageFormatPanel(m,"pagesetupdialog",d.pageFormat);l.appendChild(m);u.appendChild(l);l=document.createElement("tr");m=document.createElement("td"); +"100%";p.style.height="100%";var u=document.createElement("tbody");l=document.createElement("tr");m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";mxUtils.write(m,mxResources.get("paperSize")+":");l.appendChild(m);m=document.createElement("td");m.style.verticalAlign="top";m.style.fontSize="10pt";var A=PageSetupDialog.addPageFormatPanel(m,"pagesetupdialog",d.pageFormat);l.appendChild(m);u.appendChild(l);l=document.createElement("tr");m=document.createElement("td"); mxUtils.write(m,mxResources.get("background")+":");l.appendChild(m);m=document.createElement("td");m.style.whiteSpace="nowrap";document.createElement("input").setAttribute("type","text");var B=document.createElement("button");B.style.width="18px";B.style.height="18px";B.style.marginRight="20px";B.style.backgroundPosition="center center";B.style.backgroundRepeat="no-repeat";var c=d.background;b();mxEvent.addListener(B,"click",function(e){a.pickColor(c||"none",function(a){c=a;b()});mxEvent.consume(e)}); m.appendChild(B);mxUtils.write(m,mxResources.get("gridSize")+":");var e=document.createElement("input");e.setAttribute("type","number");e.setAttribute("min","0");e.style.width="40px";e.style.marginLeft="6px";e.value=d.getGridSize();m.appendChild(e);mxEvent.addListener(e,"change",function(){var a=parseInt(e.value);e.value=Math.max(1,isNaN(a)?d.getGridSize():a)});l.appendChild(m);u.appendChild(l);l=document.createElement("tr");m=document.createElement("td");mxUtils.write(m,mxResources.get("image")+ ":");l.appendChild(m);m=document.createElement("td");var k=document.createElement("a");k.style.textDecoration="underline";k.style.cursor="pointer";k.style.color="#a0a0a0";var q=d.backgroundImage;mxEvent.addListener(k,"click",function(c){a.showBackgroundImageDialog(function(a){q=a;f()});mxEvent.consume(c)});f();m.appendChild(k);l.appendChild(m);u.appendChild(l);l=document.createElement("tr");m=document.createElement("td");m.colSpan=2;m.style.paddingTop="16px";m.setAttribute("align","right");var n= -mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});n.className="geBtn";a.editor.cancelFirst&&m.appendChild(n);var g=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();d.gridSize!==e.value&&d.setGridSize(parseInt(e.value));var b=new ChangePageSetup(a,c,q,z.get());b.ignoreColor=d.background==c;b.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=q?q.src:null);d.pageFormat.width==b.previousFormat.width&&d.pageFormat.height==b.previousFormat.height&& +mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});n.className="geBtn";a.editor.cancelFirst&&m.appendChild(n);var g=mxUtils.button(mxResources.get("apply"),function(){a.hideDialog();d.gridSize!==e.value&&d.setGridSize(parseInt(e.value));var b=new ChangePageSetup(a,c,q,A.get());b.ignoreColor=d.background==c;b.ignoreImage=(null!=d.backgroundImage?d.backgroundImage.src:null)===(null!=q?q.src:null);d.pageFormat.width==b.previousFormat.width&&d.pageFormat.height==b.previousFormat.height&& b.ignoreColor&&b.ignoreImage||d.model.execute(b)});g.className="geBtn gePrimaryBtn";m.appendChild(g);a.editor.cancelFirst||m.appendChild(n);l.appendChild(m);u.appendChild(l);p.appendChild(u);this.container=p}; -PageSetupDialog.addPageFormatPanel=function(a,b,f,d){function l(a,b,d){if(d||e!=document.activeElement&&k!=document.activeElement){a=!1;for(b=0;b<n.length;b++)d=n[b],t?"custom"==d.key&&(u.value=d.key,t=!1):null!=d.format&&("a4"==d.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==d.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==d.format.width&& -f.height==d.format.height?(u.value=d.key,m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0,p.removeAttribute("checked"),p.defaultChecked=!1,p.checked=!1,a=!0):f.width==d.format.height&&f.height==d.format.width&&(u.value=d.key,m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1,p.setAttribute("checked","checked"),p.defaultChecked=!0,a=p.checked=!0));a?(z.style.display="",c.style.display="none"):(e.value=f.width/100,k.value=f.height/100,m.setAttribute("checked","checked"), -u.value="custom",z.style.display="none",c.style.display="")}}b="format-"+b;var m=document.createElement("input");m.setAttribute("name",b);m.setAttribute("type","radio");m.setAttribute("value","portrait");var p=document.createElement("input");p.setAttribute("name",b);p.setAttribute("type","radio");p.setAttribute("value","landscape");var u=document.createElement("select");u.style.marginBottom="8px";u.style.width="202px";var z=document.createElement("div");z.style.marginLeft="4px";z.style.width="210px"; -z.style.height="24px";m.style.marginRight="6px";z.appendChild(m);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));z.appendChild(b);p.style.marginLeft="10px";p.style.marginRight="6px";z.appendChild(p);var B=document.createElement("span");B.style.width="100px";mxUtils.write(B,mxResources.get("landscape"));z.appendChild(B);var c=document.createElement("div");c.style.marginLeft="4px";c.style.width="210px";c.style.height="24px";var e=document.createElement("input"); -e.setAttribute("size","7");e.style.textAlign="right";c.appendChild(e);mxUtils.write(c," in x ");var k=document.createElement("input");k.setAttribute("size","7");k.style.textAlign="right";c.appendChild(k);mxUtils.write(c," in");z.style.display="none";c.style.display="none";for(var q={},n=PageSetupDialog.getFormats(),g=0;g<n.length;g++){var A=n[g];q[A.key]=A;var x=document.createElement("option");x.setAttribute("value",A.key);mxUtils.write(x,A.title);u.appendChild(x)}var t=!1;l();a.appendChild(u);mxUtils.br(a); -a.appendChild(z);a.appendChild(c);var H=f,y=function(a,b){var g=q[u.value];null!=g.format?(e.value=g.format.width/100,k.value=g.format.height/100,c.style.display="none",z.style.display=""):(z.style.display="none",c.style.display="");g=parseFloat(e.value);if(isNaN(g)||0>=g)e.value=f.width/100;g=parseFloat(k.value);if(isNaN(g)||0>=g)k.value=f.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(e.value)),Math.floor(100*parseFloat(k.value)));"custom"!=u.value&&p.checked&&(g=new mxRectangle(0,0, -g.height,g.width));b&&t||g.width==H.width&&g.height==H.height||(H=g,null!=d&&d(H))};mxEvent.addListener(b,"click",function(a){m.checked=!0;y(a);mxEvent.consume(a)});mxEvent.addListener(B,"click",function(a){p.checked=!0;y(a);mxEvent.consume(a)});mxEvent.addListener(e,"blur",y);mxEvent.addListener(e,"click",y);mxEvent.addListener(k,"blur",y);mxEvent.addListener(k,"click",y);mxEvent.addListener(p,"change",y);mxEvent.addListener(m,"change",y);mxEvent.addListener(u,"change",function(a){t="custom"==u.value; -y(a,!0)});y();return{set:function(a){f=a;l(null,null,!0)},get:function(){return H},widthInput:e,heightInput:k}}; +PageSetupDialog.addPageFormatPanel=function(a,b,f,d){function l(a,b,d){if(d||e!=document.activeElement&&k!=document.activeElement){a=!1;for(b=0;b<n.length;b++)d=n[b],v?"custom"==d.key&&(u.value=d.key,v=!1):null!=d.format&&("a4"==d.key?826==f.width?(f=mxRectangle.fromRectangle(f),f.width=827):826==f.height&&(f=mxRectangle.fromRectangle(f),f.height=827):"a5"==d.key&&(584==f.width?(f=mxRectangle.fromRectangle(f),f.width=583):584==f.height&&(f=mxRectangle.fromRectangle(f),f.height=583)),f.width==d.format.width&& +f.height==d.format.height?(u.value=d.key,m.setAttribute("checked","checked"),m.defaultChecked=!0,m.checked=!0,p.removeAttribute("checked"),p.defaultChecked=!1,p.checked=!1,a=!0):f.width==d.format.height&&f.height==d.format.width&&(u.value=d.key,m.removeAttribute("checked"),m.defaultChecked=!1,m.checked=!1,p.setAttribute("checked","checked"),p.defaultChecked=!0,a=p.checked=!0));a?(A.style.display="",c.style.display="none"):(e.value=f.width/100,k.value=f.height/100,m.setAttribute("checked","checked"), +u.value="custom",A.style.display="none",c.style.display="")}}b="format-"+b;var m=document.createElement("input");m.setAttribute("name",b);m.setAttribute("type","radio");m.setAttribute("value","portrait");var p=document.createElement("input");p.setAttribute("name",b);p.setAttribute("type","radio");p.setAttribute("value","landscape");var u=document.createElement("select");u.style.marginBottom="8px";u.style.width="202px";var A=document.createElement("div");A.style.marginLeft="4px";A.style.width="210px"; +A.style.height="24px";m.style.marginRight="6px";A.appendChild(m);b=document.createElement("span");b.style.maxWidth="100px";mxUtils.write(b,mxResources.get("portrait"));A.appendChild(b);p.style.marginLeft="10px";p.style.marginRight="6px";A.appendChild(p);var B=document.createElement("span");B.style.width="100px";mxUtils.write(B,mxResources.get("landscape"));A.appendChild(B);var c=document.createElement("div");c.style.marginLeft="4px";c.style.width="210px";c.style.height="24px";var e=document.createElement("input"); +e.setAttribute("size","7");e.style.textAlign="right";c.appendChild(e);mxUtils.write(c," in x ");var k=document.createElement("input");k.setAttribute("size","7");k.style.textAlign="right";c.appendChild(k);mxUtils.write(c," in");A.style.display="none";c.style.display="none";for(var q={},n=PageSetupDialog.getFormats(),g=0;g<n.length;g++){var z=n[g];q[z.key]=z;var x=document.createElement("option");x.setAttribute("value",z.key);mxUtils.write(x,z.title);u.appendChild(x)}var v=!1;l();a.appendChild(u);mxUtils.br(a); +a.appendChild(A);a.appendChild(c);var I=f,y=function(a,b){var g=q[u.value];null!=g.format?(e.value=g.format.width/100,k.value=g.format.height/100,c.style.display="none",A.style.display=""):(A.style.display="none",c.style.display="");g=parseFloat(e.value);if(isNaN(g)||0>=g)e.value=f.width/100;g=parseFloat(k.value);if(isNaN(g)||0>=g)k.value=f.height/100;g=new mxRectangle(0,0,Math.floor(100*parseFloat(e.value)),Math.floor(100*parseFloat(k.value)));"custom"!=u.value&&p.checked&&(g=new mxRectangle(0,0, +g.height,g.width));b&&v||g.width==I.width&&g.height==I.height||(I=g,null!=d&&d(I))};mxEvent.addListener(b,"click",function(a){m.checked=!0;y(a);mxEvent.consume(a)});mxEvent.addListener(B,"click",function(a){p.checked=!0;y(a);mxEvent.consume(a)});mxEvent.addListener(e,"blur",y);mxEvent.addListener(e,"click",y);mxEvent.addListener(k,"blur",y);mxEvent.addListener(k,"click",y);mxEvent.addListener(p,"change",y);mxEvent.addListener(m,"change",y);mxEvent.addListener(u,"change",function(a){v="custom"==u.value; +y(a,!0)});y();return{set:function(a){f=a;l(null,null,!0)},get:function(){return I},widthInput:e,heightInput:k}}; PageSetupDialog.getFormats=function(){return[{key:"letter",title:'US-Letter (8,5" x 11")',format:mxConstants.PAGE_FORMAT_LETTER_PORTRAIT},{key:"legal",title:'US-Legal (8,5" x 14")',format:new mxRectangle(0,0,850,1400)},{key:"tabloid",title:'US-Tabloid (11" x 17")',format:new mxRectangle(0,0,1100,1700)},{key:"executive",title:'US-Executive (7" x 10")',format:new mxRectangle(0,0,700,1E3)},{key:"a0",title:"A0 (841 mm x 1189 mm)",format:new mxRectangle(0,0,3300,4681)},{key:"a1",title:"A1 (594 mm x 841 mm)", format:new mxRectangle(0,0,2339,3300)},{key:"a2",title:"A2 (420 mm x 594 mm)",format:new mxRectangle(0,0,1654,2336)},{key:"a3",title:"A3 (297 mm x 420 mm)",format:new mxRectangle(0,0,1169,1654)},{key:"a4",title:"A4 (210 mm x 297 mm)",format:mxConstants.PAGE_FORMAT_A4_PORTRAIT},{key:"a5",title:"A5 (148 mm x 210 mm)",format:new mxRectangle(0,0,583,827)},{key:"a6",title:"A6 (105 mm x 148 mm)",format:new mxRectangle(0,0,413,583)},{key:"a7",title:"A7 (74 mm x 105 mm)",format:new mxRectangle(0,0,291,413)}, {key:"b4",title:"B4 (250 mm x 353 mm)",format:new mxRectangle(0,0,980,1390)},{key:"b5",title:"B5 (176 mm x 250 mm)",format:new mxRectangle(0,0,690,980)},{key:"16-9",title:"16:9 (1600 x 900)",format:new mxRectangle(0,0,1600,900)},{key:"16-10",title:"16:10 (1920 x 1200)",format:new mxRectangle(0,0,1920,1200)},{key:"4-3",title:"4:3 (1600 x 1200)",format:new mxRectangle(0,0,1600,1200)},{key:"custom",title:mxResources.get("custom"),format:null}]}; @@ -2090,8 +2090,8 @@ c="url("+this.gridImage+")";var k=d=0;null!=a.view.backgroundPageShape&&(k=this. b,a.container.className="geDiagramContainer geDiagramBackdrop",d.style.backgroundImage="none",d.style.backgroundColor=""):(a.container.className="geDiagramContainer",d.style.backgroundPosition=e,d.style.backgroundColor=b,d.style.backgroundImage=c)};mxGraphView.prototype.createSvgGrid=function(a){for(var b=this.graph.gridSize*this.scale;b<this.minGridSize;)b*=2;for(var d=this.gridSteps*b,c=[],e=1;e<this.gridSteps;e++){var k=e*b;c.push("M 0 "+k+" L "+d+" "+k+" M "+k+" 0 L "+k+" "+d)}return'<svg width="'+ d+'" height="'+d+'" xmlns="'+mxConstants.NS_SVG+'"><defs><pattern id="grid" width="'+d+'" height="'+d+'" patternUnits="userSpaceOnUse"><path d="'+c.join(" ")+'" fill="none" stroke="'+a+'" opacity="0.2" stroke-width="1"/><path d="M '+d+" 0 L 0 0 0 "+d+'" fill="none" stroke="'+a+'" stroke-width="1"/></pattern></defs><rect width="100%" height="100%" fill="url(#grid)"/></svg>'};var a=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(b,d){a.apply(this,arguments);if(null!=this.shiftPreview1){var f= this.view.canvas;null!=f.ownerSVGElement&&(f=f.ownerSVGElement);var c=this.gridSize*this.view.scale*this.view.gridSteps,c=-Math.round(c-mxUtils.mod(this.view.translate.x*this.view.scale+b,c))+"px "+-Math.round(c-mxUtils.mod(this.view.translate.y*this.view.scale+d,c))+"px";f.style.backgroundPosition=c}};mxGraph.prototype.updatePageBreaks=function(a,b,d){var c=this.view.scale,e=this.view.translate,k=this.pageFormat,f=c*this.pageScale,n=this.view.getBackgroundPageBounds();b=n.width;d=n.height;var g= -new mxRectangle(c*e.x,c*e.y,k.width*f,k.height*f),A=(a=a&&Math.min(g.width,g.height)>this.minPageBreakDist)?Math.ceil(d/g.height)-1:0,x=a?Math.ceil(b/g.width)-1:0,t=n.x+b,l=n.y+d;null==this.horizontalPageBreaks&&0<A&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<x&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var c=a==this.horizontalPageBreaks?A:x,b=0;b<=c;b++){var e=a==this.horizontalPageBreaks?[new mxPoint(Math.round(n.x),Math.round(n.y+(b+1)*g.height)), -new mxPoint(Math.round(t),Math.round(n.y+(b+1)*g.height))]:[new mxPoint(Math.round(n.x+(b+1)*g.width),Math.round(n.y)),new mxPoint(Math.round(n.x+(b+1)*g.width),Math.round(l))];null!=a[b]?(a[b].points=e,a[b].redraw()):(e=new mxPolyline(e,this.pageBreakColor),e.dialect=this.dialect,e.isDashed=this.pageBreakDashed,e.pointerEvents=!1,e.init(this.view.backgroundPane),e.redraw(),a[b]=e)}for(b=c;b<a.length;b++)a[b].destroy();a.splice(c,a.length-c)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)}; +new mxRectangle(c*e.x,c*e.y,k.width*f,k.height*f),z=(a=a&&Math.min(g.width,g.height)>this.minPageBreakDist)?Math.ceil(d/g.height)-1:0,x=a?Math.ceil(b/g.width)-1:0,v=n.x+b,l=n.y+d;null==this.horizontalPageBreaks&&0<z&&(this.horizontalPageBreaks=[]);null==this.verticalPageBreaks&&0<x&&(this.verticalPageBreaks=[]);a=mxUtils.bind(this,function(a){if(null!=a){for(var c=a==this.horizontalPageBreaks?z:x,b=0;b<=c;b++){var e=a==this.horizontalPageBreaks?[new mxPoint(Math.round(n.x),Math.round(n.y+(b+1)*g.height)), +new mxPoint(Math.round(v),Math.round(n.y+(b+1)*g.height))]:[new mxPoint(Math.round(n.x+(b+1)*g.width),Math.round(n.y)),new mxPoint(Math.round(n.x+(b+1)*g.width),Math.round(l))];null!=a[b]?(a[b].points=e,a[b].redraw()):(e=new mxPolyline(e,this.pageBreakColor),e.dialect=this.dialect,e.isDashed=this.pageBreakDashed,e.pointerEvents=!1,e.init(this.view.backgroundPane),e.redraw(),a[b]=e)}for(b=c;b<a.length;b++)a[b].destroy();a.splice(c,a.length-c)}});a(this.horizontalPageBreaks);a(this.verticalPageBreaks)}; var b=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(a,d,f){for(var c=0;c<d.length;c++)if(this.graph.getModel().isVertex(d[c])){var e=this.graph.getCellGeometry(d[c]);if(null!=e&&e.relative)return!1}return b.apply(this,arguments)};var f=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var a=f.apply(this,arguments);a.intersects=mxUtils.bind(this,function(b,d){return this.isConnecting()? !0:mxCellMarker.prototype.intersects.apply(a,arguments)});return a};mxGraphView.prototype.createBackgroundPageShape=function(a){return new mxRectangleShape(a,"#ffffff",this.graph.defaultPageBorderColor)};mxGraphView.prototype.getBackgroundPageBounds=function(){var a=this.getGraphBounds(),b=0<a.width?a.x/this.scale-this.translate.x:0,d=0<a.height?a.y/this.scale-this.translate.y:0,c=this.graph.pageFormat,e=this.graph.pageScale,k=c.width*e,c=c.height*e,e=Math.floor(Math.min(0,b)/k),f=Math.floor(Math.min(0, d)/c);return new mxRectangle(this.scale*(this.translate.x+e*k),this.scale*(this.translate.y+f*c),this.scale*(Math.ceil(Math.max(1,b+a.width/this.scale)/k)-e)*k,this.scale*(Math.ceil(Math.max(1,d+a.height/this.scale)/c)-f)*c)};var d=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(a,b){d.apply(this,arguments);this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft= @@ -2104,18 +2104,18 @@ l,this.menubarContainer.onmousedown=l,this.toolbarContainer.onselectstart=l,this (b=function(a){if(null!=a){var c=mxEvent.getSource(a);if("A"==c.nodeName)for(;null!=c;){if("geHint"==c.className)return!0;c=c.parentNode}}return l(a)},mxClient.IS_IE&&("undefined"===typeof document.documentMode||9>document.documentMode)?mxEvent.addListener(this.diagramContainer,"contextmenu",b):this.diagramContainer.oncontextmenu=b):d.panningHandler.usePopupTrigger=!1;d.init(this.diagramContainer);mxClient.IS_SVG&&null!=d.view.getDrawPane()&&(b=d.view.getDrawPane().ownerSVGElement,null!=b&&(b.style.position= "absolute"));this.hoverIcons=this.createHoverIcons();mxEvent.addListener(this.diagramContainer,"mousemove",mxUtils.bind(this,function(a){var c=mxUtils.getOffset(this.diagramContainer);0<mxEvent.getClientX(a)-c.x-this.diagramContainer.clientWidth||0<mxEvent.getClientY(a)-c.y-this.diagramContainer.clientHeight?this.diagramContainer.setAttribute("title",mxResources.get("panTooltip")):this.diagramContainer.removeAttribute("title")}));var m=!1,p=this.hoverIcons.isResetEvent;this.hoverIcons.isResetEvent= function(a,c){return m||p.apply(this,arguments)};this.keydownHandler=mxUtils.bind(this,function(a){32!=a.which||d.isEditing()?mxEvent.isConsumed(a)||27!=a.keyCode||this.hideDialog(null,!0):(m=!0,this.hoverIcons.reset(),d.container.style.cursor="move",d.isEditing()||mxEvent.getSource(a)!=d.container||mxEvent.consume(a))});mxEvent.addListener(document,"keydown",this.keydownHandler);this.keyupHandler=mxUtils.bind(this,function(a){d.container.style.cursor="";m=!1});mxEvent.addListener(document,"keyup", -this.keyupHandler);var u=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent=function(a){return u.apply(this,arguments)||m||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var z=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(a){return z.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&& +this.keyupHandler);var u=d.panningHandler.isForcePanningEvent;d.panningHandler.isForcePanningEvent=function(a){return u.apply(this,arguments)||m||mxEvent.isMouseEvent(a.getEvent())&&(this.usePopupTrigger||!mxEvent.isPopupTrigger(a.getEvent()))&&(!mxEvent.isControlDown(a.getEvent())&&mxEvent.isRightMouseButton(a.getEvent())||mxEvent.isMiddleMouseButton(a.getEvent()))};var A=d.cellEditor.isStopEditingEvent;d.cellEditor.isStopEditingEvent=function(a){return A.apply(this,arguments)||13==a.keyCode&&(!mxClient.IS_SF&& mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxClient.IS_SF&&mxEvent.isShiftDown(a))};var B=d.isZoomWheelEvent;d.isZoomWheelEvent=function(){return m||B.apply(this,arguments)};var c=!1,e=null,k=null,q=null,n=mxUtils.bind(this,function(){if(null!=this.toolbar&&c!=d.cellEditor.isContentEditing()){for(var a=this.toolbar.container.firstChild,b=[];null!=a;){var g=a.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,a)&&(a.parentNode.removeChild(a),b.push(a));a=g}a=this.toolbar.fontMenu; -g=this.toolbar.sizeMenu;if(null==q)this.toolbar.createTextToolbar();else{for(var f=0;f<q.length;f++)this.toolbar.container.appendChild(q[f]);this.toolbar.fontMenu=e;this.toolbar.sizeMenu=k}c=d.cellEditor.isContentEditing();e=a;k=g;q=b}}),g=this,A=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){A.apply(this,arguments);n();if(d.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=d.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c= +g=this.toolbar.sizeMenu;if(null==q)this.toolbar.createTextToolbar();else{for(var f=0;f<q.length;f++)this.toolbar.container.appendChild(q[f]);this.toolbar.fontMenu=e;this.toolbar.sizeMenu=k}c=d.cellEditor.isContentEditing();e=a;k=g;q=b}}),g=this,z=d.cellEditor.startEditing;d.cellEditor.startEditing=function(){z.apply(this,arguments);n();if(d.cellEditor.isContentEditing()){var a=!1,c=function(){a||(a=!0,window.setTimeout(function(){for(var c=d.getSelectedElement();null!=c&&c.nodeType!=mxConstants.NODETYPE_ELEMENT;)c= c.parentNode;if(null!=c&&(c=mxUtils.getCurrentStyle(c),null!=c&&null!=g.toolbar)){var b=c.fontFamily;"'"==b.charAt(0)&&(b=b.substring(1));"'"==b.charAt(b.length-1)&&(b=b.substring(0,b.length-1));g.toolbar.setFontName(b);g.toolbar.setFontSize(parseInt(c.fontSize))}a=!1},0))};mxEvent.addListener(d.cellEditor.textarea,"input",c);mxEvent.addListener(d.cellEditor.textarea,"touchend",c);mxEvent.addListener(d.cellEditor.textarea,"mouseup",c);mxEvent.addListener(d.cellEditor.textarea,"keyup",c);c()}};var x= -d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(a,c){x.apply(this,arguments);n()};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(M){}var t=d.fireMouseEvent;d.fireMouseEvent=function(a,c,b){a==mxEvent.MOUSE_DOWN&&this.container.focus();t.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a, -c,b){this.menus.createPopupMenu(a,c,b)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var H="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),y="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){try{var c=d.view.getState(a);if(null!=c){var b=a.clone();b.style="";var e= -d.getCellStyle(b);a=[];var b=[],k;for(k in c.style)e[k]!=c.style[k]&&(a.push(c.style[k]),b.push(k));for(var g=d.getModel().getStyle(c.cell),f=null!=g?g.split(";"):[],g=0;g<f.length;g++){var n=f[g],v=n.indexOf("=");if(0<=v){k=n.substring(0,v);var q=n.substring(v+1);null!=e[k]&&"none"==q&&(a.push(q),b.push(k))}}d.getModel().isEdge(c.cell)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",b,"values",a,"cells",[c.cell]))}}catch(Y){this.handleError(Y)}}; -this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var F=["fontFamily","fontSize","fontColor"],C="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),v=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing".split(" "),["strokeColor","strokeWidth"], -["fillColor","gradientColor"],F,["opacity"],["align"],["html"]];for(a=0;a<v.length;a++)for(b=0;b<v[a].length;b++)H.push(v[a][b]);for(a=0;a<y.length;a++)0>mxUtils.indexOf(H,y[a])&&H.push(y[a]);var J=function(a,c){var b=d.getModel();b.beginUpdate();try{for(var e=0;e<a.length;e++){var k=a[e],g;if(c)g=["fontSize","fontFamily","fontColor"];else{var f=b.getStyle(k),n=null!=f?f.split(";"):[];g=H.slice();for(var q=0;q<n.length;q++){var t=n[q],x=t.indexOf("=");if(0<=x){var l=t.substring(0,x),A=mxUtils.indexOf(g, -l);0<=A&&g.splice(A,1);for(var O=0;O<v.length;O++){var J=v[O];if(0<=mxUtils.indexOf(J,l))for(var m=0;m<J.length;m++){var I=mxUtils.indexOf(g,J[m]);0<=I&&g.splice(I,1)}}}}}for(var u=b.isEdge(k),M=u?d.currentEdgeStyle:d.currentVertexStyle,p=b.getStyle(k),q=0;q<g.length;q++){var l=g[q],C=M[l];null==C||"shape"==l&&!u||u&&!(0>mxUtils.indexOf(y,l))||(p=mxUtils.setStyle(p,l,C))}b.setStyle(k,p)}}finally{b.endUpdate()}};d.addListener("cellsInserted",function(a,c){J(c.getProperty("cells"))});d.addListener("textInserted", +d.cellEditor.stopEditing;d.cellEditor.stopEditing=function(a,c){x.apply(this,arguments);n()};d.container.setAttribute("tabindex","0");d.container.style.cursor="default";if(window.self===window.top&&null!=d.container.parentNode)try{d.container.focus()}catch(M){}var v=d.fireMouseEvent;d.fireMouseEvent=function(a,c,b){a==mxEvent.MOUSE_DOWN&&this.container.focus();v.apply(this,arguments)};d.popupMenuHandler.autoExpand=!0;null!=this.menus&&(d.popupMenuHandler.factoryMethod=mxUtils.bind(this,function(a, +c,b){this.menus.createPopupMenu(a,c,b)}));mxEvent.addGestureListeners(document,mxUtils.bind(this,function(a){d.popupMenuHandler.hideMenu()}));this.keyHandler=this.createKeyHandler(a);this.getKeyHandler=function(){return keyHandler};var I="rounded shadow glass dashed dashPattern comic labelBackgroundColor".split(" "),y="shape edgeStyle curved rounded elbow comic jumpStyle jumpSize".split(" ");this.setDefaultStyle=function(a){try{var c=d.view.getState(a);if(null!=c){var b=a.clone();b.style="";var e= +d.getCellStyle(b);a=[];var b=[],k;for(k in c.style)e[k]!=c.style[k]&&(a.push(c.style[k]),b.push(k));for(var g=d.getModel().getStyle(c.cell),f=null!=g?g.split(";"):[],g=0;g<f.length;g++){var t=f[g],n=t.indexOf("=");if(0<=n){k=t.substring(0,n);var q=t.substring(n+1);null!=e[k]&&"none"==q&&(a.push(q),b.push(k))}}d.getModel().isEdge(c.cell)?d.currentEdgeStyle={}:d.currentVertexStyle={};this.fireEvent(new mxEventObject("styleChanged","keys",b,"values",a,"cells",[c.cell]))}}catch(Y){this.handleError(Y)}}; +this.clearDefaultStyle=function(){d.currentEdgeStyle=mxUtils.clone(d.defaultEdgeStyle);d.currentVertexStyle=mxUtils.clone(d.defaultVertexStyle);this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]))};var F=["fontFamily","fontSize","fontColor"],C="edgeStyle startArrow startFill startSize endArrow endFill endSize".split(" "),t=["startArrow startFill startSize sourcePerimeterSpacing endArrow endFill endSize targetPerimeterSpacing".split(" "),["strokeColor","strokeWidth"], +["fillColor","gradientColor"],F,["opacity"],["align"],["html"]];for(a=0;a<t.length;a++)for(b=0;b<t[a].length;b++)I.push(t[a][b]);for(a=0;a<y.length;a++)0>mxUtils.indexOf(I,y[a])&&I.push(y[a]);var J=function(a,c){var b=d.getModel();b.beginUpdate();try{for(var e=0;e<a.length;e++){var k=a[e],g;if(c)g=["fontSize","fontFamily","fontColor"];else{var f=b.getStyle(k),n=null!=f?f.split(";"):[];g=I.slice();for(var q=0;q<n.length;q++){var v=n[q],x=v.indexOf("=");if(0<=x){var z=v.substring(0,x),l=mxUtils.indexOf(g, +z);0<=l&&g.splice(l,1);for(var O=0;O<t.length;O++){var J=t[O];if(0<=mxUtils.indexOf(J,z))for(var G=0;G<J.length;G++){var m=mxUtils.indexOf(g,J[G]);0<=m&&g.splice(m,1)}}}}}for(var u=b.isEdge(k),M=u?d.currentEdgeStyle:d.currentVertexStyle,p=b.getStyle(k),q=0;q<g.length;q++){var z=g[q],C=M[z];null==C||"shape"==z&&!u||u&&!(0>mxUtils.indexOf(y,z))||(p=mxUtils.setStyle(p,z,C))}b.setStyle(k,p)}}finally{b.endUpdate()}};d.addListener("cellsInserted",function(a,c){J(c.getProperty("cells"))});d.addListener("textInserted", function(a,c){J(c.getProperty("cells"),!0)});d.connectionHandler.addListener(mxEvent.CONNECT,function(a,c){var b=[c.getProperty("cell")];c.getProperty("terminalInserted")&&b.push(c.getProperty("terminal"));J(b)});this.addListener("styleChanged",mxUtils.bind(this,function(a,c){var b=c.getProperty("cells"),e=!1,k=!1;if(0<b.length)for(var g=0;g<b.length&&(e=d.getModel().isVertex(b[g])||e,!(k=d.getModel().isEdge(b[g])||k)||!e);g++);else k=e=!0;for(var b=c.getProperty("keys"),f=c.getProperty("values"), -g=0;g<b.length;g++){var n=0<=mxUtils.indexOf(F,b[g]);if("strokeColor"!=b[g]||null!=f[g]&&"none"!=f[g])if(0<=mxUtils.indexOf(y,b[g]))k||0<=mxUtils.indexOf(C,b[g])?null==f[g]?delete d.currentEdgeStyle[b[g]]:d.currentEdgeStyle[b[g]]=f[g]:e&&0<=mxUtils.indexOf(H,b[g])&&(null==f[g]?delete d.currentVertexStyle[b[g]]:d.currentVertexStyle[b[g]]=f[g]);else if(0<=mxUtils.indexOf(H,b[g])){if(e||n)null==f[g]?delete d.currentVertexStyle[b[g]]:d.currentVertexStyle[b[g]]=f[g];if(k||n||0<=mxUtils.indexOf(C,b[g]))null== +g=0;g<b.length;g++){var t=0<=mxUtils.indexOf(F,b[g]);if("strokeColor"!=b[g]||null!=f[g]&&"none"!=f[g])if(0<=mxUtils.indexOf(y,b[g]))k||0<=mxUtils.indexOf(C,b[g])?null==f[g]?delete d.currentEdgeStyle[b[g]]:d.currentEdgeStyle[b[g]]=f[g]:e&&0<=mxUtils.indexOf(I,b[g])&&(null==f[g]?delete d.currentVertexStyle[b[g]]:d.currentVertexStyle[b[g]]=f[g]);else if(0<=mxUtils.indexOf(I,b[g])){if(e||t)null==f[g]?delete d.currentVertexStyle[b[g]]:d.currentVertexStyle[b[g]]=f[g];if(k||t||0<=mxUtils.indexOf(C,b[g]))null== f[g]?delete d.currentEdgeStyle[b[g]]:d.currentEdgeStyle[b[g]]=f[g]}}null!=this.toolbar&&(this.toolbar.setFontName(d.currentVertexStyle.fontFamily||Menus.prototype.defaultFont),this.toolbar.setFontSize(d.currentVertexStyle.fontSize||Menus.prototype.defaultFontSize),null!=this.toolbar.edgeStyleMenu&&(this.toolbar.edgeStyleMenu.getElementsByTagName("div")[0].className="orthogonalEdgeStyle"==d.currentEdgeStyle.edgeStyle&&"1"==d.currentEdgeStyle.curved?"geSprite geSprite-curved":"straight"==d.currentEdgeStyle.edgeStyle|| "none"==d.currentEdgeStyle.edgeStyle||null==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-straight":"entityRelationEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-entity":"elbowEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalelbow":"horizontalelbow"):"isometricEdgeStyle"==d.currentEdgeStyle.edgeStyle?"geSprite geSprite-"+("vertical"==d.currentEdgeStyle.elbow?"verticalisometric":"horizontalisometric"):"geSprite geSprite-orthogonal"), null!=this.toolbar.edgeShapeMenu&&(this.toolbar.edgeShapeMenu.getElementsByTagName("div")[0].className="link"==d.currentEdgeStyle.shape?"geSprite geSprite-linkedge":"flexArrow"==d.currentEdgeStyle.shape?"geSprite geSprite-arrow":"arrow"==d.currentEdgeStyle.shape?"geSprite geSprite-simplearrow":"geSprite geSprite-connection"),null!=this.toolbar.lineStartMenu&&(this.toolbar.lineStartMenu.getElementsByTagName("div")[0].className=this.getCssClassForMarker("start",d.currentEdgeStyle.shape,d.currentEdgeStyle[mxConstants.STYLE_STARTARROW], @@ -2139,36 +2139,36 @@ EditorUi.prototype.initClipboard=function(){var a=this,b=mxClipboard.cut;mxClipb 0),k=0;k<m.length;k++)c.add(e,m[k]);b.updateCustomLinks(b.createCellMapping(f,l),m);mxClipboard.insertCount=1;mxClipboard.setCells(m)}a.updatePasteActionStates();return d};var f=mxClipboard.paste;mxClipboard.paste=function(b){var d=null;b.cellEditor.isContentEditing()?document.execCommand("paste",!1,null):d=f.apply(this,arguments);a.updatePasteActionStates();return d};var d=this.editor.graph.cellEditor.startEditing;this.editor.graph.cellEditor.startEditing=function(){d.apply(this,arguments);a.updatePasteActionStates()}; var l=this.editor.graph.cellEditor.stopEditing;this.editor.graph.cellEditor.stopEditing=function(b,d){l.apply(this,arguments);a.updatePasteActionStates()};this.updatePasteActionStates()};EditorUi.prototype.lazyZoomDelay=20;EditorUi.prototype.wheelZoomDelay=400;EditorUi.prototype.buttonZoomDelay=600; EditorUi.prototype.initCanvas=function(){var a=this.editor.graph;a.timerAutoScroll=!0;a.getPagePadding=function(){return new mxPoint(Math.max(0,Math.round((a.container.offsetWidth-34)/a.view.scale)),Math.max(0,Math.round((a.container.offsetHeight-34)/a.view.scale)))};a.view.getBackgroundPageBounds=function(){var a=this.graph.getPageLayout(),c=this.graph.getPageSize();return new mxRectangle(this.scale*(this.translate.x+a.x*c.width),this.scale*(this.translate.y+a.y*c.height),this.scale*a.width*c.width, -this.scale*a.height*c.height)};a.getPreferredPageSize=function(a,c,b){a=this.getPageLayout();c=this.getPageSize();return new mxRectangle(0,0,a.width*c.width,a.height*c.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(c,b,e,d){if(null!=a.container&&!a.isViewer()){e=null!=e?e:0;d=null!=d?d:0;var k=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),g=mxUtils.hasScrollbars(a.container),f=a.view.translate,n=a.view.scale,v=mxRectangle.fromRectangle(k); -v.x=v.x/n-f.x;v.y=v.y/n-f.y;v.width/=n;v.height/=n;var f=a.container.scrollTop,q=a.container.scrollLeft,E=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)E+=3;var t=a.container.offsetWidth-E,E=a.container.offsetHeight-E;c=c?Math.max(.3,Math.min(b||1,t/v.width)):n;b=(t-c*v.width)/2/c;var x=0==this.lightboxVerticalDivider?0:(E-c*v.height)/this.lightboxVerticalDivider/c;g&&(b=Math.max(b,0),x=Math.max(x,0));if(g||k.width<t||k.height<E)a.view.scaleAndTranslate(c, -Math.floor(b-v.x),Math.floor(x-v.y)),a.container.scrollTop=f*c/n,a.container.scrollLeft=q*c/n;else if(0!=e||0!=d)k=a.view.translate,a.view.setTranslate(Math.floor(k.x+e/n),Math.floor(k.y+d/n))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView", +this.scale*a.height*c.height)};a.getPreferredPageSize=function(a,c,b){a=this.getPageLayout();c=this.getPageSize();return new mxRectangle(0,0,a.width*c.width,a.height*c.height)};var b=null,f=this;if(this.editor.isChromelessView()){this.chromelessResize=b=mxUtils.bind(this,function(c,b,e,d){if(null!=a.container&&!a.isViewer()){e=null!=e?e:0;d=null!=d?d:0;var k=a.pageVisible?a.view.getBackgroundPageBounds():a.getGraphBounds(),g=mxUtils.hasScrollbars(a.container),f=a.view.translate,t=a.view.scale,n=mxRectangle.fromRectangle(k); +n.x=n.x/t-f.x;n.y=n.y/t-f.y;n.width/=t;n.height/=t;var f=a.container.scrollTop,q=a.container.scrollLeft,D=mxClient.IS_QUIRKS||8<=document.documentMode?20:14;if(8==document.documentMode||9==document.documentMode)D+=3;var v=a.container.offsetWidth-D,D=a.container.offsetHeight-D;c=c?Math.max(.3,Math.min(b||1,v/n.width)):t;b=(v-c*n.width)/2/c;var x=0==this.lightboxVerticalDivider?0:(D-c*n.height)/this.lightboxVerticalDivider/c;g&&(b=Math.max(b,0),x=Math.max(x,0));if(g||k.width<v||k.height<D)a.view.scaleAndTranslate(c, +Math.floor(b-n.x),Math.floor(x-n.y)),a.container.scrollTop=f*c/t,a.container.scrollLeft=q*c/t;else if(0!=e||0!=d)k=a.view.translate,a.view.setTranslate(Math.floor(k.x+e/t),Math.floor(k.y+d/t))}});this.chromelessWindowResize=mxUtils.bind(this,function(){this.chromelessResize(!1)});var d=mxUtils.bind(this,function(){this.chromelessWindowResize(!1)});mxEvent.addListener(window,"resize",d);this.destroyFunctions.push(function(){mxEvent.removeListener(window,"resize",d)});this.editor.addListener("resetGraphView", mxUtils.bind(this,function(){this.chromelessResize(!0)}));this.actions.get("zoomIn").funct=mxUtils.bind(this,function(c){a.zoomIn();this.chromelessResize(!1)});this.actions.get("zoomOut").funct=mxUtils.bind(this,function(c){a.zoomOut();this.chromelessResize(!1)});if("0"!=urlParams.toolbar){var l=JSON.parse(decodeURIComponent(urlParams["toolbar-config"]||"{}"));this.chromelessToolbar=document.createElement("div");this.chromelessToolbar.style.position="fixed";this.chromelessToolbar.style.overflow="hidden"; this.chromelessToolbar.style.boxSizing="border-box";this.chromelessToolbar.style.whiteSpace="nowrap";this.chromelessToolbar.style.backgroundColor="#000000";this.chromelessToolbar.style.padding="10px 10px 8px 10px";this.chromelessToolbar.style.left=a.isViewer()?"0":"50%";mxClient.IS_VML||(mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"borderRadius","20px"),mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transition","opacity 600ms ease-in-out"));var m=mxUtils.bind(this,function(){var c= mxUtils.getCurrentStyle(a.container);a.isViewer()?this.chromelessToolbar.style.top="0":this.chromelessToolbar.style.bottom=(null!=c?parseInt(c["margin-bottom"]||0):0)+(null!=this.tabContainer?20+parseInt(this.tabContainer.style.height):20)+"px"});this.editor.addListener("resetGraphView",m);m();var p=0,m=mxUtils.bind(this,function(a,c,b){p++;var e=document.createElement("span");e.style.paddingLeft="8px";e.style.paddingRight="8px";e.style.cursor="pointer";mxEvent.addListener(e,"click",a);null!=b&&e.setAttribute("title", -b);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",c);e.appendChild(a);this.chromelessToolbar.appendChild(e);return e});null!=l.backBtn&&m(mxUtils.bind(this,function(a){window.location.href=l.backBtn.url;mxEvent.consume(a)}),Editor.backLargeImage,mxResources.get("back",null,"Back"));var u=m(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),z=document.createElement("div"); -z.style.display="inline-block";z.style.verticalAlign="top";z.style.fontFamily="Helvetica,Arial";z.style.marginTop="8px";z.style.fontSize="14px";z.style.color="#ffffff";this.chromelessToolbar.appendChild(z);var B=m(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,mxResources.get("nextPage")),c=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(z.innerHTML="",mxUtils.write(z,mxUtils.indexOf(this.pages, -this.currentPage)+1+" / "+this.pages.length))});u.style.paddingLeft="0px";u.style.paddingRight="4px";B.style.paddingLeft="4px";B.style.paddingRight="0px";var e=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(B.style.display="",u.style.display="",z.style.display="inline-block"):(B.style.display="none",u.style.display="none",z.style.display="none");c()});this.editor.addListener("resetGraphView",e);this.editor.addListener("pageSelected",c);m(mxUtils.bind(this, +b);a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",c);e.appendChild(a);this.chromelessToolbar.appendChild(e);return e});null!=l.backBtn&&m(mxUtils.bind(this,function(a){window.location.href=l.backBtn.url;mxEvent.consume(a)}),Editor.backLargeImage,mxResources.get("back",null,"Back"));var u=m(mxUtils.bind(this,function(a){this.actions.get("previousPage").funct();mxEvent.consume(a)}),Editor.previousLargeImage,mxResources.get("previousPage")),A=document.createElement("div"); +A.style.display="inline-block";A.style.verticalAlign="top";A.style.fontFamily="Helvetica,Arial";A.style.marginTop="8px";A.style.fontSize="14px";A.style.color="#ffffff";this.chromelessToolbar.appendChild(A);var B=m(mxUtils.bind(this,function(a){this.actions.get("nextPage").funct();mxEvent.consume(a)}),Editor.nextLargeImage,mxResources.get("nextPage")),c=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&(A.innerHTML="",mxUtils.write(A,mxUtils.indexOf(this.pages, +this.currentPage)+1+" / "+this.pages.length))});u.style.paddingLeft="0px";u.style.paddingRight="4px";B.style.paddingLeft="4px";B.style.paddingRight="0px";var e=mxUtils.bind(this,function(){null!=this.pages&&1<this.pages.length&&null!=this.currentPage?(B.style.display="",u.style.display="",A.style.display="inline-block"):(B.style.display="none",u.style.display="none",A.style.display="none");c()});this.editor.addListener("resetGraphView",e);this.editor.addListener("pageSelected",c);m(mxUtils.bind(this, function(a){this.actions.get("zoomOut").funct();mxEvent.consume(a)}),Editor.zoomOutLargeImage,mxResources.get("zoomOut")+" (Alt+Mousewheel)");m(mxUtils.bind(this,function(a){this.actions.get("zoomIn").funct();mxEvent.consume(a)}),Editor.zoomInLargeImage,mxResources.get("zoomIn")+" (Alt+Mousewheel)");m(mxUtils.bind(this,function(c){a.isLightboxView()?(1==a.view.scale?this.lightboxFit():a.zoomTo(1),this.chromelessResize(!1)):this.chromelessResize(!0);mxEvent.consume(c)}),Editor.actualSizeLargeImage, mxResources.get("fit"));var k=null,q=null,n=mxUtils.bind(this,function(a){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=q&&(window.clearTimeout(q),fadeThead2=null);k=window.setTimeout(mxUtils.bind(this,function(){mxUtils.setOpacity(this.chromelessToolbar,0);k=null;q=window.setTimeout(mxUtils.bind(this,function(){this.chromelessToolbar.style.display="none";q=null}),600)}),a||200)}),g=mxUtils.bind(this,function(a){null!=k&&(window.clearTimeout(k),fadeThead=null);null!=q&&(window.clearTimeout(q), -fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var A=m(mxUtils.bind(this,function(c){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog= -null}));var b=A.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=b.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+ -this.chromelessToolbar.offsetHeight+4+"px";b=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=b.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(c)}),Editor.layersLargeImage,mxResources.get("layers")),x=a.getModel();x.addListener(mxEvent.CHANGE,function(){A.style.display=1<x.getChildCount(x.root)?"":"none"})}this.addChromelessToolbarItems(m);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||m(mxUtils.bind(this,function(c){null!= -this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(c)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(e=0;e<this.lightboxToolbarActions.length;e++){var t=this.lightboxToolbarActions[e];m(t.fn,t.icon,t.tooltip)}null!=l.refreshBtn&&m(mxUtils.bind(this,function(a){l.refreshBtn.url?window.location.href=l.refreshBtn.url: +fadeThead2=null);this.chromelessToolbar.style.display="";mxUtils.setOpacity(this.chromelessToolbar,a||30)});if("1"==urlParams.layers){this.layersDialog=null;var z=m(mxUtils.bind(this,function(c){if(null!=this.layersDialog)this.layersDialog.parentNode.removeChild(this.layersDialog),this.layersDialog=null;else{this.layersDialog=a.createLayersDialog();mxEvent.addListener(this.layersDialog,"mouseleave",mxUtils.bind(this,function(){this.layersDialog.parentNode.removeChild(this.layersDialog);this.layersDialog= +null}));var b=z.getBoundingClientRect();mxUtils.setPrefixedStyle(this.layersDialog.style,"borderRadius","5px");this.layersDialog.style.position="fixed";this.layersDialog.style.fontFamily="Helvetica,Arial";this.layersDialog.style.backgroundColor="#000000";this.layersDialog.style.width="160px";this.layersDialog.style.padding="4px 2px 4px 2px";this.layersDialog.style.color="#ffffff";mxUtils.setOpacity(this.layersDialog,70);this.layersDialog.style.left=b.left+"px";this.layersDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+ +this.chromelessToolbar.offsetHeight+4+"px";b=mxUtils.getCurrentStyle(this.editor.graph.container);this.layersDialog.style.zIndex=b.zIndex;document.body.appendChild(this.layersDialog)}mxEvent.consume(c)}),Editor.layersLargeImage,mxResources.get("layers")),x=a.getModel();x.addListener(mxEvent.CHANGE,function(){z.style.display=1<x.getChildCount(x.root)?"":"none"})}this.addChromelessToolbarItems(m);null==this.editor.editButtonLink&&null==this.editor.editButtonFunc||m(mxUtils.bind(this,function(c){null!= +this.editor.editButtonFunc?this.editor.editButtonFunc():"_blank"==this.editor.editButtonLink?this.editor.editAsNew(this.getEditBlankXml()):a.openLink(this.editor.editButtonLink,"editWindow");mxEvent.consume(c)}),Editor.editLargeImage,mxResources.get("edit"));if(null!=this.lightboxToolbarActions)for(e=0;e<this.lightboxToolbarActions.length;e++){var v=this.lightboxToolbarActions[e];m(v.fn,v.icon,v.tooltip)}null!=l.refreshBtn&&m(mxUtils.bind(this,function(a){l.refreshBtn.url?window.location.href=l.refreshBtn.url: window.location.reload();mxEvent.consume(a)}),Editor.refreshLargeImage,mxResources.get("refresh",null,"Refresh"));null!=l.fullscreenBtn&&window.self!==window.top&&m(mxUtils.bind(this,function(c){l.fullscreenBtn.url?a.openLink(l.fullscreenBtn.url):a.openLink(window.location.href);mxEvent.consume(c)}),Editor.fullscreenLargeImage,mxResources.get("openInNewWindow",null,"Open in New Window"));(l.closeBtn&&window.self===window.top||a.lightbox&&("1"==urlParams.close||this.container!=document.body))&&m(mxUtils.bind(this, function(a){"1"==urlParams.close||l.closeBtn?window.close():(this.destroy(),mxEvent.consume(a))}),Editor.closeLargeImage,mxResources.get("close")+" (Escape)");this.chromelessToolbar.style.display="none";a.isViewer()||mxUtils.setPrefixedStyle(this.chromelessToolbar.style,"transform","translate(-50%,0)");a.container.appendChild(this.chromelessToolbar);mxEvent.addListener(a.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(mxEvent.isShiftDown(a)|| g(30),n())}));mxEvent.addListener(this.chromelessToolbar,mxClient.IS_POINTER?"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(this.chromelessToolbar,"mouseenter",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100)}));mxEvent.addListener(this.chromelessToolbar,"mousemove",mxUtils.bind(this,function(a){mxEvent.isShiftDown(a)?n():g(100);mxEvent.consume(a)}));mxEvent.addListener(this.chromelessToolbar,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)|| -g(30)}));var H=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(c,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,c){},mouseUp:function(c,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<H&&Math.abs(this.scrollTop-a.container.scrollTop)<H&&Math.abs(this.startX-b.getGraphX())<H&&Math.abs(this.startY-b.getGraphY())< -H&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?n():g(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var y=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),c=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*c.width;this.translate.y=a.y-(this.y0||0)*c.height}y.apply(this,arguments)};if(!a.isViewer()){var F=a.sizeDidChange;a.sizeDidChange= +g(30)}));var I=a.getTolerance();a.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(c,b){this.startX=b.getGraphX();this.startY=b.getGraphY();this.scrollLeft=a.container.scrollLeft;this.scrollTop=a.container.scrollTop},mouseMove:function(a,c){},mouseUp:function(c,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-a.container.scrollLeft)<I&&Math.abs(this.scrollTop-a.container.scrollTop)<I&&Math.abs(this.startX-b.getGraphX())<I&&Math.abs(this.startY-b.getGraphY())< +I&&(0<parseFloat(f.chromelessToolbar.style.opacity||0)?n():g(30))}})}this.editor.editable||this.addChromelessClickHandler()}else if(this.editor.extendCanvas){var y=a.view.validate;a.view.validate=function(){if(null!=this.graph.container&&mxUtils.hasScrollbars(this.graph.container)){var a=this.graph.getPagePadding(),c=this.graph.getPageSize();this.translate.x=a.x-(this.x0||0)*c.width;this.translate.y=a.y-(this.y0||0)*c.height}y.apply(this,arguments)};if(!a.isViewer()){var F=a.sizeDidChange;a.sizeDidChange= function(){if(null!=this.container&&mxUtils.hasScrollbars(this.container)){var c=this.getPageLayout(),b=this.getPagePadding(),e=this.getPageSize(),d=Math.ceil(2*b.x+c.width*e.width),k=Math.ceil(2*b.y+c.height*e.height),g=a.minimumGraphSize;if(null==g||g.width!=d||g.height!=k)a.minimumGraphSize=new mxRectangle(0,0,d,k);d=b.x-c.x*e.width;b=b.y-c.y*e.height;this.autoTranslate||this.view.translate.x==d&&this.view.translate.y==b?F.apply(this,arguments):(this.autoTranslate=!0,this.view.x0=c.x,this.view.y0= -c.y,c=a.view.translate.x,e=a.view.translate.y,a.view.setTranslate(d,b),a.container.scrollLeft+=Math.round((d-c)*a.view.scale),a.container.scrollTop+=Math.round((b-e)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var C=a.view.getBackgroundPane(),v=a.view.getDrawPane();a.cumulativeZoomFactor=1;var J=null,M=null,I=null,P=null,D=function(c){null!=J&&window.clearTimeout(J);window.setTimeout(function(){a.isMouseDown||(J=window.setTimeout(mxUtils.bind(this, -function(){a.isFastZoomEnabled()&&(null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform-origin",null),mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform",null)),v.style.transformOrigin="",C.style.transformOrigin="",mxClient.IS_SF?(v.style.transform="scale(1)",C.style.transform="scale(1)",window.setTimeout(function(){v.style.transform="";C.style.transform=""},0)):(v.style.transform= -"",C.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var c=new mxPoint(a.container.scrollLeft,a.container.scrollTop),e=mxUtils.getOffset(a.container),d=a.view.scale,k=0,g=0;null!=M&&(k=a.container.offsetWidth/2-M.x+e.x,g=a.container.offsetHeight/2-M.y+e.y);a.zoom(a.cumulativeZoomFactor);a.view.scale!=d&&(null!=I&&(k+=c.x-I.x,g+=c.y-I.y),null!=b&&f.chromelessResize(!1,null,k*(a.cumulativeZoomFactor-1),g*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)|| -0==k&&0==g||(a.container.scrollLeft-=k*(a.cumulativeZoomFactor-1),a.container.scrollTop-=g*(a.cumulativeZoomFactor-1)));null!=P&&v.setAttribute("filter",P);a.cumulativeZoomFactor=1;P=M=I=J=null}),null!=c?c:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay))},0)};a.lazyZoom=function(c,b,e){(b=b||!a.scrollbars)&&(M=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));c?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*= +c.y,c=a.view.translate.x,e=a.view.translate.y,a.view.setTranslate(d,b),a.container.scrollLeft+=Math.round((d-c)*a.view.scale),a.container.scrollTop+=Math.round((b-e)*a.view.scale),this.autoTranslate=!1)}else this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",this.getGraphBounds()))}}}var C=a.view.getBackgroundPane(),t=a.view.getDrawPane();a.cumulativeZoomFactor=1;var J=null,M=null,G=null,P=null,E=function(c){null!=J&&window.clearTimeout(J);window.setTimeout(function(){a.isMouseDown||(J=window.setTimeout(mxUtils.bind(this, +function(){a.isFastZoomEnabled()&&(null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform-origin",null),mxUtils.setPrefixedStyle(a.view.backgroundPageShape.node.style,"transform",null)),t.style.transformOrigin="",C.style.transformOrigin="",mxClient.IS_SF?(t.style.transform="scale(1)",C.style.transform="scale(1)",window.setTimeout(function(){t.style.transform="";C.style.transform=""},0)):(t.style.transform= +"",C.style.transform=""),a.view.getDecoratorPane().style.opacity="",a.view.getOverlayPane().style.opacity="");var c=new mxPoint(a.container.scrollLeft,a.container.scrollTop),e=mxUtils.getOffset(a.container),d=a.view.scale,k=0,g=0;null!=M&&(k=a.container.offsetWidth/2-M.x+e.x,g=a.container.offsetHeight/2-M.y+e.y);a.zoom(a.cumulativeZoomFactor);a.view.scale!=d&&(null!=G&&(k+=c.x-G.x,g+=c.y-G.y),null!=b&&f.chromelessResize(!1,null,k*(a.cumulativeZoomFactor-1),g*(a.cumulativeZoomFactor-1)),!mxUtils.hasScrollbars(a.container)|| +0==k&&0==g||(a.container.scrollLeft-=k*(a.cumulativeZoomFactor-1),a.container.scrollTop-=g*(a.cumulativeZoomFactor-1)));null!=P&&t.setAttribute("filter",P);a.cumulativeZoomFactor=1;P=M=G=J=null}),null!=c?c:a.isFastZoomEnabled()?f.wheelZoomDelay:f.lazyZoomDelay))},0)};a.lazyZoom=function(c,b,e){(b=b||!a.scrollbars)&&(M=new mxPoint(a.container.offsetLeft+a.container.clientWidth/2,a.container.offsetTop+a.container.clientHeight/2));c?.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*= (this.view.scale+.05)/this.view.scale:(this.cumulativeZoomFactor*=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale):.15>=this.view.scale*this.cumulativeZoomFactor?this.cumulativeZoomFactor*=(this.view.scale-.05)/this.view.scale:(this.cumulativeZoomFactor/=this.zoomFactor,this.cumulativeZoomFactor=Math.round(this.view.scale*this.cumulativeZoomFactor*20)/20/this.view.scale);this.cumulativeZoomFactor=Math.max(.05,Math.min(this.view.scale* -this.cumulativeZoomFactor,160))/this.view.scale;if(a.isFastZoomEnabled()){null==P&&""!=v.getAttribute("filter")&&(P=v.getAttribute("filter"),v.removeAttribute("filter"));I=new mxPoint(a.container.scrollLeft,a.container.scrollTop);c=b?a.container.scrollLeft+a.container.clientWidth/2:M.x+a.container.scrollLeft-a.container.offsetLeft;var d=b?a.container.scrollTop+a.container.clientHeight/2:M.y+a.container.scrollTop-a.container.offsetTop;v.style.transformOrigin=c+"px "+d+"px";v.style.transform="scale("+ +this.cumulativeZoomFactor,160))/this.view.scale;if(a.isFastZoomEnabled()){null==P&&""!=t.getAttribute("filter")&&(P=t.getAttribute("filter"),t.removeAttribute("filter"));G=new mxPoint(a.container.scrollLeft,a.container.scrollTop);c=b?a.container.scrollLeft+a.container.clientWidth/2:M.x+a.container.scrollLeft-a.container.offsetLeft;var d=b?a.container.scrollTop+a.container.clientHeight/2:M.y+a.container.scrollTop-a.container.offsetTop;t.style.transformOrigin=c+"px "+d+"px";t.style.transform="scale("+ this.cumulativeZoomFactor+")";C.style.transformOrigin=c+"px "+d+"px";C.style.transform="scale("+this.cumulativeZoomFactor+")";null!=a.view.backgroundPageShape&&null!=a.view.backgroundPageShape.node&&(c=a.view.backgroundPageShape.node,mxUtils.setPrefixedStyle(c.style,"transform-origin",(b?a.container.clientWidth/2+a.container.scrollLeft-c.offsetLeft+"px":M.x+a.container.scrollLeft-c.offsetLeft-a.container.offsetLeft+"px")+" "+(b?a.container.clientHeight/2+a.container.scrollTop-c.offsetTop+"px":M.y+ -a.container.scrollTop-c.offsetTop-a.container.offsetTop+"px")),mxUtils.setPrefixedStyle(c.style,"transform","scale("+this.cumulativeZoomFactor+")"));a.view.getDecoratorPane().style.opacity="0";a.view.getOverlayPane().style.opacity="0";null!=f.hoverIcons&&f.hoverIcons.reset()}D(e)};mxEvent.addGestureListeners(a.container,function(a){null!=J&&window.clearTimeout(J)},null,function(c){1!=a.cumulativeZoomFactor&&D(0)});mxEvent.addListener(a.container,"scroll",function(){J&&!a.isMouseDown&&1!=a.cumulativeZoomFactor&& -D(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(c,b,e){if(null==this.dialogs||0==this.dialogs.length)if(!a.scrollbars&&!a.isZoomWheelEvent(c)){e=a.view.getTranslate();var d=40/a.view.scale;mxEvent.isShiftDown(c)?a.view.setTranslate(e.x+(b?-d:d),e.y):a.view.setTranslate(e.x,e.y+(b?d:-d))}else if(e||a.isZoomWheelEvent(c))for(e=mxEvent.getSource(c);null!=e;){if(e==a.container)return a.tooltipHandler.hideTooltip(),M=new mxPoint(mxEvent.getClientX(c),mxEvent.getClientY(c)),a.lazyZoom(b), +a.container.scrollTop-c.offsetTop-a.container.offsetTop+"px")),mxUtils.setPrefixedStyle(c.style,"transform","scale("+this.cumulativeZoomFactor+")"));a.view.getDecoratorPane().style.opacity="0";a.view.getOverlayPane().style.opacity="0";null!=f.hoverIcons&&f.hoverIcons.reset()}E(e)};mxEvent.addGestureListeners(a.container,function(a){null!=J&&window.clearTimeout(J)},null,function(c){1!=a.cumulativeZoomFactor&&E(0)});mxEvent.addListener(a.container,"scroll",function(){J&&!a.isMouseDown&&1!=a.cumulativeZoomFactor&& +E(0)});mxEvent.addMouseWheelListener(mxUtils.bind(this,function(c,b,e){if(null==this.dialogs||0==this.dialogs.length)if(!a.scrollbars&&!a.isZoomWheelEvent(c)){e=a.view.getTranslate();var d=40/a.view.scale;mxEvent.isShiftDown(c)?a.view.setTranslate(e.x+(b?-d:d),e.y):a.view.setTranslate(e.x,e.y+(b?d:-d))}else if(e||a.isZoomWheelEvent(c))for(e=mxEvent.getSource(c);null!=e;){if(e==a.container)return a.tooltipHandler.hideTooltip(),M=new mxPoint(mxEvent.getClientX(c),mxEvent.getClientY(c)),a.lazyZoom(b), mxEvent.consume(c),!1;e=e.parentNode}}),a.container);a.panningHandler.zoomGraph=function(c){a.cumulativeZoomFactor=c.scale;a.lazyZoom(0<c.scale,!0);mxEvent.consume(c)}};EditorUi.prototype.addChromelessToolbarItems=function(a){a(mxUtils.bind(this,function(a){this.actions.get("print").funct();mxEvent.consume(a)}),Editor.printLargeImage,mxResources.get("print"))}; EditorUi.prototype.createTemporaryGraph=function(a){a=new Graph(document.createElement("div"),null,null,a);a.resetViewOnRootChange=!1;a.setConnectable(!1);a.gridEnabled=!1;a.autoScroll=!1;a.setTooltips(!1);a.setEnabled(!1);a.container.style.visibility="hidden";a.container.style.position="absolute";a.container.style.overflow="hidden";a.container.style.height="1px";a.container.style.width="1px";return a}; EditorUi.prototype.addChromelessClickHandler=function(){var a=urlParams.highlight;null!=a&&0<a.length&&(a="#"+a);this.editor.graph.addClickHandler(a)};EditorUi.prototype.toggleFormatPanel=function(a){null!=this.format&&(this.formatWidth=a||0<this.formatWidth?0:240,this.formatContainer.style.display=a||0<this.formatWidth?"":"none",this.refresh(),this.format.refresh(),this.fireEvent(new mxEventObject("formatWidthChanged")))}; @@ -2199,11 +2199,11 @@ this.actions.get("collapsible").setEnabled(f&&(a.isContainer(a.getSelectionCell( this.actions.get("editLink").setEnabled(1==a.getSelectionCount());this.actions.get("openLink").setEnabled(1==a.getSelectionCount()&&null!=a.getLinkForCell(a.getSelectionCell()));this.actions.get("guides").setEnabled(a.isEnabled());this.actions.get("grid").setEnabled(!this.editor.chromeless||this.editor.editable);b=a.isEnabled()&&!a.isCellLocked(a.getDefaultParent());this.menus.get("layout").setEnabled(b);this.menus.get("insert").setEnabled(b);this.menus.get("direction").setEnabled(b&&f);this.menus.get("align").setEnabled(b&& f&&1<a.getSelectionCount());this.menus.get("distribute").setEnabled(b&&f&&1<a.getSelectionCount());this.actions.get("selectVertices").setEnabled(b);this.actions.get("selectEdges").setEnabled(b);this.actions.get("selectAll").setEnabled(b);this.actions.get("selectNone").setEnabled(b);this.updatePasteActionStates()};EditorUi.prototype.zeroOffset=new mxPoint(0,0);EditorUi.prototype.getDiagramContainerOffset=function(){return this.zeroOffset}; EditorUi.prototype.refresh=function(a){a=null!=a?a:!0;var b=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),f=this.container.clientWidth,d=this.container.clientHeight;this.container==document.body&&(f=document.body.clientWidth||document.documentElement.clientWidth,d=b?document.body.clientHeight||document.documentElement.clientHeight:document.documentElement.clientHeight);var l=0;mxClient.IS_IOS&&!window.navigator.standalone&&window.innerHeight!=document.documentElement.clientHeight&& -(l=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var m=Math.max(0,Math.min(this.hsplitPosition,f-this.splitSize-20)),p=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",p+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",p+=this.toolbarHeight);0<p&&!mxClient.IS_QUIRKS&&(p+=1);var u=0;if(null!=this.sidebarFooterContainer){var z= -this.footerHeight+l,u=Math.max(0,Math.min(d-p-z,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=m+"px";this.sidebarFooterContainer.style.height=u+"px";this.sidebarFooterContainer.style.bottom=z+"px"}z=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=p+"px";this.sidebarContainer.style.width=m+"px";this.formatContainer.style.top=p+"px";this.formatContainer.style.width=z+"px";this.formatContainer.style.display=null!=this.format?"":"none";var B=this.getDiagramContainerOffset(), +(l=document.documentElement.clientHeight-window.innerHeight,window.scrollTo(0,0));var m=Math.max(0,Math.min(this.hsplitPosition,f-this.splitSize-20)),p=0;null!=this.menubar&&(this.menubarContainer.style.height=this.menubarHeight+"px",p+=this.menubarHeight);null!=this.toolbar&&(this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px",p+=this.toolbarHeight);0<p&&!mxClient.IS_QUIRKS&&(p+=1);var u=0;if(null!=this.sidebarFooterContainer){var A= +this.footerHeight+l,u=Math.max(0,Math.min(d-p-A,this.sidebarFooterHeight));this.sidebarFooterContainer.style.width=m+"px";this.sidebarFooterContainer.style.height=u+"px";this.sidebarFooterContainer.style.bottom=A+"px"}A=null!=this.format?this.formatWidth:0;this.sidebarContainer.style.top=p+"px";this.sidebarContainer.style.width=m+"px";this.formatContainer.style.top=p+"px";this.formatContainer.style.width=A+"px";this.formatContainer.style.display=null!=this.format?"":"none";var B=this.getDiagramContainerOffset(), c=null!=this.hsplit.parentNode?m+this.splitSize:0;this.diagramContainer.style.left=c+B.x+"px";this.diagramContainer.style.top=p+B.y+"px";this.footerContainer.style.height=this.footerHeight+"px";this.hsplit.style.top=this.sidebarContainer.style.top;this.hsplit.style.bottom=this.footerHeight+l+"px";this.hsplit.style.left=m+"px";this.footerContainer.style.display=0==this.footerHeight?"none":"";null!=this.tabContainer&&(this.tabContainer.style.left=c+"px");b?(this.menubarContainer.style.width=f+"px", -this.toolbarContainer.style.width=this.menubarContainer.style.width,b=Math.max(0,d-this.footerHeight-this.menubarHeight-this.toolbarHeight),this.sidebarContainer.style.height=b-u+"px",this.formatContainer.style.height=b+"px",this.diagramContainer.style.width=null!=this.hsplit.parentNode?Math.max(0,f-m-this.splitSize-z)+"px":f+"px",this.footerContainer.style.width=this.menubarContainer.style.width,u=Math.max(0,d-this.footerHeight-this.menubarHeight-this.toolbarHeight),null!=this.tabContainer&&(this.tabContainer.style.width= -this.diagramContainer.style.width,this.tabContainer.style.bottom=this.footerHeight+l+"px",u-=this.tabContainer.clientHeight),this.diagramContainer.style.height=u+"px",this.hsplit.style.height=u+"px"):(0<this.footerHeight&&(this.footerContainer.style.bottom=l+"px"),this.diagramContainer.style.right=z+"px",f=0,null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+l+"px",this.tabContainer.style.right=this.diagramContainer.style.right,f=this.tabContainer.clientHeight),this.sidebarContainer.style.bottom= +this.toolbarContainer.style.width=this.menubarContainer.style.width,b=Math.max(0,d-this.footerHeight-this.menubarHeight-this.toolbarHeight),this.sidebarContainer.style.height=b-u+"px",this.formatContainer.style.height=b+"px",this.diagramContainer.style.width=null!=this.hsplit.parentNode?Math.max(0,f-m-this.splitSize-A)+"px":f+"px",this.footerContainer.style.width=this.menubarContainer.style.width,u=Math.max(0,d-this.footerHeight-this.menubarHeight-this.toolbarHeight),null!=this.tabContainer&&(this.tabContainer.style.width= +this.diagramContainer.style.width,this.tabContainer.style.bottom=this.footerHeight+l+"px",u-=this.tabContainer.clientHeight),this.diagramContainer.style.height=u+"px",this.hsplit.style.height=u+"px"):(0<this.footerHeight&&(this.footerContainer.style.bottom=l+"px"),this.diagramContainer.style.right=A+"px",f=0,null!=this.tabContainer&&(this.tabContainer.style.bottom=this.footerHeight+l+"px",this.tabContainer.style.right=this.diagramContainer.style.right,f=this.tabContainer.clientHeight),this.sidebarContainer.style.bottom= this.footerHeight+u+l+"px",this.formatContainer.style.bottom=this.footerHeight+l+"px",this.diagramContainer.style.bottom=this.footerHeight+l+f+"px");a&&this.editor.graph.sizeDidChange()};EditorUi.prototype.createTabContainer=function(){return null}; EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer");this.toolbarContainer=this.createDiv("geToolbarContainer");this.sidebarContainer=this.createDiv("geSidebarContainer");this.formatContainer=this.createDiv("geSidebarContainer geFormatContainer");this.diagramContainer=this.createDiv("geDiagramContainer");this.footerContainer=this.createDiv("geFooterContainer");this.hsplit=this.createDiv("geHsplit");this.hsplit.setAttribute("title",mxResources.get("collapseExpand")); this.menubarContainer.style.top="0px";this.menubarContainer.style.left="0px";this.menubarContainer.style.right="0px";this.toolbarContainer.style.left="0px";this.toolbarContainer.style.right="0px";this.sidebarContainer.style.left="0px";this.formatContainer.style.right="0px";this.formatContainer.style.zIndex="1";this.diagramContainer.style.right=(null!=this.format?this.formatWidth:0)+"px";this.footerContainer.style.left="0px";this.footerContainer.style.right="0px";this.footerContainer.style.bottom= @@ -2213,10 +2213,10 @@ this.sidebar=this.editor.chromeless?null:this.createSidebar(this.sidebarContaine this.container.appendChild(this.sidebarFooterContainer);this.container.appendChild(this.diagramContainer);null!=this.container&&null!=this.tabContainer&&this.container.appendChild(this.tabContainer);this.toolbar=this.editor.chromeless?null:this.createToolbar(this.createDiv("geToolbar"));null!=this.toolbar&&(this.toolbarContainer.appendChild(this.toolbar.container),this.container.appendChild(this.toolbarContainer));null!=this.sidebar&&(this.container.appendChild(this.hsplit),this.addSplitHandler(this.hsplit, !0,0,mxUtils.bind(this,function(a){this.hsplitPosition=a;this.refresh()})))};EditorUi.prototype.createStatusContainer=function(){var a=document.createElement("a");a.className="geItem geStatus";420>screen.width&&(a.style.maxWidth=Math.max(20,screen.width-320)+"px",a.style.overflow="hidden");return a};EditorUi.prototype.setStatusText=function(a){this.statusContainer.innerHTML=a};EditorUi.prototype.createToolbar=function(a){return new Toolbar(this,a)}; EditorUi.prototype.createSidebar=function(a){return new Sidebar(this,a)};EditorUi.prototype.createFormat=function(a){return new Format(this,a)};EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")};EditorUi.prototype.createDiv=function(a){var b=document.createElement("div");b.className=a;return b}; -EditorUi.prototype.addSplitHandler=function(a,b,f,d){function l(a){if(null!=p){var e=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a));d(Math.max(0,u+(b?e.x-p.x:p.y-e.y)-f));mxEvent.consume(a);u!=c()&&(z=!0,B=null)}}function m(a){l(a);p=u=null}var p=null,u=null,z=!0,B=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var c=mxUtils.bind(this,function(){var c=parseInt(b?a.style.left:a.style.bottom);b||(c=c+f-this.footerHeight);return c});mxEvent.addGestureListeners(a,function(a){p=new mxPoint(mxEvent.getClientX(a), -mxEvent.getClientY(a));u=c();z=!1;mxEvent.consume(a)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){if(!z&&this.hsplitClickEnabled){var b=null!=B?B-f:0;B=c();d(b);mxEvent.consume(a)}}));mxEvent.addGestureListeners(document,null,l,m);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,l,m)})}; +EditorUi.prototype.addSplitHandler=function(a,b,f,d){function l(a){if(null!=p){var e=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a));d(Math.max(0,u+(b?e.x-p.x:p.y-e.y)-f));mxEvent.consume(a);u!=c()&&(A=!0,B=null)}}function m(a){l(a);p=u=null}var p=null,u=null,A=!0,B=null;mxClient.IS_POINTER&&(a.style.touchAction="none");var c=mxUtils.bind(this,function(){var c=parseInt(b?a.style.left:a.style.bottom);b||(c=c+f-this.footerHeight);return c});mxEvent.addGestureListeners(a,function(a){p=new mxPoint(mxEvent.getClientX(a), +mxEvent.getClientY(a));u=c();A=!1;mxEvent.consume(a)});mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){if(!A&&this.hsplitClickEnabled){var b=null!=B?B-f:0;B=c();d(b);mxEvent.consume(a)}}));mxEvent.addGestureListeners(document,null,l,m);this.destroyFunctions.push(function(){mxEvent.removeGestureListeners(document,null,l,m)})}; EditorUi.prototype.handleError=function(a,b,f,d,l){a=null!=a&&null!=a.error?a.error:a;if(null!=a||null!=b){l=mxUtils.htmlEntities(mxResources.get("unknownError"));var m=mxResources.get("ok");b=null!=b?b:mxResources.get("error");null!=a&&null!=a.message&&(l=mxUtils.htmlEntities(a.message));this.showError(b,l,m,f,null,null,null,null,null,null,null,null,d?f:null)}else null!=f&&f()}; -EditorUi.prototype.showError=function(a,b,f,d,l,m,p,u,z,B,c,e,k){a=new ErrorDialog(this,a,b,f||mxResources.get("ok"),d,l,m,p,e,u,z);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,B||340,c||100+20*b,!0,!1,k);a.init()};EditorUi.prototype.showDialog=function(a,b,f,d,l,m,p,u,z,B){this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,d,l,m,p,u,z,B);this.dialogs.push(this.dialog)}; +EditorUi.prototype.showError=function(a,b,f,d,l,m,p,u,A,B,c,e,k){a=new ErrorDialog(this,a,b,f||mxResources.get("ok"),d,l,m,p,e,u,A);b=Math.ceil(null!=b?b.length/50:1);this.showDialog(a.container,B||340,c||100+20*b,!0,!1,k);a.init()};EditorUi.prototype.showDialog=function(a,b,f,d,l,m,p,u,A,B){this.editor.graph.tooltipHandler.hideTooltip();null==this.dialogs&&(this.dialogs=[]);this.dialog=new Dialog(this,a,b,f,d,l,m,p,u,A,B);this.dialogs.push(this.dialog)}; EditorUi.prototype.hideDialog=function(a,b){if(null!=this.dialogs&&0<this.dialogs.length){var f=this.dialogs.pop();0==f.close(a,b)?this.dialogs.push(f):(this.dialog=0<this.dialogs.length?this.dialogs[this.dialogs.length-1]:null,this.editor.fireEvent(new mxEventObject("hideDialog")),null==this.dialog&&"hidden"!=this.editor.graph.container.style.visibility&&window.setTimeout(mxUtils.bind(this,function(){this.editor.graph.isEditing()&&null!=this.editor.graph.cellEditor.textarea?this.editor.graph.cellEditor.textarea.focus(): (mxUtils.clearSelection(),this.editor.graph.container.focus())}),0))}};EditorUi.prototype.pickColor=function(a,b){var f=this.editor.graph,d=f.cellEditor.saveSelection(),l=226+17*(Math.ceil(ColorDialog.prototype.presetColors.length/12)+Math.ceil(ColorDialog.prototype.defaultColors.length/12)),m=new ColorDialog(this,a||"none",function(a){f.cellEditor.restoreSelection(d);b(a)},function(){f.cellEditor.restoreSelection(d)});this.showDialog(m.container,230,l,!0,!1);m.init()}; EditorUi.prototype.openFile=function(){window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));this.showDialog((new OpenDialog(this)).container,Editor.useLocalStorage?640:320,Editor.useLocalStorage?480:220,!0,!0,function(){window.openFile=null})}; @@ -2235,8 +2235,8 @@ EditorUi.prototype.createKeyHandler=function(a){function b(a,c,b){p.push(functio d.getSelectionCell(),n=d.model.getParent(f),e=null;1==d.getSelectionCount()&&d.model.isVertex(f)&&null!=d.layoutManager&&!d.isCellLocked(f)&&(e=d.layoutManager.getLayout(n));if(null!=e&&e.constructor==mxStackLayout)e=n.getIndex(f),37==a||38==a?d.model.add(n,f,Math.max(0,e-1)):39!=a&&40!=a||d.model.add(n,f,Math.min(d.model.getChildCount(n),e+1));else{e=d.getMovableCells(d.getSelectionCells());f=[];for(k=0;k<e.length;k++)n=d.view.getState(e[k]),n=null!=n?n.style:d.getCellStyle(e[k]),"1"==mxUtils.getValue(n, "part","0")?(n=d.model.getParent(e[k]),d.model.isVertex(n)&&0>mxUtils.indexOf(e,n)&&f.push(n)):f.push(e[k]);0<f.length&&(k=e=0,37==a?e=-c:38==a?k=-c:39==a?e=c:40==a&&(k=c),d.moveCells(f,e,k))}}});null!=u&&window.clearTimeout(u);u=window.setTimeout(function(){if(0<p.length){d.getModel().beginUpdate();try{for(var a=0;a<p.length;a++)p[a]();p=[]}finally{d.getModel().endUpdate()}}},200)}var f=this,d=this.editor.graph,l=new mxKeyHandler(d),m=l.isEventIgnored;l.isEventIgnored=function(a){return(!this.isControlDown(a)|| mxEvent.isShiftDown(a)||90!=a.keyCode&&89!=a.keyCode&&188!=a.keyCode&&190!=a.keyCode&&85!=a.keyCode)&&(66!=a.keyCode&&73!=a.keyCode||!this.isControlDown(a)||this.graph.cellEditor.isContentEditing()&&!mxClient.IS_FF&&!mxClient.IS_SF)&&m.apply(this,arguments)};l.isEnabledForEvent=function(a){return!mxEvent.isConsumed(a)&&this.isGraphEvent(a)&&this.isEnabled()&&(null==f.dialogs||0==f.dialogs.length)};l.isControlDown=function(a){return mxEvent.isControlDown(a)||mxClient.IS_MAC&&a.metaKey};var p=[],u= -null,z={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},B=l.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(d.isEnabled()){if(mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){var c=f.actions.get(f.altShiftActions[a.keyCode]);if(null!=c)return c.funct}if(9==a.keyCode&&mxEvent.isAltDown(a))return mxEvent.isShiftDown(a)?function(){d.selectParentCell()}:function(){d.selectChildCell()};if(null!=z[a.keyCode]&&!d.isSelectionEmpty())if(!this.isControlDown(a)&& -mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){if(d.model.isVertex(d.getSelectionCell()))return function(){var c=d.connectVertex(d.getSelectionCell(),z[a.keyCode],d.defaultEdgeLength,a,!0);null!=c&&0<c.length&&(1==c.length&&d.model.isEdge(c[0])?d.setSelectionCell(d.model.getTerminal(c[0],!1)):d.setSelectionCell(c[c.length-1]),d.scrollCellToVisible(d.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(d.view.getState(d.getSelectionCell())))}}else return this.isControlDown(a)?function(){b(a.keyCode, +null,A={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},B=l.getFunction;mxKeyHandler.prototype.getFunction=function(a){if(d.isEnabled()){if(mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){var c=f.actions.get(f.altShiftActions[a.keyCode]);if(null!=c)return c.funct}if(9==a.keyCode&&mxEvent.isAltDown(a))return mxEvent.isShiftDown(a)?function(){d.selectParentCell()}:function(){d.selectChildCell()};if(null!=A[a.keyCode]&&!d.isSelectionEmpty())if(!this.isControlDown(a)&& +mxEvent.isShiftDown(a)&&mxEvent.isAltDown(a)){if(d.model.isVertex(d.getSelectionCell()))return function(){var c=d.connectVertex(d.getSelectionCell(),A[a.keyCode],d.defaultEdgeLength,a,!0);null!=c&&0<c.length&&(1==c.length&&d.model.isEdge(c[0])?d.setSelectionCell(d.model.getTerminal(c[0],!1)):d.setSelectionCell(c[c.length-1]),d.scrollCellToVisible(d.getSelectionCell()),null!=f.hoverIcons&&f.hoverIcons.update(d.view.getState(d.getSelectionCell())))}}else return this.isControlDown(a)?function(){b(a.keyCode, mxEvent.isShiftDown(a)?d.gridSize:null,!0)}:function(){b(a.keyCode,mxEvent.isShiftDown(a)?d.gridSize:null)}}return B.apply(this,arguments)};l.bindAction=mxUtils.bind(this,function(a,c,b,e){var d=this.actions.get(b);null!=d&&(b=function(){d.isEnabled()&&d.funct()},c?e?l.bindControlShiftKey(a,b):l.bindControlKey(a,b):e?l.bindShiftKey(a,b):l.bindKey(a,b))});var c=this,e=l.escape;l.escape=function(a){e.apply(this,arguments)};l.enter=function(){};l.bindControlShiftKey(36,function(){d.exitGroup()});l.bindControlShiftKey(35, function(){d.enterGroup()});l.bindKey(36,function(){d.home()});l.bindKey(35,function(){d.refresh()});l.bindAction(107,!0,"zoomIn");l.bindAction(109,!0,"zoomOut");l.bindAction(80,!0,"print");l.bindAction(79,!0,"outline",!0);l.bindAction(112,!1,"about");if(!this.editor.chromeless||this.editor.editable)l.bindControlKey(36,function(){d.isEnabled()&&d.foldCells(!0)}),l.bindControlKey(35,function(){d.isEnabled()&&d.foldCells(!1)}),l.bindControlKey(13,function(){if(d.isEnabled())try{d.setSelectionCells(d.duplicateCells(d.getSelectionCells(), !1))}catch(k){c.handleError(k)}}),l.bindAction(8,!1,"delete"),l.bindAction(8,!0,"deleteAll"),l.bindAction(46,!1,"delete"),l.bindAction(46,!0,"deleteAll"),l.bindAction(72,!0,"resetView"),l.bindAction(72,!0,"fitWindow",!0),l.bindAction(74,!0,"fitPage"),l.bindAction(74,!0,"fitTwoPages",!0),l.bindAction(48,!0,"customZoom"),l.bindAction(82,!0,"turn"),l.bindAction(82,!0,"clearDefaultStyle",!0),l.bindAction(83,!0,"save"),l.bindAction(83,!0,"saveAs",!0),l.bindAction(65,!0,"selectAll"),l.bindAction(65,!0, @@ -2250,27 +2250,27 @@ mxConstants.PIXELS_PER_MM=3.937;mxConstants.PIXELS_PER_INCH=100;mxConstants.SHAD mxText.prototype.baseSpacingTop=5;mxText.prototype.baseSpacingBottom=1;mxGraphModel.prototype.ignoreRelativeEdgeParent=!1;mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif";mxGraphView.prototype.gridSteps=4;mxGraphView.prototype.minGridSize=4;mxGraphView.prototype.defaultGridColor="#d0d0d0";mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultGridColor; mxGraphView.prototype.unit=mxConstants.POINTS;mxGraphView.prototype.setUnit=function(a){this.unit!=a&&(this.unit=a,this.fireEvent(new mxEventObject("unitChanged","unit",a)))};mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]";mxShape.prototype.getConstraints=function(a,b,f){return null}; Graph=function(a,b,f,d,l,m){mxGraph.call(this,a,b,f,d);this.themes=l||this.defaultThemes;this.currentEdgeStyle=mxUtils.clone(this.defaultEdgeStyle);this.currentVertexStyle=mxUtils.clone(this.defaultVertexStyle);this.standalone=null!=m?m:!1;a=this.baseUrl;b=a.indexOf("//");this.domainPathUrl=this.domainUrl="";0<b&&(b=a.indexOf("/",b+2),0<b&&(this.domainUrl=a.substring(0,b)),b=a.lastIndexOf("/"),0<b&&(this.domainPathUrl=a.substring(0,b+1)));this.isHtmlLabel=function(a){var c=this.view.getState(a);a= -null!=c?c.style:this.getCellStyle(a);return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var p=null,u=null,z=null,B=null,c=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var e=b.getProperty("event");if(!mxEvent.isControlDown(e.getEvent())&&!mxEvent.isShiftDown(e.getEvent())){var d=e.getState();null!=d&&this.model.isEdge(d.cell)&&(p=new mxPoint(e.getGraphX(),e.getGraphY()), -c=this.isCellSelected(d.cell),z=d,u=e,null!=d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,e.getGraphX(),e.getGraphY())?B=mxEvent.LABEL_HANDLE:(d=this.selectionCellsHandler.getHandler(d.cell),null!=d&&null!=d.bends&&0<d.bends.length&&(B=d.getHandleForEvent(e))))}}}));this.addMouseListener({mouseDown:function(a,c){},mouseMove:mxUtils.bind(this,function(a,b){var e=this.selectionCellsHandler.handlers.map,d;for(d in e)if(null!=e[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&& -!mxEvent.isControlDown(b.getEvent())&&!mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isAltDown(b.getEvent()))if(d=this.tolerance,null!=p&&null!=z&&null!=u){if(e=z,Math.abs(p.x-b.getGraphX())>d||Math.abs(p.y-b.getGraphY())>d){this.isCellSelected(e.cell)||this.setSelectionCell(e.cell);var k=this.selectionCellsHandler.getHandler(e.cell);if(null!=k&&null!=k.bends&&0<k.bends.length){var g=k.getHandleForEvent(u),f=this.view.getEdgeStyle(e);d=f==mxEdgeStyle.EntityRelation;c||B!=mxEvent.LABEL_HANDLE||(g=B); +null!=c?c.style:this.getCellStyle(a);return null!=a?"1"==a.html||"wrap"==a[mxConstants.STYLE_WHITE_SPACE]:!1};if(this.edgeMode){var p=null,u=null,A=null,B=null,c=!1;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,b){if("mouseDown"==b.getProperty("eventName")&&this.isEnabled()){var e=b.getProperty("event");if(!mxEvent.isControlDown(e.getEvent())&&!mxEvent.isShiftDown(e.getEvent())){var d=e.getState();null!=d&&this.model.isEdge(d.cell)&&(p=new mxPoint(e.getGraphX(),e.getGraphY()), +c=this.isCellSelected(d.cell),A=d,u=e,null!=d.text&&null!=d.text.boundingBox&&mxUtils.contains(d.text.boundingBox,e.getGraphX(),e.getGraphY())?B=mxEvent.LABEL_HANDLE:(d=this.selectionCellsHandler.getHandler(d.cell),null!=d&&null!=d.bends&&0<d.bends.length&&(B=d.getHandleForEvent(e))))}}}));this.addMouseListener({mouseDown:function(a,c){},mouseMove:mxUtils.bind(this,function(a,b){var e=this.selectionCellsHandler.handlers.map,d;for(d in e)if(null!=e[d].index)return;if(this.isEnabled()&&!this.panningHandler.isActive()&& +!mxEvent.isControlDown(b.getEvent())&&!mxEvent.isShiftDown(b.getEvent())&&!mxEvent.isAltDown(b.getEvent()))if(d=this.tolerance,null!=p&&null!=A&&null!=u){if(e=A,Math.abs(p.x-b.getGraphX())>d||Math.abs(p.y-b.getGraphY())>d){this.isCellSelected(e.cell)||this.setSelectionCell(e.cell);var k=this.selectionCellsHandler.getHandler(e.cell);if(null!=k&&null!=k.bends&&0<k.bends.length){var g=k.getHandleForEvent(u),f=this.view.getEdgeStyle(e);d=f==mxEdgeStyle.EntityRelation;c||B!=mxEvent.LABEL_HANDLE||(g=B); if(d&&0!=g&&g!=k.bends.length-1&&g!=mxEvent.LABEL_HANDLE)!d||null==e.visibleSourceState&&null==e.visibleTargetState||(this.graphHandler.reset(),b.consume());else if(g==mxEvent.LABEL_HANDLE||0==g||null!=e.visibleSourceState||g==k.bends.length-1||null!=e.visibleTargetState)d||g==mxEvent.LABEL_HANDLE||(d=e.absolutePoints,null!=d&&(null==f&&null==g||f==mxEdgeStyle.OrthConnector)&&(g=B,null==g&&(g=new mxRectangle(p.x,p.y),g.grow(mxEdgeHandler.prototype.handleImage.width/2),mxUtils.contains(g,d[0].x,d[0].y)? -g=0:mxUtils.contains(g,d[d.length-1].x,d[d.length-1].y)?g=k.bends.length-1:null!=f&&(2==d.length||3==d.length&&(0==Math.round(d[0].x-d[1].x)&&0==Math.round(d[1].x-d[2].x)||0==Math.round(d[0].y-d[1].y)&&0==Math.round(d[1].y-d[2].y)))?g=2:(g=mxUtils.findNearestSegment(e,p.x,p.y),g=null==f?mxEvent.VIRTUAL_HANDLE-g:g+1))),null==g&&(g=mxEvent.VIRTUAL_HANDLE)),k.start(b.getGraphX(),b.getGraphX(),g),B=p=u=z=null,c=!1,b.consume(),this.graphHandler.reset()}}}else if(e=b.getState(),null!=e&&this.model.isEdge(e.cell)){k= +g=0:mxUtils.contains(g,d[d.length-1].x,d[d.length-1].y)?g=k.bends.length-1:null!=f&&(2==d.length||3==d.length&&(0==Math.round(d[0].x-d[1].x)&&0==Math.round(d[1].x-d[2].x)||0==Math.round(d[0].y-d[1].y)&&0==Math.round(d[1].y-d[2].y)))?g=2:(g=mxUtils.findNearestSegment(e,p.x,p.y),g=null==f?mxEvent.VIRTUAL_HANDLE-g:g+1))),null==g&&(g=mxEvent.VIRTUAL_HANDLE)),k.start(b.getGraphX(),b.getGraphX(),g),B=p=u=A=null,c=!1,b.consume(),this.graphHandler.reset()}}}else if(e=b.getState(),null!=e&&this.model.isEdge(e.cell)){k= null;d=e.absolutePoints;if(null!=d)if(g=new mxRectangle(b.getGraphX(),b.getGraphY()),g.grow(mxEdgeHandler.prototype.handleImage.width/2),null!=e.text&&null!=e.text.boundingBox&&mxUtils.contains(e.text.boundingBox,b.getGraphX(),b.getGraphY()))k="move";else if(mxUtils.contains(g,d[0].x,d[0].y)||mxUtils.contains(g,d[d.length-1].x,d[d.length-1].y))k="pointer";else if(null!=e.visibleSourceState||null!=e.visibleTargetState)f=this.view.getEdgeStyle(e),k="crosshair",f!=mxEdgeStyle.EntityRelation&&this.isOrthogonal(e)&& -(f=mxUtils.findNearestSegment(e,b.getGraphX(),b.getGraphY()),f<d.length-1&&0<=f&&(k=0==Math.round(d[f].x-d[f+1].x)?"col-resize":"row-resize"));null!=k&&e.setCursor(k)}}),mouseUp:mxUtils.bind(this,function(a,c){B=p=u=z=null})})}this.cellRenderer.getLabelValue=function(a){var c=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(c=1!=a.style.html?mxUtils.htmlEntities(c,!1):a.view.graph.sanitizeHtml(c));return c};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0); +(f=mxUtils.findNearestSegment(e,b.getGraphX(),b.getGraphY()),f<d.length-1&&0<=f&&(k=0==Math.round(d[f].x-d[f+1].x)?"col-resize":"row-resize"));null!=k&&e.setCursor(k)}}),mouseUp:mxUtils.bind(this,function(a,c){B=p=u=A=null})})}this.cellRenderer.getLabelValue=function(a){var c=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);a.view.graph.isHtmlLabel(a.cell)&&(c=1!=a.style.html?mxUtils.htmlEntities(c,!1):a.view.graph.sanitizeHtml(c));return c};if("undefined"!==typeof mxVertexHandler){this.setConnectable(!0); this.setDropEnabled(!0);this.setPanning(!0);this.setTooltips(!0);this.setAllowLoops(!0);this.allowAutoPanning=!0;this.constrainChildren=this.resetEdgesOnConnect=!1;this.constrainRelativeChildren=!0;this.graphHandler.scrollOnMove=!1;this.graphHandler.scaleGrid=!0;this.connectionHandler.setCreateTarget(!1);this.connectionHandler.insertBeforeSource=!0;this.connectionHandler.isValidSource=function(a,c){return!1};this.alternateEdgeStyle="vertical";null==d&&this.loadStylesheet();var e=this.graphHandler.getGuideStates; -this.graphHandler.getGuideStates=function(){var a=e.apply(this,arguments);if(this.graph.pageVisible){for(var c=[],b=this.graph.pageFormat,d=this.graph.pageScale,k=b.width*d,b=b.height*d,d=this.graph.view.translate,g=this.graph.view.scale,f=this.graph.getPageLayout(),n=0;n<f.width;n++)c.push(new mxRectangle(((f.x+n)*k+d.x)*g,(f.y*b+d.y)*g,k*g,b*g));for(n=0;n<f.height;n++)c.push(new mxRectangle((f.x*k+d.x)*g,((f.y+n)*b+d.y)*g,k*g,b*g));a=c.concat(a)}return a};mxDragSource.prototype.dragElementZIndex= +this.graphHandler.getGuideStates=function(){var a=e.apply(this,arguments);if(this.graph.pageVisible){for(var c=[],b=this.graph.pageFormat,d=this.graph.pageScale,k=b.width*d,b=b.height*d,d=this.graph.view.translate,g=this.graph.view.scale,f=this.graph.getPageLayout(),t=0;t<f.width;t++)c.push(new mxRectangle(((f.x+t)*k+d.x)*g,(f.y*b+d.y)*g,k*g,b*g));for(t=0;t<f.height;t++)c.push(new mxRectangle((f.x*k+d.x)*g,((f.y+t)*b+d.y)*g,k*g,b*g));a=c.concat(a)}return a};mxDragSource.prototype.dragElementZIndex= mxPopupMenu.prototype.zIndex;mxGuide.prototype.getGuideColor=function(a,c){return null==a.cell?"#ffa500":mxConstants.GUIDE_COLOR};this.graphHandler.createPreviewShape=function(a){this.previewColor="#000000"==this.graph.background?"#ffffff":mxGraphHandler.prototype.previewColor;return mxGraphHandler.prototype.createPreviewShape.apply(this,arguments)};var k=this.graphHandler.getCells;this.graphHandler.getCells=function(a){for(var c=k.apply(this,arguments),b=[],e=0;e<c.length;e++){var d=this.graph.view.getState(c[e]), d=null!=d?d.style:this.graph.getCellStyle(c[e]);"1"==mxUtils.getValue(d,"part","0")?(d=this.graph.model.getParent(c[e]),this.graph.model.isVertex(d)&&0>mxUtils.indexOf(c,d)&&b.push(d)):b.push(c[e])}return b};var q=this.graphHandler.start;this.graphHandler.start=function(a,c,b,e){var d=this.graph.view.getState(a);null!=d&&mxUtils.getValue(d.style,"part",!1)&&(a=this.graph.model.getParent(a));q.apply(this,arguments)};this.connectionHandler.createTargetVertex=function(a,c){var b=this.graph.view.getState(c), -b=null!=b?b.style:this.graph.getCellStyle(c);mxUtils.getValue(b,"part",!1)&&(b=this.graph.model.getParent(c),this.graph.model.isVertex(b)&&(c=b));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var n=new mxRubberband(this);this.getRubberband=function(){return n};var g=(new Date).getTime(),A=0,x=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;x.apply(this,arguments);a!=this.currentState?(g=(new Date).getTime(),A=0): -A=(new Date).getTime()-g};var t=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<A||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&t.apply(this,arguments)};var H=this.isToggleEvent;this.isToggleEvent=function(a){return H.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var y=n.isForceRubberbandEvent;n.isForceRubberbandEvent= +b=null!=b?b.style:this.graph.getCellStyle(c);mxUtils.getValue(b,"part",!1)&&(b=this.graph.model.getParent(c),this.graph.model.isVertex(b)&&(c=b));return mxConnectionHandler.prototype.createTargetVertex.apply(this,arguments)};var n=new mxRubberband(this);this.getRubberband=function(){return n};var g=(new Date).getTime(),z=0,x=this.connectionHandler.mouseMove;this.connectionHandler.mouseMove=function(){var a=this.currentState;x.apply(this,arguments);a!=this.currentState?(g=(new Date).getTime(),z=0): +z=(new Date).getTime()-g};var v=this.connectionHandler.isOutlineConnectEvent;this.connectionHandler.isOutlineConnectEvent=function(a){return null!=this.currentState&&a.getState()==this.currentState&&2E3<z||(null==this.currentState||"0"!=mxUtils.getValue(this.currentState.style,"outlineConnect","1"))&&v.apply(this,arguments)};var I=this.isToggleEvent;this.isToggleEvent=function(a){return I.apply(this,arguments)||!mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a)};var y=n.isForceRubberbandEvent;n.isForceRubberbandEvent= function(a){return y.apply(this,arguments)&&!mxEvent.isShiftDown(a.getEvent())&&!mxEvent.isControlDown(a.getEvent())||mxClient.IS_CHROMEOS&&mxEvent.isShiftDown(a.getEvent())||mxUtils.hasScrollbars(this.graph.container)&&mxClient.IS_FF&&mxClient.IS_WIN&&null==a.getState()&&mxEvent.isTouchEvent(a.getEvent())};var F=null;this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.isEnabled()&&(F=this.container.style.cursor,this.container.style.cursor="move")}));this.panningHandler.addListener(mxEvent.PAN_END, mxUtils.bind(this,function(){this.isEnabled()&&(this.container.style.cursor=F)}));this.popupMenuHandler.autoExpand=!0;this.popupMenuHandler.isSelectOnPopup=function(a){return mxEvent.isMouseEvent(a.getEvent())};var C=this.click;this.click=function(a){var c=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);if(this.isEnabled()&&!c||a.isConsumed())return C.apply(this,arguments);var b=c?a.sourceState.cell:a.getCell();null!=b&&(b=this.getLinkForCell(b),null!=b&&(this.isCustomLink(b)? -this.customLinkClicked(b):this.openLink(b)));this.isEnabled()&&c&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var c=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(c?a.sourceState.cell:a.getCell())};var v=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return v.apply(this, -arguments)};this.selectRegion=function(a,c){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,c);return b};this.getAllCells=function(a,c,b,e,d,k){k=null!=k?k:[];if(0<b||0<e){var g=this.getModel(),f=a+b,n=c+e;null==d&&(d=this.getCurrentRoot(),null==d&&(d=g.getRoot()));if(null!=d)for(var v=g.getChildCount(d),q=0;q<v;q++){var O=g.getChildAt(d,q),t=this.view.getState(O);if(null!=t&&this.isCellVisible(O)&&"1"!=mxUtils.getValue(t.style,"locked","0")){var x=mxUtils.getValue(t.style, -mxConstants.STYLE_ROTATION)||0;0!=x&&(t=mxUtils.getBoundingBox(t,x));(g.isEdge(O)||g.isVertex(O))&&t.x>=a&&t.y+t.height<=n&&t.y>=c&&t.x+t.width<=f&&k.push(O);this.getAllCells(a,c,b,e,O,k)}}}return k};var J=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,c,b){return this.graph.isCellSelected(a)?!1:J.apply(this,arguments)};this.isCellLocked=function(a){for(a=this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0; +this.customLinkClicked(b):this.openLink(b)));this.isEnabled()&&c&&this.clearSelection()};this.tooltipHandler.getStateForEvent=function(a){return a.sourceState};this.getCursorForMouseEvent=function(a){var c=null==a.state&&null!=a.sourceState&&this.isCellLocked(a.sourceState.cell);return this.getCursorForCell(c?a.sourceState.cell:a.getCell())};var t=this.getCursorForCell;this.getCursorForCell=function(a){if(!this.isEnabled()||this.isCellLocked(a)){if(null!=this.getLinkForCell(a))return"pointer";if(this.isCellLocked(a))return"default"}return t.apply(this, +arguments)};this.selectRegion=function(a,c){var b=this.getAllCells(a.x,a.y,a.width,a.height);this.selectCellsForEvent(b,c);return b};this.getAllCells=function(a,c,b,e,d,k){k=null!=k?k:[];if(0<b||0<e){var g=this.getModel(),f=a+b,t=c+e;null==d&&(d=this.getCurrentRoot(),null==d&&(d=g.getRoot()));if(null!=d)for(var n=g.getChildCount(d),q=0;q<n;q++){var O=g.getChildAt(d,q),v=this.view.getState(O);if(null!=v&&this.isCellVisible(O)&&"1"!=mxUtils.getValue(v.style,"locked","0")){var x=mxUtils.getValue(v.style, +mxConstants.STYLE_ROTATION)||0;0!=x&&(v=mxUtils.getBoundingBox(v,x));(g.isEdge(O)||g.isVertex(O))&&v.x>=a&&v.y+v.height<=t&&v.y>=c&&v.x+v.width<=f&&k.push(O);this.getAllCells(a,c,b,e,O,k)}}}return k};var J=this.graphHandler.shouldRemoveCellsFromParent;this.graphHandler.shouldRemoveCellsFromParent=function(a,c,b){return this.graph.isCellSelected(a)?!1:J.apply(this,arguments)};this.isCellLocked=function(a){for(a=this.view.getState(a);null!=a;){if("1"==mxUtils.getValue(a.style,"locked","0"))return!0; a=this.view.getState(this.model.getParent(a.cell))}return!1};var M=null;this.addListener(mxEvent.FIRE_MOUSE_EVENT,mxUtils.bind(this,function(a,c){if("mouseDown"==c.getProperty("eventName")){var b=c.getProperty("event").getState();M=null==b||this.isSelectionEmpty()||this.isCellSelected(b.cell)?null:this.getSelectionCells()}}));this.addListener(mxEvent.TAP_AND_HOLD,mxUtils.bind(this,function(a,c){if(!mxEvent.isMultiTouchEvent(c)){var b=c.getProperty("event"),e=c.getProperty("cell");null==e?(b=mxUtils.convertPoint(this.container, mxEvent.getClientX(b),mxEvent.getClientY(b)),n.start(b.x,b.y)):null!=M?this.addSelectionCells(M):1<this.getSelectionCount()&&this.isCellSelected(e)&&this.removeSelectionCell(e);M=null;c.consume()}}));this.connectionHandler.selectCells=function(a,c){this.graph.setSelectionCell(c||a)};this.connectionHandler.constraintHandler.isStateIgnored=function(a,c){return c&&a.view.graph.isCellSelected(a.cell)};this.selectionModel.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){var a=this.connectionHandler.constraintHandler; -null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var I=this.updateMouseEvent;this.updateMouseEvent=function(a){a=I.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)}; +null!=a.currentFocus&&a.isStateIgnored(a.currentFocus,!0)&&(a.currentFocus=null,a.constraints=null,a.destroyIcons());a.destroyFocusHighlight()}));Graph.touchStyle&&this.initTouch();var G=this.updateMouseEvent;this.updateMouseEvent=function(a){a=G.apply(this,arguments);null!=a.state&&this.isCellLocked(a.getCell())&&(a.state=null);return a}}this.currentTranslate=new mxPoint(0,0)}; Graph.touchStyle=mxClient.IS_TOUCH||mxClient.IS_FF&&mxClient.IS_WIN||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||null==window.urlParams||"1"==urlParams.touch;Graph.fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList&&(null==window.urlParams||"0"!=urlParams.filesupport);Graph.lineJumpsEnabled=!0;Graph.defaultJumpSize=6;Graph.foreignObjectWarningText="Viewer does not support full SVG 1.1";Graph.foreignObjectWarningLink="https://desk.draw.io/support/solutions/articles/16000042487"; Graph.createSvgImage=function(a,b,f,d,l){f=unescape(encodeURIComponent('<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="'+a+'px" height="'+b+'px" '+(null!=d&&null!=l?'viewBox="0 0 '+d+" "+l+'" ':"")+'version="1.1">'+f+"</svg>"));return new mxImage("data:image/svg+xml;base64,"+(window.btoa?btoa(f):Base64.encode(f,!0)),a,b)}; Graph.zapGremlins=function(a){for(var b=[],f=0;f<a.length;f++){var d=a.charCodeAt(f);(32<=d||9==d||10==d||13==d)&&65535!=d&&65534!=d&&b.push(a.charAt(f))}return b.join("")};Graph.stringToBytes=function(a){for(var b=Array(a.length),f=0;f<a.length;f++)b[f]=a.charCodeAt(f);return b};Graph.bytesToString=function(a){for(var b=Array(a.length),f=0;f<a.length;f++)b[f]=String.fromCharCode(a[f]);return b.join("")};Graph.compressNode=function(a){return Graph.compress(Graph.zapGremlins(mxUtils.getXml(a)))}; @@ -2278,15 +2278,15 @@ Graph.compress=function(a,b){if(null==a||0==a.length||"undefined"===typeof pako) mxUtils.extend(Graph,mxGraph);Graph.prototype.minFitScale=null;Graph.prototype.maxFitScale=null;Graph.prototype.linkPolicy="frame"==urlParams.target?"blank":urlParams.target||"auto";Graph.prototype.linkTarget="frame"==urlParams.target?"_self":"_blank";Graph.prototype.linkRelation="nofollow noopener noreferrer";Graph.prototype.defaultScrollbars=!mxClient.IS_IOS;Graph.prototype.defaultPageVisible=!0;Graph.prototype.lightbox=!1;Graph.prototype.defaultPageBackgroundColor="#ffffff"; Graph.prototype.defaultPageBorderColor="#ffffff";Graph.prototype.scrollTileSize=new mxRectangle(0,0,400,400);Graph.prototype.transparentBackground=!0;Graph.prototype.selectParentAfterDelete=!1;Graph.prototype.defaultEdgeLength=80;Graph.prototype.edgeMode=!1;Graph.prototype.connectionArrowsEnabled=!0;Graph.prototype.placeholderPattern=RegExp("%(date{.*}|[^%^{^}]+)%","g");Graph.prototype.absoluteUrlPattern=/^(?:[a-z]+:)?\/\//i;Graph.prototype.defaultThemeName="default"; Graph.prototype.defaultThemes={};Graph.prototype.baseUrl=null!=urlParams.base?decodeURIComponent(urlParams.base):(window!=window.top?document.referrer:document.location.toString()).split("#")[0];Graph.prototype.editAfterInsert=!1;Graph.prototype.builtInProperties=["label","tooltip","placeholders","placeholder"];Graph.prototype.standalone=!1; -Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,f){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var b=a.view.graph.tolerance,l=!0,m=null,p=mxUtils.bind(this,function(a){l=!0;m=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),u=mxUtils.bind(this,function(a){l=l&&null!=m&&Math.abs(m.x-mxEvent.getClientX(a))<b&&Math.abs(m.y-mxEvent.getClientY(a))<b}),z=mxUtils.bind(this,function(b){if(l)for(var c=mxEvent.getSource(b);null!= -c&&c!=f.node;){if("a"==c.nodeName.toLowerCase()){a.view.graph.labelLinkClicked(a,c,b);break}c=c.parentNode}});mxEvent.addGestureListeners(f.node,p,u,z);mxEvent.addListener(f.node,"click",function(a){mxEvent.consume(a)})};this.initLayoutManager()}; -(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&this.isCssTransformsSupported()};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(a,b,f,p,u,z){this.useCssTransforms&& -(a=a/this.currentScale-this.currentTranslate.x,b=b/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(a,b,f,p,u,z){p=null!=p?p:!0;u=null!=u?u:!0;null==f&&(f=this.getCurrentRoot(),null==f&&(f=this.getModel().getRoot()));if(null!=f)for(var d=this.model.getChildCount(f)-1;0<=d;d--){var c=this.model.getChildAt(f,d),e=this.getScaledCellAt(a,b,c,p,u,z);if(null!=e)return e;if(this.isCellVisible(c)&&(u&&this.model.isEdge(c)|| -p&&this.model.isVertex(c))&&(e=this.view.getState(c),null!=e&&(null==z||!z(e,a,b))&&this.intersects(e,a,b)))return c}return null};mxCellHighlight.prototype.getStrokeWidth=function(a){a=this.strokeWidth;this.graph.useCssTransforms&&(a/=this.graph.currentScale);return a};mxGraphView.prototype.getGraphBounds=function(){var a=this.graphBounds;if(this.graph.useCssTransforms)var b=this.graph.currentTranslate,f=this.graph.currentScale,a=new mxRectangle((a.x+b.x)*f,(a.y+b.y)*f,a.width*f,a.height*f);return a}; +Graph.prototype.init=function(a){mxGraph.prototype.init.apply(this,arguments);this.cellRenderer.initializeLabel=function(a,f){mxCellRenderer.prototype.initializeLabel.apply(this,arguments);var b=a.view.graph.tolerance,l=!0,m=null,p=mxUtils.bind(this,function(a){l=!0;m=new mxPoint(mxEvent.getClientX(a),mxEvent.getClientY(a))}),u=mxUtils.bind(this,function(a){l=l&&null!=m&&Math.abs(m.x-mxEvent.getClientX(a))<b&&Math.abs(m.y-mxEvent.getClientY(a))<b}),A=mxUtils.bind(this,function(b){if(l)for(var c=mxEvent.getSource(b);null!= +c&&c!=f.node;){if("a"==c.nodeName.toLowerCase()){a.view.graph.labelLinkClicked(a,c,b);break}c=c.parentNode}});mxEvent.addGestureListeners(f.node,p,u,A);mxEvent.addListener(f.node,"click",function(a){mxEvent.consume(a)})};this.initLayoutManager()}; +(function(){Graph.prototype.useCssTransforms=!1;Graph.prototype.currentScale=1;Graph.prototype.currentTranslate=new mxPoint(0,0);Graph.prototype.isFastZoomEnabled=function(){return"nocss"!=urlParams.zoom&&!mxClient.NO_FO&&!mxClient.IS_EDGE&&!this.useCssTransforms&&this.isCssTransformsSupported()};Graph.prototype.isCssTransformsSupported=function(){return this.dialect==mxConstants.DIALECT_SVG&&!mxClient.NO_FO&&(!this.lightbox||!mxClient.IS_SF)};Graph.prototype.getCellAt=function(a,b,f,p,u,A){this.useCssTransforms&& +(a=a/this.currentScale-this.currentTranslate.x,b=b/this.currentScale-this.currentTranslate.y);return this.getScaledCellAt.apply(this,arguments)};Graph.prototype.getScaledCellAt=function(a,b,f,p,u,A){p=null!=p?p:!0;u=null!=u?u:!0;null==f&&(f=this.getCurrentRoot(),null==f&&(f=this.getModel().getRoot()));if(null!=f)for(var d=this.model.getChildCount(f)-1;0<=d;d--){var c=this.model.getChildAt(f,d),e=this.getScaledCellAt(a,b,c,p,u,A);if(null!=e)return e;if(this.isCellVisible(c)&&(u&&this.model.isEdge(c)|| +p&&this.model.isVertex(c))&&(e=this.view.getState(c),null!=e&&(null==A||!A(e,a,b))&&this.intersects(e,a,b)))return c}return null};mxCellHighlight.prototype.getStrokeWidth=function(a){a=this.strokeWidth;this.graph.useCssTransforms&&(a/=this.graph.currentScale);return a};mxGraphView.prototype.getGraphBounds=function(){var a=this.graphBounds;if(this.graph.useCssTransforms)var b=this.graph.currentTranslate,f=this.graph.currentScale,a=new mxRectangle((a.x+b.x)*f,(a.y+b.y)*f,a.width*f,a.height*f);return a}; mxGraphView.prototype.viewStateChanged=function(){this.graph.useCssTransforms?this.validate():this.revalidate();this.graph.sizeDidChange()};var a=mxGraphView.prototype.validate;mxGraphView.prototype.validate=function(b){this.graph.useCssTransforms&&(this.graph.currentScale=this.scale,this.graph.currentTranslate.x=this.translate.x,this.graph.currentTranslate.y=this.translate.y,this.scale=1,this.translate.x=0,this.translate.y=0);a.apply(this,arguments);this.graph.useCssTransforms&&(this.graph.updateCssTransform(), this.scale=this.graph.currentScale,this.translate.x=this.graph.currentTranslate.x,this.translate.y=this.graph.currentTranslate.y)};Graph.prototype.updateCssTransform=function(){var a=this.view.getDrawPane();if(null!=a)if(a=a.parentNode,this.useCssTransforms){var b=a.getAttribute("transform");a.setAttribute("transformOrigin","0 0");var f=Math.round(100*this.currentScale)/100;a.setAttribute("transform","scale("+f+","+f+")translate("+Math.round(100*this.currentTranslate.x)/100+","+Math.round(100*this.currentTranslate.y)/ 100+")");if(b!=a.getAttribute("transform"))try{if(mxClient.IS_EDGE){var p=a.style.display;a.style.display="none";a.getBBox();a.style.display=p}}catch(u){}}else a.removeAttribute("transformOrigin"),a.removeAttribute("transform")};var b=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage=function(){var a=this.graph.useCssTransforms,f=this.scale,m=this.translate;a&&(this.scale=this.graph.currentScale,this.translate=this.graph.currentTranslate);b.apply(this,arguments); -a&&(this.scale=f,this.translate=m)};var f=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,b,m){var d=this.useCssTransforms,l=this.view.scale,z=this.view.translate;d&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);f.apply(this,arguments);d&&(this.view.scale=l,this.view.translate=z,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.isViewer=function(){return!1}; +a&&(this.scale=f,this.translate=m)};var f=mxGraph.prototype.updatePageBreaks;mxGraph.prototype.updatePageBreaks=function(a,b,m){var d=this.useCssTransforms,l=this.view.scale,A=this.view.translate;d&&(this.view.scale=1,this.view.translate=new mxPoint(0,0),this.useCssTransforms=!1);f.apply(this,arguments);d&&(this.view.scale=l,this.view.translate=A,this.useCssTransforms=!0)}})();Graph.prototype.isLightboxView=function(){return this.lightbox};Graph.prototype.isViewer=function(){return!1}; Graph.prototype.labelLinkClicked=function(a,b,f){b=b.getAttribute("href");if(null!=b&&!this.isCustomLink(b)&&mxEvent.isLeftMouseButton(f)&&!mxEvent.isPopupTrigger(f)||mxEvent.isTouchEvent(f)){if(!this.isEnabled()||this.isCellLocked(a.cell))a=this.isBlankLink(b)?this.linkTarget:"_top",this.openLink(this.getAbsoluteUrl(b),a);mxEvent.consume(f)}}; Graph.prototype.openLink=function(a,b,f){var d=window;try{if("_self"==b&&window!=window.top)window.location.href=a;else if(a.substring(0,this.baseUrl.length)==this.baseUrl&&"#"==a.charAt(this.baseUrl.length)&&"_top"==b&&window==window.top){var l=a.split("#")[1];window.location.hash=="#"+l&&(window.location.hash="");window.location.hash=l}else d=window.open(a,b),null==d||f||(d.opener=null)}catch(m){}return d};Graph.prototype.getLinkTitle=function(a){return a.substring(a.lastIndexOf("/")+1)}; Graph.prototype.isCustomLink=function(a){return"data:"==a.substring(0,5)};Graph.prototype.customLinkClicked=function(a){return!1};Graph.prototype.isExternalProtocol=function(a){return"mailto:"===a.substring(0,7)};Graph.prototype.isBlankLink=function(a){return!this.isExternalProtocol(a)&&("blank"===this.linkPolicy||"self"!==this.linkPolicy&&!this.isRelativeUrl(a)&&a.substring(0,this.domainUrl.length)!==this.domainUrl)}; @@ -2304,8 +2304,8 @@ Graph.prototype.isLabelMovable=function(a){var b=this.view.getState(a),b=null!=b Graph.prototype.getGlobalVariable=function(a){var b=null;"date"==a?b=(new Date).toLocaleDateString():"time"==a?b=(new Date).toLocaleTimeString():"timestamp"==a?b=(new Date).toLocaleString():"date{"==a.substring(0,5)&&(a=a.substring(5,a.length-1),b=this.formatDate(new Date,a));return b}; Graph.prototype.formatDate=function(a,b,f){null==this.dateFormatCache&&(this.dateFormatCache={i18n:{dayNames:"Sun Mon Tue Wed Thu Fri Sat Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),monthNames:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec January February March April May June July August September October November December".split(" ")},masks:{"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy", shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"}});var d=this.dateFormatCache,l=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,m=/[^-+\dA-Z]/g,p=function(a,c){a=String(a);for(c=c||2;a.length<c;)a="0"+a;return a};1!=arguments.length||"[object String]"!=Object.prototype.toString.call(a)|| -/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(d.masks[b]||b||d.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),f=!0);var u=f?"getUTC":"get",z=a[u+"Date"](),B=a[u+"Day"](),c=a[u+"Month"](),e=a[u+"FullYear"](),k=a[u+"Hours"](),q=a[u+"Minutes"](),n=a[u+"Seconds"](),u=a[u+"Milliseconds"](),g=f?0:a.getTimezoneOffset(),A={d:z,dd:p(z),ddd:d.i18n.dayNames[B],dddd:d.i18n.dayNames[B+7],m:c+1,mm:p(c+1),mmm:d.i18n.monthNames[c],mmmm:d.i18n.monthNames[c+ -12],yy:String(e).slice(2),yyyy:e,h:k%12||12,hh:p(k%12||12),H:k,HH:p(k),M:q,MM:p(q),s:n,ss:p(n),l:p(u,3),L:p(99<u?Math.round(u/10):u),t:12>k?"a":"p",tt:12>k?"am":"pm",T:12>k?"A":"P",TT:12>k?"AM":"PM",Z:f?"UTC":(String(a).match(l)||[""]).pop().replace(m,""),o:(0<g?"-":"+")+p(100*Math.floor(Math.abs(g)/60)+Math.abs(g)%60,4),S:["th","st","nd","rd"][3<z%10?0:(10!=z%100-z%10)*z%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in A?A[a]:a.slice(1, +/\d/.test(a)||(b=a,a=void 0);a=a?new Date(a):new Date;if(isNaN(a))throw SyntaxError("invalid date");b=String(d.masks[b]||b||d.masks["default"]);"UTC:"==b.slice(0,4)&&(b=b.slice(4),f=!0);var u=f?"getUTC":"get",A=a[u+"Date"](),B=a[u+"Day"](),c=a[u+"Month"](),e=a[u+"FullYear"](),k=a[u+"Hours"](),q=a[u+"Minutes"](),n=a[u+"Seconds"](),u=a[u+"Milliseconds"](),g=f?0:a.getTimezoneOffset(),z={d:A,dd:p(A),ddd:d.i18n.dayNames[B],dddd:d.i18n.dayNames[B+7],m:c+1,mm:p(c+1),mmm:d.i18n.monthNames[c],mmmm:d.i18n.monthNames[c+ +12],yy:String(e).slice(2),yyyy:e,h:k%12||12,hh:p(k%12||12),H:k,HH:p(k),M:q,MM:p(q),s:n,ss:p(n),l:p(u,3),L:p(99<u?Math.round(u/10):u),t:12>k?"a":"p",tt:12>k?"am":"pm",T:12>k?"A":"P",TT:12>k?"AM":"PM",Z:f?"UTC":(String(a).match(l)||[""]).pop().replace(m,""),o:(0<g?"-":"+")+p(100*Math.floor(Math.abs(g)/60)+Math.abs(g)%60,4),S:["th","st","nd","rd"][3<A%10?0:(10!=A%100-A%10)*A%10]};return b.replace(/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,function(a){return a in z?z[a]:a.slice(1, a.length-1)})}; Graph.prototype.createLayersDialog=function(){var a=document.createElement("div");a.style.position="absolute";for(var b=this.getModel(),f=b.getChildCount(b.root),d=0;d<f;d++)mxUtils.bind(this,function(d){var f=document.createElement("div");f.style.overflow="hidden";f.style.textOverflow="ellipsis";f.style.padding="2px";f.style.whiteSpace="nowrap";var l=document.createElement("input");l.style.display="inline-block";l.setAttribute("type","checkbox");b.isVisible(d)&&(l.setAttribute("checked","checked"), l.defaultChecked=!0);f.appendChild(l);var u=this.convertValueToString(d)||mxResources.get("background")||"Background";f.setAttribute("title",u);mxUtils.write(f,u);a.appendChild(f);mxEvent.addListener(l,"click",function(){null!=l.getAttribute("checked")?l.removeAttribute("checked"):l.setAttribute("checked","checked");b.setVisible(d,l.checked)})})(b.getChildAt(b.root,d));return a}; @@ -2313,18 +2313,18 @@ Graph.prototype.replacePlaceholders=function(a,b){var f=[];if(null!=b){for(var d match.index)+(null!=m?m:l));d=match.index+l.length}}f.push(b.substring(d))}return f.join("")};Graph.prototype.restoreSelection=function(a){if(null!=a&&0<a.length){for(var b=[],f=0;f<a.length;f++){var d=this.model.getCell(a[f].id);null!=d&&b.push(d)}this.setSelectionCells(b)}else this.clearSelection()}; Graph.prototype.selectCellsForConnectVertex=function(a,b,f){2==a.length&&this.model.isVertex(a[1])?(this.setSelectionCell(a[1]),this.scrollCellToVisible(a[1]),null!=f&&(mxEvent.isTouchEvent(b)?f.update(f.getState(this.view.getState(a[1]))):f.reset())):this.setSelectionCells(a)}; Graph.prototype.connectVertex=function(a,b,f,d,l,m){if(a.geometry.relative&&this.model.isEdge(a.parent))return[];m=m?m:!1;var p=a.geometry.relative&&null!=a.parent.geometry?new mxPoint(a.parent.geometry.width*a.geometry.x,a.parent.geometry.height*a.geometry.y):new mxPoint(a.geometry.x,a.geometry.y);b==mxConstants.DIRECTION_NORTH?(p.x+=a.geometry.width/2,p.y-=f):b==mxConstants.DIRECTION_SOUTH?(p.x+=a.geometry.width/2,p.y+=a.geometry.height+f):(p.x=b==mxConstants.DIRECTION_WEST?p.x-f:p.x+(a.geometry.width+ -f),p.y+=a.geometry.height/2);f=this.view.getState(this.model.getParent(a));var u=this.view.scale,z=this.view.translate,B=z.x*u,z=z.y*u;null!=f&&this.model.isVertex(f.cell)&&(B=f.x,z=f.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(p.x+=a.parent.geometry.x,p.y+=a.parent.geometry.y);m=m||mxEvent.isControlDown(d)&&!l?null:this.getCellAt(B+p.x*u,z+p.y*u);this.model.isAncestor(m,a)&&(m=null);for(f=m;null!=f;){if(this.isCellLocked(f)){m=null;break}f=this.model.getParent(f)}null!=m&&(f=this.view.getState(a), +f),p.y+=a.geometry.height/2);f=this.view.getState(this.model.getParent(a));var u=this.view.scale,A=this.view.translate,B=A.x*u,A=A.y*u;null!=f&&this.model.isVertex(f.cell)&&(B=f.x,A=f.y);this.model.isVertex(a.parent)&&a.geometry.relative&&(p.x+=a.parent.geometry.x,p.y+=a.parent.geometry.y);m=m||mxEvent.isControlDown(d)&&!l?null:this.getCellAt(B+p.x*u,A+p.y*u);this.model.isAncestor(m,a)&&(m=null);for(f=m;null!=f;){if(this.isCellLocked(f)){m=null;break}f=this.model.getParent(f)}null!=m&&(f=this.view.getState(a), u=this.view.getState(m),null!=f&&null!=u&&mxUtils.intersects(f,u)&&(m=null));if(l=!mxEvent.isShiftDown(d)||l)b==mxConstants.DIRECTION_NORTH?p.y-=a.geometry.height/2:b==mxConstants.DIRECTION_SOUTH?p.y+=a.geometry.height/2:p.x=b==mxConstants.DIRECTION_WEST?p.x-a.geometry.width/2:p.x+a.geometry.width/2;null==m||this.isCellConnectable(m)||(f=this.getModel().getParent(m),this.getModel().isVertex(f)&&this.isCellConnectable(f)&&(m=f));if(m==a||this.model.isEdge(m)||!this.isCellConnectable(m))m=null;f=[]; this.model.beginUpdate();try{var c=null!=m&&this.isSwimlane(m),u=c?null:m;if(null==u&&l){for(var B=a,e=this.getCellGeometry(a);null!=e&&e.relative;)B=this.getModel().getParent(B),e=this.getCellGeometry(B);var k=this.view.getState(B),q=null!=k?k.style:this.getCellStyle(B);if(mxUtils.getValue(q,"part",!1)){var n=this.model.getParent(B);this.model.isVertex(n)&&(B=n)}u=this.duplicateCells([B],!1)[0];e=this.getCellGeometry(u);null!=e&&(e.x=p.x-e.width/2,e.y=p.y-e.height/2);c&&(this.addCells([u],m,null, -null,null,!0),m=null)}c=null;null!=this.layoutManager&&(c=this.layoutManager.getLayout(this.model.getParent(a)));var g=mxEvent.isControlDown(d)&&l||null==m&&null!=c&&c.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,u,this.createCurrentEdgeStyle());if(null!=g&&this.connectionHandler.insertBeforeSource){var A=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=g.parent;)d=this.model.getParent(d);null!=d&&null!=d.parent&&d.parent==g.parent&& -(A=d.parent.getIndex(d),this.model.add(d.parent,g,A))}null==m&&null!=u&&null!=c&&null!=a.parent&&c.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&&(A=a.parent.getIndex(a),this.model.add(a.parent,u,A));null!=g&&f.push(g);null==m&&null!=u&&f.push(u);null==u&&null!=g&&g.geometry.setTerminalPoint(p,!1);null!=g&&this.fireEvent(new mxEventObject("cellsInserted","cells",[g]))}finally{this.model.endUpdate()}return f}; +null,null,!0),m=null)}c=null;null!=this.layoutManager&&(c=this.layoutManager.getLayout(this.model.getParent(a)));var g=mxEvent.isControlDown(d)&&l||null==m&&null!=c&&c.constructor==mxStackLayout?null:this.insertEdge(this.model.getParent(a),null,"",a,u,this.createCurrentEdgeStyle());if(null!=g&&this.connectionHandler.insertBeforeSource){var z=null;for(d=a;null!=d.parent&&null!=d.geometry&&d.geometry.relative&&d.parent!=g.parent;)d=this.model.getParent(d);null!=d&&null!=d.parent&&d.parent==g.parent&& +(z=d.parent.getIndex(d),this.model.add(d.parent,g,z))}null==m&&null!=u&&null!=c&&null!=a.parent&&c.constructor==mxStackLayout&&b==mxConstants.DIRECTION_WEST&&(z=a.parent.getIndex(a),this.model.add(a.parent,u,z));null!=g&&f.push(g);null==m&&null!=u&&f.push(u);null==u&&null!=g&&g.geometry.setTerminalPoint(p,!1);null!=g&&this.fireEvent(new mxEventObject("cellsInserted","cells",[g]))}finally{this.model.endUpdate()}return f}; Graph.prototype.getIndexableText=function(){var a=document.createElement("div"),b=[],f,d;for(d in this.model.cells)if(f=this.model.cells[d],this.model.isVertex(f)||this.model.isEdge(f))this.isHtmlLabel(f)?(a.innerHTML=this.getLabel(f),f=mxUtils.extractTextWithWhitespace([a])):f=this.getLabel(f),f=mxUtils.trim(f.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g," ")),0<f.length&&b.push(f);return b.join(" ")}; Graph.prototype.convertValueToString=function(a){if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder")){for(var b=a.getAttribute("placeholder"),f=a,d=null;null==d&&null!=f;)null!=f.value&&"object"==typeof f.value&&(d=f.hasAttribute(b)?null!=f.getAttribute(b)?f.getAttribute(b):"":null),f=this.model.getParent(f);return d||""}return a.value.getAttribute("label")||""}return mxGraph.prototype.convertValueToString.apply(this,arguments)}; Graph.prototype.getLinksForState=function(a){return null!=a&&null!=a.text&&null!=a.text.node?a.text.node.getElementsByTagName("a"):null};Graph.prototype.getLinkForCell=function(a){return null!=a.value&&"object"==typeof a.value?(a=a.value.getAttribute("link"),null!=a&&"javascript:"===a.toLowerCase().substring(0,11)&&(a=a.substring(11)),a):null}; Graph.prototype.getCellStyle=function(a){var b=mxGraph.prototype.getCellStyle.apply(this,arguments);if(null!=a&&null!=this.layoutManager){var f=this.model.getParent(a);this.model.isVertex(f)&&this.isCellCollapsed(a)&&(f=this.layoutManager.getLayout(f),null!=f&&f.constructor==mxStackLayout&&(b[mxConstants.STYLE_HORIZONTAL]=!f.horizontal))}return b}; Graph.prototype.updateAlternateBounds=function(a,b,f){if(null!=a&&null!=b&&null!=this.layoutManager&&null!=b.alternateBounds){var d=this.layoutManager.getLayout(this.model.getParent(a));null!=d&&d.constructor==mxStackLayout&&(d.horizontal?b.alternateBounds.height=0:b.alternateBounds.width=0)}mxGraph.prototype.updateAlternateBounds.apply(this,arguments)};Graph.prototype.isMoveCellsEvent=function(a,b){return mxEvent.isShiftDown(a)||"1"==mxUtils.getValue(b.style,"moveCells","0")}; -Graph.prototype.foldCells=function(a,b,f,d,l){b=null!=b?b:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));if(null!=f){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var m=0;m<f.length;m++){var p=this.view.getState(f[m]),u=this.getCellGeometry(f[m]);if(null!=p&&null!=u){var z=Math.round(u.width-p.width/this.view.scale),B=Math.round(u.height-p.height/this.view.scale);if(0!=B||0!=z){var c=this.model.getParent(f[m]),e=this.layoutManager.getLayout(c); -null==e?null!=l&&this.isMoveCellsEvent(l,p)&&this.moveSiblings(p,c,z,B):null!=l&&mxEvent.isAltDown(l)||e.constructor!=mxStackLayout||e.resizeLast||this.resizeParentStacks(c,e,z,B)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(f)}}; +Graph.prototype.foldCells=function(a,b,f,d,l){b=null!=b?b:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));if(null!=f){this.model.beginUpdate();try{if(mxGraph.prototype.foldCells.apply(this,arguments),null!=this.layoutManager)for(var m=0;m<f.length;m++){var p=this.view.getState(f[m]),u=this.getCellGeometry(f[m]);if(null!=p&&null!=u){var A=Math.round(u.width-p.width/this.view.scale),B=Math.round(u.height-p.height/this.view.scale);if(0!=B||0!=A){var c=this.model.getParent(f[m]),e=this.layoutManager.getLayout(c); +null==e?null!=l&&this.isMoveCellsEvent(l,p)&&this.moveSiblings(p,c,A,B):null!=l&&mxEvent.isAltDown(l)||e.constructor!=mxStackLayout||e.resizeLast||this.resizeParentStacks(c,e,A,B)}}}}finally{this.model.endUpdate()}this.isEnabled()&&this.setSelectionCells(f)}}; Graph.prototype.moveSiblings=function(a,b,f,d){this.model.beginUpdate();try{var l=this.getCellsBeyond(a.x,a.y,b,!0,!0);for(b=0;b<l.length;b++)if(l[b]!=a.cell){var m=this.view.getState(l[b]),p=this.getCellGeometry(l[b]);null!=m&&null!=p&&(p=p.clone(),p.translate(Math.round(f*Math.max(0,Math.min(1,(m.x-a.x)/a.width))),Math.round(d*Math.max(0,Math.min(1,(m.y-a.y)/a.height)))),this.model.setGeometry(l[b],p))}}finally{this.model.endUpdate()}}; Graph.prototype.resizeParentStacks=function(a,b,f,d){if(null!=this.layoutManager&&null!=b&&b.constructor==mxStackLayout&&!b.resizeLast){this.model.beginUpdate();try{for(var l=b.horizontal;null!=a&&null!=b&&b.constructor==mxStackLayout&&b.horizontal==l&&!b.resizeLast;){var m=this.getCellGeometry(a),p=this.view.getState(a);null!=p&&null!=m&&(m=m.clone(),b.horizontal?m.width+=f+Math.min(0,p.width/this.view.scale-m.width):m.height+=d+Math.min(0,p.height/this.view.scale-m.height),this.model.setGeometry(a, m));a=this.model.getParent(a);b=this.layoutManager.getLayout(a)}}finally{this.model.endUpdate()}}};Graph.prototype.isContainer=function(a){var b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return this.isSwimlane(a)?"0"!=b.container:"1"==b.container}; @@ -2373,11 +2373,11 @@ HoverIcons.prototype.setCurrentState=function(a){"eastwest"!=a.style.portConstra (function(){var a=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){a.apply(this,arguments);this.validEdges=[]};var b=mxGraphView.prototype.validateCellState;mxGraphView.prototype.validateCellState=function(a,d){d=null!=d?d:!0;var c=this.getState(a);null!=c&&d&&this.graph.model.isEdge(c.cell)&&null!=c.style&&1!=c.style[mxConstants.STYLE_CURVED]&&!c.invalid&&this.updateLineJumps(c)&&this.graph.cellRenderer.redraw(c,!1,this.isRendering());c=b.apply(this, arguments);null!=c&&d&&this.graph.model.isEdge(c.cell)&&null!=c.style&&1!=c.style[mxConstants.STYLE_CURVED]&&this.validEdges.push(c);return c};var f=mxCellRenderer.prototype.isShapeInvalid;mxCellRenderer.prototype.isShapeInvalid=function(a,b){return f.apply(this,arguments)||null!=a.routedPoints&&null!=b.routedPoints&&!mxUtils.equalPoints(b.routedPoints,a.routedPoints)};var d=mxGraphView.prototype.updateCellState;mxGraphView.prototype.updateCellState=function(a){d.apply(this,arguments);this.graph.model.isEdge(a.cell)&& 1!=a.style[mxConstants.STYLE_CURVED]&&this.updateLineJumps(a)};mxGraphView.prototype.updateLineJumps=function(a){var b=a.absolutePoints;if(Graph.lineJumpsEnabled){var c=null!=a.routedPoints,e=null;if(null!=b&&null!=this.validEdges&&"none"!==mxUtils.getValue(a.style,"jumpStyle","none")){for(var d=function(c,b,d){var k=new mxPoint(b,d);k.type=c;e.push(k);k=null!=a.routedPoints?a.routedPoints[e.length-1]:null;return null==k||k.type!=c||k.x!=b||k.y!=d},f=.5*this.scale,c=!1,e=[],n=0;n<b.length-1;n++){for(var g= -b[n+1],l=b[n],x=[],t=b[n+2];n<b.length-2&&mxUtils.ptSegDistSq(l.x,l.y,t.x,t.y,g.x,g.y)<1*this.scale*this.scale;)g=t,n++,t=b[n+2];for(var c=d(0,l.x,l.y)||c,u=0;u<this.validEdges.length;u++){var y=this.validEdges[u],m=y.absolutePoints;if(null!=m&&mxUtils.intersects(a,y)&&"1"!=y.style.noJump)for(y=0;y<m.length-1;y++){for(var C=m[y+1],v=m[y],t=m[y+2];y<m.length-2&&mxUtils.ptSegDistSq(v.x,v.y,t.x,t.y,C.x,C.y)<1*this.scale*this.scale;)C=t,y++,t=m[y+2];t=mxUtils.intersection(l.x,l.y,g.x,g.y,v.x,v.y,C.x, -C.y);if(null!=t&&(Math.abs(t.x-l.x)>f||Math.abs(t.y-l.y)>f)&&(Math.abs(t.x-g.x)>f||Math.abs(t.y-g.y)>f)&&(Math.abs(t.x-v.x)>f||Math.abs(t.y-v.y)>f)&&(Math.abs(t.x-C.x)>f||Math.abs(t.y-C.y)>f)){C=t.x-l.x;v=t.y-l.y;t={distSq:C*C+v*v,x:t.x,y:t.y};for(C=0;C<x.length;C++)if(x[C].distSq>t.distSq){x.splice(C,0,t);t=null;break}null==t||0!=x.length&&x[x.length-1].x===t.x&&x[x.length-1].y===t.y||x.push(t)}}}for(y=0;y<x.length;y++)c=d(1,x[y].x,x[y].y)||c}t=b[b.length-1];c=d(0,t.x,t.y)||c}a.routedPoints=e;return c}return!1}; +b[n+1],z=b[n],x=[],v=b[n+2];n<b.length-2&&mxUtils.ptSegDistSq(z.x,z.y,v.x,v.y,g.x,g.y)<1*this.scale*this.scale;)g=v,n++,v=b[n+2];for(var c=d(0,z.x,z.y)||c,l=0;l<this.validEdges.length;l++){var y=this.validEdges[l],u=y.absolutePoints;if(null!=u&&mxUtils.intersects(a,y)&&"1"!=y.style.noJump)for(y=0;y<u.length-1;y++){for(var m=u[y+1],t=u[y],v=u[y+2];y<u.length-2&&mxUtils.ptSegDistSq(t.x,t.y,v.x,v.y,m.x,m.y)<1*this.scale*this.scale;)m=v,y++,v=u[y+2];v=mxUtils.intersection(z.x,z.y,g.x,g.y,t.x,t.y,m.x, +m.y);if(null!=v&&(Math.abs(v.x-z.x)>f||Math.abs(v.y-z.y)>f)&&(Math.abs(v.x-g.x)>f||Math.abs(v.y-g.y)>f)&&(Math.abs(v.x-t.x)>f||Math.abs(v.y-t.y)>f)&&(Math.abs(v.x-m.x)>f||Math.abs(v.y-m.y)>f)){m=v.x-z.x;t=v.y-z.y;v={distSq:m*m+t*t,x:v.x,y:v.y};for(m=0;m<x.length;m++)if(x[m].distSq>v.distSq){x.splice(m,0,v);v=null;break}null==v||0!=x.length&&x[x.length-1].x===v.x&&x[x.length-1].y===v.y||x.push(v)}}}for(y=0;y<x.length;y++)c=d(1,x[y].x,x[y].y)||c}v=b[b.length-1];c=d(0,v.x,v.y)||c}a.routedPoints=e;return c}return!1}; var l=mxConnector.prototype.paintLine;mxConnector.prototype.paintLine=function(a,b,c){this.routedPoints=null!=this.state?this.state.routedPoints:null;if(this.outline||null==this.state||null==this.style||null==this.state.routedPoints||0==this.state.routedPoints.length)l.apply(this,arguments);else{var e=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,d=(parseInt(mxUtils.getValue(this.style,"jumpSize",Graph.defaultJumpSize))-2)/2+this.strokewidth,f=mxUtils.getValue(this.style, -"jumpStyle","none"),n=!0,g=null,A=null,x=[],t=null;a.begin();for(var u=0;u<this.state.routedPoints.length;u++){var y=this.state.routedPoints[u],m=new mxPoint(y.x/this.scale,y.y/this.scale);0==u?m=b[0]:u==this.state.routedPoints.length-1&&(m=b[b.length-1]);var C=!1;if(null!=g&&1==y.type){var v=this.state.routedPoints[u+1],y=v.x/this.scale-m.x,v=v.y/this.scale-m.y,y=y*y+v*v;null==t&&(t=new mxPoint(m.x-g.x,m.y-g.y),A=Math.sqrt(t.x*t.x+t.y*t.y),0<A?(t.x=t.x*d/A,t.y=t.y*d/A):t=null);y>d*d&&0<A&&(y=g.x- -m.x,v=g.y-m.y,y=y*y+v*v,y>d*d&&(C=new mxPoint(m.x-t.x,m.y-t.y),y=new mxPoint(m.x+t.x,m.y+t.y),x.push(C),this.addPoints(a,x,c,e,!1,null,n),x=0>Math.round(t.x)||0==Math.round(t.x)&&0>=Math.round(t.y)?1:-1,n=!1,"sharp"==f?(a.lineTo(C.x-t.y*x,C.y+t.x*x),a.lineTo(y.x-t.y*x,y.y+t.x*x),a.lineTo(y.x,y.y)):"arc"==f?(x*=1.3,a.curveTo(C.x-t.y*x,C.y+t.x*x,y.x-t.y*x,y.y+t.x*x,y.x,y.y)):(a.moveTo(y.x,y.y),n=!0),x=[y],C=!0))}else t=null;C||(x.push(m),g=m)}this.addPoints(a,x,c,e,!1,null,n);a.stroke()}};var m=mxGraphView.prototype.updateFloatingTerminalPoint; +"jumpStyle","none"),n=!0,g=null,z=null,x=[],v=null;a.begin();for(var u=0;u<this.state.routedPoints.length;u++){var y=this.state.routedPoints[u],m=new mxPoint(y.x/this.scale,y.y/this.scale);0==u?m=b[0]:u==this.state.routedPoints.length-1&&(m=b[b.length-1]);var C=!1;if(null!=g&&1==y.type){var t=this.state.routedPoints[u+1],y=t.x/this.scale-m.x,t=t.y/this.scale-m.y,y=y*y+t*t;null==v&&(v=new mxPoint(m.x-g.x,m.y-g.y),z=Math.sqrt(v.x*v.x+v.y*v.y),0<z?(v.x=v.x*d/z,v.y=v.y*d/z):v=null);y>d*d&&0<z&&(y=g.x- +m.x,t=g.y-m.y,y=y*y+t*t,y>d*d&&(C=new mxPoint(m.x-v.x,m.y-v.y),y=new mxPoint(m.x+v.x,m.y+v.y),x.push(C),this.addPoints(a,x,c,e,!1,null,n),x=0>Math.round(v.x)||0==Math.round(v.x)&&0>=Math.round(v.y)?1:-1,n=!1,"sharp"==f?(a.lineTo(C.x-v.y*x,C.y+v.x*x),a.lineTo(y.x-v.y*x,y.y+v.x*x),a.lineTo(y.x,y.y)):"arc"==f?(x*=1.3,a.curveTo(C.x-v.y*x,C.y+v.x*x,y.x-v.y*x,y.y+v.x*x,y.x,y.y)):(a.moveTo(y.x,y.y),n=!0),x=[y],C=!0))}else v=null;C||(x.push(m),g=m)}this.addPoints(a,x,c,e,!1,null,n);a.stroke()}};var m=mxGraphView.prototype.updateFloatingTerminalPoint; mxGraphView.prototype.updateFloatingTerminalPoint=function(a,b,c,e){if(null==b||null==a||"1"!=b.style.snapToPoint&&"1"!=a.style.snapToPoint)m.apply(this,arguments);else{b=this.getTerminalPort(a,b,e);var d=this.getNextPoint(a,c,e),f=this.graph.isOrthogonal(a),n=mxUtils.toRadians(Number(b.style[mxConstants.STYLE_ROTATION]||"0")),g=new mxPoint(b.getCenterX(),b.getCenterY());if(0!=n)var l=Math.cos(-n),x=Math.sin(-n),d=mxUtils.getRotatedPoint(d,l,x,g);l=parseFloat(a.style[mxConstants.STYLE_PERIMETER_SPACING]|| 0);l+=parseFloat(a.style[e?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);d=this.getPerimeterPoint(b,d,0==n&&f,l);0!=n&&(l=Math.cos(n),x=Math.sin(n),d=mxUtils.getRotatedPoint(d,l,x,g));a.setAbsoluteTerminalPoint(this.snapToAnchorPoint(a,b,c,e,d),e)}};mxGraphView.prototype.snapToAnchorPoint=function(a,b,c,e,d){if(null!=b&&null!=a){a=this.graph.getAllConnectionConstraints(b);e=c=null;if(null!=a)for(var f=0;f<a.length;f++){var k=this.graph.getConnectionPoint(b, a[f]);if(null!=k){var g=(k.x-d.x)*(k.x-d.x)+(k.y-d.y)*(k.y-d.y);if(null==e||g<e)c=k,e=g}}null!=c&&(d=c)}return d};var p=mxStencil.prototype.evaluateTextAttribute;mxStencil.prototype.evaluateTextAttribute=function(a,b,c){var e=p.apply(this,arguments);"1"==a.getAttribute("placeholders")&&null!=c.state&&(e=c.state.view.graph.replacePlaceholders(c.state.cell,e));return e};var u=mxCellRenderer.prototype.createShape;mxCellRenderer.prototype.createShape=function(a){if(null!=a.style&&"undefined"!==typeof pako){var b= @@ -2397,88 +2397,88 @@ this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED];return a};mxConnectionHand orthogonalLoop:"1"};Graph.prototype.createCurrentEdgeStyle=function(){var a="edgeStyle="+(this.currentEdgeStyle.edgeStyle||"none")+";";null!=this.currentEdgeStyle.shape&&(a+="shape="+this.currentEdgeStyle.shape+";");null!=this.currentEdgeStyle.curved&&(a+="curved="+this.currentEdgeStyle.curved+";");null!=this.currentEdgeStyle.rounded&&(a+="rounded="+this.currentEdgeStyle.rounded+";");null!=this.currentEdgeStyle.comic&&(a+="comic="+this.currentEdgeStyle.comic+";");null!=this.currentEdgeStyle.jumpStyle&& (a+="jumpStyle="+this.currentEdgeStyle.jumpStyle+";");null!=this.currentEdgeStyle.jumpSize&&(a+="jumpSize="+this.currentEdgeStyle.jumpSize+";");null!=this.currentEdgeStyle.orthogonalLoop?a+="orthogonalLoop="+this.currentEdgeStyle.orthogonalLoop+";":null!=Graph.prototype.defaultEdgeStyle.orthogonalLoop&&(a+="orthogonalLoop="+Graph.prototype.defaultEdgeStyle.orthogonalLoop+";");null!=this.currentEdgeStyle.jettySize?a+="jettySize="+this.currentEdgeStyle.jettySize+";":null!=Graph.prototype.defaultEdgeStyle.jettySize&& (a+="jettySize="+Graph.prototype.defaultEdgeStyle.jettySize+";");"elbowEdgeStyle"==this.currentEdgeStyle.edgeStyle&&null!=this.currentEdgeStyle.elbow&&(a+="elbow="+this.currentEdgeStyle.elbow+";");return a=null!=this.currentEdgeStyle.html?a+("html="+this.currentEdgeStyle.html+";"):a+"html=1;"};Graph.prototype.getPagePadding=function(){return new mxPoint(0,0)};Graph.prototype.loadStylesheet=function(){var a=null!=this.themes?this.themes[this.defaultThemeName]:mxStyleRegistry.dynamicLoading?mxUtils.load(STYLE_PATH+ -"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())};Graph.prototype.createCellLookup=function(a,c){c=null!=c?c:{};for(var b=0;b<a.length;b++){var e=a[b];c[mxObjectIdentity.get(e)]=e.getId();for(var d=this.model.getChildCount(e),k=0;k<d;k++)this.createCellLookup([this.model.getChildAt(e,k)],c)}return c};Graph.prototype.createCellMapping=function(a,c,b){b=null!=b?b:{};for(var e in a){var d=c[e];null==b[d]&&(b[d]=a[e].getId()||"")}return b}; -Graph.prototype.importGraphModel=function(a,c,b,e){c=null!=c?c:0;b=null!=b?b:0;var d=new mxCodec(a.ownerDocument),k=new mxGraphModel;d.decode(a,k);a=[];var d={},g={},f=k.getChildren(this.cloneCell(k.root,this.isCloneInvalidEdges(),d));if(null!=f){var n=this.createCellLookup([k.root]),f=f.slice();this.model.beginUpdate();try{if(1!=f.length||this.isCellLocked(this.getDefaultParent()))for(k=0;k<f.length;k++)a=a.concat(this.model.getChildren(this.moveCells([f[k]],c,b,!1,this.model.getRoot())[0]));else a= -this.moveCells(k.getChildren(f[0]),c,b,!1,this.getDefaultParent()),g[k.getChildAt(k.root,0).getId()]=this.getDefaultParent().getId();this.createCellMapping(d,n,g);this.updateCustomLinks(g,a);if(e){this.isGridEnabled()&&(c=this.snap(c),b=this.snap(b));var v=this.getBoundingBoxFromGeometry(a,!0);null!=v&&this.moveCells(a,c-v.x,b-v.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var c={},b=this.cloneCells(a,null,c),e=new mxDictionary,d=0;d<a.length;d++)e.put(a[d], -!0);for(d=0;d<b.length;d++){var k=this.view.getState(a[d]);if(null!=k){var f=this.getCellGeometry(b[d]);null==f||!f.relative||this.model.isEdge(a[d])||e.get(this.model.getParent(a[d]))||(f.relative=!1,f.x=k.x/k.view.scale-k.view.translate.x,f.y=k.y/k.view.scale-k.view.translate.y)}}e=new mxCodec;k=new mxGraphModel;f=k.getChildAt(k.getRoot(),0);for(d=0;d<b.length;d++)k.add(f,b[d]);this.updateCustomLinks(this.createCellMapping(c,this.createCellLookup(a)),b);return e.encode(k)};var m=Graph.prototype.moveCells; -Graph.prototype.moveCells=function(a,c,b,d,e,k,f){f=null!=f?f:{};var g=m.apply(this,arguments);d&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(a)),g);return g};Graph.prototype.updateCustomLinks=function(a,c){for(var b=0;b<c.length;b++)null!=c[b]&&this.updateCustomLinksForCell(a,c[b])};Graph.prototype.updateCustomLinksForCell=function(a,c){};Graph.prototype.getAllConnectionConstraints=function(a,c){if(null!=a){var b=mxUtils.getValue(a.style,"points",null);if(null!=b){var d= -[];try{for(var e=JSON.parse(b),b=0;b<e.length;b++){var k=e[b];d.push(new mxConnectionConstraint(new mxPoint(k[0],k[1]),2<k.length?"0"!=k[2]:!0,null,3<k.length?k[3]:0,4<k.length?k[4]:0))}}catch(W){}return d}if(null!=a.shape&&null!=a.shape.bounds){k=a.shape.direction;e=a.shape.bounds;b=a.shape.scale;d=e.width/b;e=e.height/b;if(k==mxConstants.DIRECTION_NORTH||k==mxConstants.DIRECTION_SOUTH)k=d,d=e,e=k;b=a.shape.getConstraints(a.style,d,e);if(null!=b)return b;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints; -if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);null!=c&&(c=mxUtils.getValue(c,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,c,[a]))}};Graph.prototype.isValidRoot=function(a){for(var c=this.model.getChildCount(a),b=0,d=0;d<c;d++){var e= -this.model.getChildAt(a,d);this.model.isVertex(e)&&(e=this.getCellGeometry(e),null==e||e.relative||b++)}return 0<b||this.isContainer(a)};Graph.prototype.isValidDropTarget=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(c,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(c,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this, +"/default.xml").getDocumentElement():null;null!=a&&(new mxCodec(a.ownerDocument)).decode(a,this.getStylesheet())};Graph.prototype.createCellLookup=function(a,c){c=null!=c?c:{};for(var b=0;b<a.length;b++){var e=a[b];c[mxObjectIdentity.get(e)]=e.getId();for(var d=this.model.getChildCount(e),g=0;g<d;g++)this.createCellLookup([this.model.getChildAt(e,g)],c)}return c};Graph.prototype.createCellMapping=function(a,c,b){b=null!=b?b:{};for(var e in a){var d=c[e];null==b[d]&&(b[d]=a[e].getId()||"")}return b}; +Graph.prototype.importGraphModel=function(a,c,b,e){c=null!=c?c:0;b=null!=b?b:0;var d=new mxCodec(a.ownerDocument),g=new mxGraphModel;d.decode(a,g);a=[];var d={},k={},f=g.getChildren(this.cloneCell(g.root,this.isCloneInvalidEdges(),d));if(null!=f){var t=this.createCellLookup([g.root]),f=f.slice();this.model.beginUpdate();try{if(1!=f.length||this.isCellLocked(this.getDefaultParent()))for(g=0;g<f.length;g++)a=a.concat(this.model.getChildren(this.moveCells([f[g]],c,b,!1,this.model.getRoot())[0]));else a= +this.moveCells(g.getChildren(f[0]),c,b,!1,this.getDefaultParent()),k[g.getChildAt(g.root,0).getId()]=this.getDefaultParent().getId();this.createCellMapping(d,t,k);this.updateCustomLinks(k,a);if(e){this.isGridEnabled()&&(c=this.snap(c),b=this.snap(b));var n=this.getBoundingBoxFromGeometry(a,!0);null!=n&&this.moveCells(a,c-n.x,b-n.y)}}finally{this.model.endUpdate()}}return a};Graph.prototype.encodeCells=function(a){for(var c={},b=this.cloneCells(a,null,c),e=new mxDictionary,d=0;d<a.length;d++)e.put(a[d], +!0);for(d=0;d<b.length;d++){var g=this.view.getState(a[d]);if(null!=g){var f=this.getCellGeometry(b[d]);null==f||!f.relative||this.model.isEdge(a[d])||e.get(this.model.getParent(a[d]))||(f.relative=!1,f.x=g.x/g.view.scale-g.view.translate.x,f.y=g.y/g.view.scale-g.view.translate.y)}}e=new mxCodec;g=new mxGraphModel;f=g.getChildAt(g.getRoot(),0);for(d=0;d<b.length;d++)g.add(f,b[d]);this.updateCustomLinks(this.createCellMapping(c,this.createCellLookup(a)),b);return e.encode(g)};var m=Graph.prototype.moveCells; +Graph.prototype.moveCells=function(a,c,b,d,e,g,f){f=null!=f?f:{};var k=m.apply(this,arguments);d&&this.updateCustomLinks(this.createCellMapping(f,this.createCellLookup(a)),k);return k};Graph.prototype.updateCustomLinks=function(a,c){for(var b=0;b<c.length;b++)null!=c[b]&&this.updateCustomLinksForCell(a,c[b])};Graph.prototype.updateCustomLinksForCell=function(a,c){};Graph.prototype.getAllConnectionConstraints=function(a,c){if(null!=a){var b=mxUtils.getValue(a.style,"points",null);if(null!=b){var d= +[];try{for(var e=JSON.parse(b),b=0;b<e.length;b++){var g=e[b];d.push(new mxConnectionConstraint(new mxPoint(g[0],g[1]),2<g.length?"0"!=g[2]:!0,null,3<g.length?g[3]:0,4<g.length?g[4]:0))}}catch(W){}return d}if(null!=a.shape&&null!=a.shape.bounds){g=a.shape.direction;e=a.shape.bounds;b=a.shape.scale;d=e.width/b;e=e.height/b;if(g==mxConstants.DIRECTION_NORTH||g==mxConstants.DIRECTION_SOUTH)g=d,d=e,e=g;b=a.shape.getConstraints(a.style,d,e);if(null!=b)return b;if(null!=a.shape.stencil&&null!=a.shape.stencil.constraints)return a.shape.stencil.constraints; +if(null!=a.shape.constraints)return a.shape.constraints}}return null};Graph.prototype.flipEdge=function(a){if(null!=a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);null!=c&&(c=mxUtils.getValue(c,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL,this.setCellStyles(mxConstants.STYLE_ELBOW,c,[a]))}};Graph.prototype.isValidRoot=function(a){for(var c=this.model.getChildCount(a),b=0,e=0;e<c;e++){var d= +this.model.getChildAt(a,e);this.model.isVertex(d)&&(d=this.getCellGeometry(d),null==d||d.relative||b++)}return 0<b||this.isContainer(a)};Graph.prototype.isValidDropTarget=function(a){var c=this.view.getState(a),c=null!=c?c.style:this.getCellStyle(a);return"1"!=mxUtils.getValue(c,"part","0")&&(this.isContainer(a)||mxGraph.prototype.isValidDropTarget.apply(this,arguments)&&"0"!=mxUtils.getValue(c,"dropTarget","1"))};Graph.prototype.createGroupCell=function(){var a=mxGraph.prototype.createGroupCell.apply(this, arguments);a.setStyle("group");return a};Graph.prototype.isExtendParentsOnAdd=function(a){var c=mxGraph.prototype.isExtendParentsOnAdd.apply(this,arguments);if(c&&null!=a&&null!=this.layoutManager){var b=this.model.getParent(a);null!=b&&(b=this.layoutManager.getLayout(b),null!=b&&b.constructor==mxStackLayout&&(c=!1))}return c};Graph.prototype.getPreferredSizeForCell=function(a){var c=mxGraph.prototype.getPreferredSizeForCell.apply(this,arguments);null!=c&&(c.width+=10,c.height+=4,this.gridEnabled&& -(c.width=this.snap(c.width),c.height=this.snap(c.height)));return c};Graph.prototype.turnShapes=function(a){var c=this.getModel(),b=[];c.beginUpdate();try{for(var d=0;d<a.length;d++){var e=a[d];if(c.isEdge(e)){var k=c.getTerminal(e,!0),f=c.getTerminal(e,!1);c.setTerminal(e,f,!0);c.setTerminal(e,k,!1);var g=c.getGeometry(e);if(null!=g){g=g.clone();null!=g.points&&g.points.reverse();var v=g.getTerminalPoint(!0),n=g.getTerminalPoint(!1);g.setTerminalPoint(v,!1);g.setTerminalPoint(n,!0);c.setGeometry(e, -g);var q=this.view.getState(e),t=this.view.getState(k),l=this.view.getState(f);if(null!=q){var x=null!=t?this.getConnectionConstraint(q,t,!0):null,y=null!=l?this.getConnectionConstraint(q,l,!1):null;this.setConnectionConstraint(e,k,!0,y);this.setConnectionConstraint(e,f,!1,x)}b.push(e)}}else if(c.isVertex(e)&&(g=this.getCellGeometry(e),null!=g)){g=g.clone();g.x+=g.width/2-g.height/2;g.y+=g.height/2-g.width/2;var J=g.width;g.width=g.height;g.height=J;c.setGeometry(e,g);var A=this.view.getState(e); -if(null!=A){var O=A.style[mxConstants.STYLE_DIRECTION]||"east";"east"==O?O="south":"south"==O?O="west":"west"==O?O="north":"north"==O&&(O="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,O,[e])}b.push(e)}}}finally{c.endUpdate()}return b};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this, +(c.width=this.snap(c.width),c.height=this.snap(c.height)));return c};Graph.prototype.turnShapes=function(a){var c=this.getModel(),b=[];c.beginUpdate();try{for(var d=0;d<a.length;d++){var e=a[d];if(c.isEdge(e)){var g=c.getTerminal(e,!0),f=c.getTerminal(e,!1);c.setTerminal(e,f,!0);c.setTerminal(e,g,!1);var k=c.getGeometry(e);if(null!=k){k=k.clone();null!=k.points&&k.points.reverse();var t=k.getTerminalPoint(!0),n=k.getTerminalPoint(!1);k.setTerminalPoint(t,!1);k.setTerminalPoint(n,!0);c.setGeometry(e, +k);var q=this.view.getState(e),v=this.view.getState(g),x=this.view.getState(f);if(null!=q){var l=null!=v?this.getConnectionConstraint(q,v,!0):null,y=null!=x?this.getConnectionConstraint(q,x,!1):null;this.setConnectionConstraint(e,g,!0,y);this.setConnectionConstraint(e,f,!1,l)}b.push(e)}}else if(c.isVertex(e)&&(k=this.getCellGeometry(e),null!=k)){k=k.clone();k.x+=k.width/2-k.height/2;k.y+=k.height/2-k.width/2;var z=k.width;k.width=k.height;k.height=z;c.setGeometry(e,k);var J=this.view.getState(e); +if(null!=J){var O=J.style[mxConstants.STYLE_DIRECTION]||"east";"east"==O?O="south":"south"==O?O="west":"west"==O?O="north":"north"==O&&(O="east");this.setCellStyles(mxConstants.STYLE_DIRECTION,O,[e])}b.push(e)}}}finally{c.endUpdate()}return b};Graph.prototype.stencilHasPlaceholders=function(a){if(null!=a&&null!=a.fgNode)for(a=a.fgNode.firstChild;null!=a;){if("text"==a.nodeName&&"1"==a.getAttribute("placeholders"))return!0;a=a.nextSibling}return!1};Graph.prototype.processChange=function(a){mxGraph.prototype.processChange.apply(this, arguments);if(a instanceof mxValueChange&&null!=a.cell&&null!=a.cell.value&&"object"==typeof a.cell.value){var c=this.model.getDescendants(a.cell);if(0<c.length)for(var b=0;b<c.length;b++){var e=this.view.getState(c[b]);null!=e&&null!=e.shape&&null!=e.shape.stencil&&this.stencilHasPlaceholders(e.shape.stencil)?this.removeStateForCell(c[b]):this.isReplacePlaceholders(c[b])&&this.view.invalidate(c[b],!1,!1)}}};Graph.prototype.replaceElement=function(a,c){for(var b=a.ownerDocument.createElement(null!= -c?c:"span"),e=Array.prototype.slice.call(a.attributes);attr=e.pop();)b.setAttribute(attr.nodeName,attr.nodeValue);b.innerHTML=a.innerHTML;a.parentNode.replaceChild(b,a)};Graph.prototype.processElements=function(a,c){if(null!=a)for(var b=a.getElementsByTagName("*"),e=0;e<b.length;e++)c(b[e])};Graph.prototype.updateLabelElements=function(a,c,b){a=null!=a?a:this.getSelectionCells();for(var e=document.createElement("div"),d=0;d<a.length;d++)if(this.isHtmlLabel(a[d])){var k=this.convertValueToString(a[d]); -if(null!=k&&0<k.length){e.innerHTML=k;for(var g=e.getElementsByTagName(null!=b?b:"*"),f=0;f<g.length;f++)c(g[f]);e.innerHTML!=k&&this.cellLabelChanged(a[d],e.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,c,b){c=Graph.zapGremlins(c);this.model.beginUpdate();try{if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var e=a.getAttribute("placeholder"),d=a;null!=d;){if(d==this.model.getRoot()||null!=d.value&&"object"==typeof d.value&& -d.hasAttribute(e)){this.setAttributeForCell(d,e,c);break}d=this.model.getParent(d)}var k=a.value.cloneNode(!0);k.setAttribute("label",c);c=k}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var c=new mxDictionary,b=0;b<a.length;b++)c.put(a[b],!0);for(var e=[],b=0;b<a.length;b++){var d=this.model.getParent(a[b]);null==d||c.get(d)||(c.put(d,!0),e.push(d))}for(b=0;b<e.length;b++)if(d=this.view.getState(e[b]), -null!=d&&(this.model.isEdge(d.cell)||this.model.isVertex(d.cell))&&this.isCellDeletable(d.cell)&&this.isTransparentState(d)){for(var k=!0,g=0;g<this.model.getChildCount(d.cell)&&k;g++)c.get(this.model.getChildAt(d.cell,g))||(k=!1);k&&a.push(d.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(a){for(var c=[],b=0;b<a.length;b++)this.isCellDeletable(a[b])&&this.isTransparentState(this.view.getState(a[b]))&&c.push(a[b]);a=c;mxGraph.prototype.removeCellsAfterUngroup.apply(this, +c?c:"span"),e=Array.prototype.slice.call(a.attributes);attr=e.pop();)b.setAttribute(attr.nodeName,attr.nodeValue);b.innerHTML=a.innerHTML;a.parentNode.replaceChild(b,a)};Graph.prototype.processElements=function(a,c){if(null!=a)for(var b=a.getElementsByTagName("*"),e=0;e<b.length;e++)c(b[e])};Graph.prototype.updateLabelElements=function(a,c,b){a=null!=a?a:this.getSelectionCells();for(var e=document.createElement("div"),d=0;d<a.length;d++)if(this.isHtmlLabel(a[d])){var g=this.convertValueToString(a[d]); +if(null!=g&&0<g.length){e.innerHTML=g;for(var k=e.getElementsByTagName(null!=b?b:"*"),f=0;f<k.length;f++)c(k[f]);e.innerHTML!=g&&this.cellLabelChanged(a[d],e.innerHTML)}}};Graph.prototype.cellLabelChanged=function(a,c,b){c=Graph.zapGremlins(c);this.model.beginUpdate();try{if(null!=a.value&&"object"==typeof a.value){if(this.isReplacePlaceholders(a)&&null!=a.getAttribute("placeholder"))for(var e=a.getAttribute("placeholder"),d=a;null!=d;){if(d==this.model.getRoot()||null!=d.value&&"object"==typeof d.value&& +d.hasAttribute(e)){this.setAttributeForCell(d,e,c);break}d=this.model.getParent(d)}var g=a.value.cloneNode(!0);g.setAttribute("label",c);c=g}mxGraph.prototype.cellLabelChanged.apply(this,arguments)}finally{this.model.endUpdate()}};Graph.prototype.cellsRemoved=function(a){if(null!=a){for(var c=new mxDictionary,b=0;b<a.length;b++)c.put(a[b],!0);for(var e=[],b=0;b<a.length;b++){var d=this.model.getParent(a[b]);null==d||c.get(d)||(c.put(d,!0),e.push(d))}for(b=0;b<e.length;b++)if(d=this.view.getState(e[b]), +null!=d&&(this.model.isEdge(d.cell)||this.model.isVertex(d.cell))&&this.isCellDeletable(d.cell)&&this.isTransparentState(d)){for(var g=!0,k=0;k<this.model.getChildCount(d.cell)&&g;k++)c.get(this.model.getChildAt(d.cell,k))||(g=!1);g&&a.push(d.cell)}}mxGraph.prototype.cellsRemoved.apply(this,arguments)};Graph.prototype.removeCellsAfterUngroup=function(a){for(var c=[],b=0;b<a.length;b++)this.isCellDeletable(a[b])&&this.isTransparentState(this.view.getState(a[b]))&&c.push(a[b]);a=c;mxGraph.prototype.removeCellsAfterUngroup.apply(this, arguments)};Graph.prototype.setLinkForCell=function(a,c){this.setAttributeForCell(a,"link",c)};Graph.prototype.setTooltipForCell=function(a,c){this.setAttributeForCell(a,"tooltip",c)};Graph.prototype.getAttributeForCell=function(a,c,b){a=null!=a.value&&"object"===typeof a.value?a.value.getAttribute(c):null;return null!=a?a:b};Graph.prototype.setAttributeForCell=function(a,c,b){var e;null!=a.value&&"object"==typeof a.value?e=a.value.cloneNode(!0):(e=mxUtils.createXmlDocument().createElement("UserObject"), e.setAttribute("label",a.value||""));null!=b?e.setAttribute(c,b):e.removeAttribute(c);this.model.setValue(a,e)};Graph.prototype.getDropTarget=function(a,c,b,e){this.getModel();if(mxEvent.isAltDown(c))return null;for(var d=0;d<a.length;d++)if(this.model.isEdge(this.model.getParent(a[d])))return null;return mxGraph.prototype.getDropTarget.apply(this,arguments)};Graph.prototype.click=function(a){mxGraph.prototype.click.call(this,a);this.firstClickState=a.getState();this.firstClickSource=a.getSource()}; Graph.prototype.dblClick=function(a,c){if(this.isEnabled()){var b=mxUtils.convertPoint(this.container,mxEvent.getClientX(a),mxEvent.getClientY(a));if(null!=a&&!this.model.isVertex(c)){var e=this.model.isEdge(c)?this.view.getState(c):null,d=mxEvent.getSource(a);this.firstClickState!=e||this.firstClickSource!=d||null!=e&&null!=e.text&&null!=e.text.node&&null!=e.text.boundingBox&&(mxUtils.contains(e.text.boundingBox,b.x,b.y)||mxUtils.isAncestorNode(e.text.node,mxEvent.getSource(a)))||(null!=e||this.isCellLocked(this.getDefaultParent()))&& (null==e||this.isCellLocked(e.cell))||!(null!=e||mxClient.IS_VML&&d==this.view.getCanvas()||mxClient.IS_SVG&&d==this.view.getCanvas().ownerSVGElement)||(c=this.addText(b.x,b.y,e))}mxGraph.prototype.dblClick.call(this,a,c)}};Graph.prototype.getInsertPoint=function(){var a=this.getGridSize(),c=this.container.scrollLeft/this.view.scale-this.view.translate.x,b=this.container.scrollTop/this.view.scale-this.view.translate.y;if(this.pageVisible)var e=this.getPageLayout(),d=this.getPageSize(),c=Math.max(c, e.x*d.width),b=Math.max(b,e.y*d.height);return new mxPoint(this.snap(c+a),this.snap(b+a))};Graph.prototype.getFreeInsertPoint=function(){var a=this.view,c=this.getGraphBounds(),b=this.getInsertPoint(),e=this.snap(Math.round(Math.max(b.x,c.x/a.scale-a.translate.x+(0==c.width?2*this.gridSize:0)))),a=this.snap(Math.round(Math.max(b.y,(c.y+c.height)/a.scale-a.translate.y+2*this.gridSize)));return new mxPoint(e,a)};Graph.prototype.isMouseInsertPoint=function(){return!1};Graph.prototype.addText=function(a, -c,b){var e=new mxCell;e.value="Text";e.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";e.geometry=new mxGeometry(0,0,0,0);e.vertex=!0;if(null!=b){e.style+="labelBackgroundColor=#ffffff;";e.geometry.relative=!0;e.connectable=!1;var d=this.view.getRelativePoint(b,a,c);e.geometry.x=Math.round(1E4*d.x)/1E4;e.geometry.y=Math.round(d.y);e.geometry.offset=new mxPoint(0,0);var d=this.view.getPoint(b,e.geometry),k=this.view.scale;e.geometry.offset=new mxPoint(Math.round((a-d.x)/ -k),Math.round((c-d.y)/k))}else e.style+="autosize=1;",d=this.view.translate,e.geometry.width=40,e.geometry.height=20,e.geometry.x=Math.round(a/this.view.scale)-d.x,e.geometry.y=Math.round(c/this.view.scale)-d.y;this.getModel().beginUpdate();try{this.addCells([e],null!=b?b.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[e])),this.autoSizeCell(e)}finally{this.getModel().endUpdate()}return e};Graph.prototype.addClickHandler=function(a,c,b){var e=mxUtils.bind(this,function(){var a= -this.container.getElementsByTagName("a");if(null!=a)for(var b=0;b<a.length;b++){var e=this.getAbsoluteUrl(a[b].getAttribute("href"));null!=e&&(a[b].setAttribute("rel",this.linkRelation),a[b].setAttribute("href",e),null!=c&&mxEvent.addGestureListeners(a[b],null,null,c))}});this.model.addListener(mxEvent.CHANGE,e);e();var d=this.container.style.cursor,k=this.getTolerance(),g=this,f={currentState:null,currentLink:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(g,a,4):null,startX:0, -startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var c=a.sourceState;if(null==c||null==g.getLinkForCell(c.cell))a=g.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,c,b){return null==g.getLinkForCell(a.cell)}),c=g.view.getState(a);c!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=c,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(a,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=g.container.scrollLeft; -this.scrollTop=g.container.scrollTop;null==this.currentLink&&"auto"==g.container.style.overflow&&(g.container.style.cursor="move");this.updateCurrentState(c)},mouseMove:function(a,c){if(g.isMouseDown){if(null!=this.currentLink){var b=Math.abs(this.startX-c.getGraphX()),e=Math.abs(this.startY-c.getGraphY());(b>k||e>k)&&this.clear()}}else{for(b=c.getSource();null!=b&&"a"!=b.nodeName.toLowerCase();)b=b.parentNode;null!=b?this.clear():(null!=g.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&& -g.tooltipHandler.reset(c,!0,this.currentState),(null==this.currentState||c.getState()!=this.currentState&&null!=c.sourceState||!g.intersects(this.currentState,c.getGraphX(),c.getGraphY()))&&this.updateCurrentState(c))}},mouseUp:function(a,e){for(var d=e.getSource(),f=e.getEvent();null!=d&&"a"!=d.nodeName.toLowerCase();)d=d.parentNode;null==d&&Math.abs(this.scrollLeft-g.container.scrollLeft)<k&&Math.abs(this.scrollTop-g.container.scrollTop)<k&&(null==e.sourceState||!e.isSource(e.sourceState.control))&& -((mxEvent.isLeftMouseButton(f)||mxEvent.isMiddleMouseButton(f))&&!mxEvent.isPopupTrigger(f)||mxEvent.isTouchEvent(f))&&(null!=this.currentLink?(d=g.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&d||null==c||c(f,this.currentLink),mxEvent.isConsumed(f)||(f=mxEvent.isMiddleMouseButton(f)?"_blank":d?g.linkTarget:"_top",g.openLink(this.currentLink,f),e.consume())):null!=b&&!e.isConsumed()&&Math.abs(this.scrollLeft-g.container.scrollLeft)<k&&Math.abs(this.scrollTop-g.container.scrollTop)< -k&&Math.abs(this.startX-e.getGraphX())<k&&Math.abs(this.startY-e.getGraphY())<k&&b(e.getEvent()));this.clear()},activate:function(a){this.currentLink=g.getAbsoluteUrl(g.getLinkForCell(a.cell));null!=this.currentLink&&(g.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=g.container&&(g.container.style.cursor=d);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=g.tooltipHandler&&g.tooltipHandler.hide()}}; -g.click=function(a){};g.addMouseListener(f);mxEvent.addListener(document,"mouseleave",function(a){f.clear()})};Graph.prototype.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();c=null!=c?c:!0;a=this.model.getTopmostCells(a);var b=this.getModel(),e=this.gridSize,d=[];b.beginUpdate();try{for(var k=this.cloneCells(a,!1,null,!0),g=0;g<a.length;g++){var f=b.getParent(a[g]),v=this.moveCells([k[g]],e,e,!1)[0];d.push(v);if(c)b.add(f,k[g]);else{var n=f.getIndex(a[g]);b.add(f,k[g],n+1)}}}finally{b.endUpdate()}return d}; -Graph.prototype.insertImage=function(a,c,b){if(null!=a&&null!=this.cellEditor.textarea){for(var e=this.cellEditor.textarea.getElementsByTagName("img"),d=[],k=0;k<e.length;k++)d.push(e[k]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==d.length+1)for(k=a.length-1;0<=k;k--)if(0==k||a[k]!=d[k-1]){a[k].setAttribute("width",c);a[k].setAttribute("height",b);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0== +c,b){var e=new mxCell;e.value="Text";e.style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];";e.geometry=new mxGeometry(0,0,0,0);e.vertex=!0;if(null!=b){e.style+="labelBackgroundColor=#ffffff;";e.geometry.relative=!0;e.connectable=!1;var d=this.view.getRelativePoint(b,a,c);e.geometry.x=Math.round(1E4*d.x)/1E4;e.geometry.y=Math.round(d.y);e.geometry.offset=new mxPoint(0,0);var d=this.view.getPoint(b,e.geometry),g=this.view.scale;e.geometry.offset=new mxPoint(Math.round((a-d.x)/ +g),Math.round((c-d.y)/g))}else e.style+="autosize=1;",d=this.view.translate,e.geometry.width=40,e.geometry.height=20,e.geometry.x=Math.round(a/this.view.scale)-d.x,e.geometry.y=Math.round(c/this.view.scale)-d.y;this.getModel().beginUpdate();try{this.addCells([e],null!=b?b.cell:null),this.fireEvent(new mxEventObject("textInserted","cells",[e])),this.autoSizeCell(e)}finally{this.getModel().endUpdate()}return e};Graph.prototype.addClickHandler=function(a,c,b){var e=mxUtils.bind(this,function(){var a= +this.container.getElementsByTagName("a");if(null!=a)for(var b=0;b<a.length;b++){var e=this.getAbsoluteUrl(a[b].getAttribute("href"));null!=e&&(a[b].setAttribute("rel",this.linkRelation),a[b].setAttribute("href",e),null!=c&&mxEvent.addGestureListeners(a[b],null,null,c))}});this.model.addListener(mxEvent.CHANGE,e);e();var d=this.container.style.cursor,g=this.getTolerance(),k=this,f={currentState:null,currentLink:null,highlight:null!=a&&""!=a&&a!=mxConstants.NONE?new mxCellHighlight(k,a,4):null,startX:0, +startY:0,scrollLeft:0,scrollTop:0,updateCurrentState:function(a){var c=a.sourceState;if(null==c||null==k.getLinkForCell(c.cell))a=k.getCellAt(a.getGraphX(),a.getGraphY(),null,null,null,function(a,c,b){return null==k.getLinkForCell(a.cell)}),c=k.view.getState(a);c!=this.currentState&&(null!=this.currentState&&this.clear(),this.currentState=c,null!=this.currentState&&this.activate(this.currentState))},mouseDown:function(a,c){this.startX=c.getGraphX();this.startY=c.getGraphY();this.scrollLeft=k.container.scrollLeft; +this.scrollTop=k.container.scrollTop;null==this.currentLink&&"auto"==k.container.style.overflow&&(k.container.style.cursor="move");this.updateCurrentState(c)},mouseMove:function(a,c){if(k.isMouseDown){if(null!=this.currentLink){var b=Math.abs(this.startX-c.getGraphX()),e=Math.abs(this.startY-c.getGraphY());(b>g||e>g)&&this.clear()}}else{for(b=c.getSource();null!=b&&"a"!=b.nodeName.toLowerCase();)b=b.parentNode;null!=b?this.clear():(null!=k.tooltipHandler&&null!=this.currentLink&&null!=this.currentState&& +k.tooltipHandler.reset(c,!0,this.currentState),(null==this.currentState||c.getState()!=this.currentState&&null!=c.sourceState||!k.intersects(this.currentState,c.getGraphX(),c.getGraphY()))&&this.updateCurrentState(c))}},mouseUp:function(a,e){for(var d=e.getSource(),f=e.getEvent();null!=d&&"a"!=d.nodeName.toLowerCase();)d=d.parentNode;null==d&&Math.abs(this.scrollLeft-k.container.scrollLeft)<g&&Math.abs(this.scrollTop-k.container.scrollTop)<g&&(null==e.sourceState||!e.isSource(e.sourceState.control))&& +((mxEvent.isLeftMouseButton(f)||mxEvent.isMiddleMouseButton(f))&&!mxEvent.isPopupTrigger(f)||mxEvent.isTouchEvent(f))&&(null!=this.currentLink?(d=k.isBlankLink(this.currentLink),"data:"!==this.currentLink.substring(0,5)&&d||null==c||c(f,this.currentLink),mxEvent.isConsumed(f)||(f=mxEvent.isMiddleMouseButton(f)?"_blank":d?k.linkTarget:"_top",k.openLink(this.currentLink,f),e.consume())):null!=b&&!e.isConsumed()&&Math.abs(this.scrollLeft-k.container.scrollLeft)<g&&Math.abs(this.scrollTop-k.container.scrollTop)< +g&&Math.abs(this.startX-e.getGraphX())<g&&Math.abs(this.startY-e.getGraphY())<g&&b(e.getEvent()));this.clear()},activate:function(a){this.currentLink=k.getAbsoluteUrl(k.getLinkForCell(a.cell));null!=this.currentLink&&(k.container.style.cursor="pointer",null!=this.highlight&&this.highlight.highlight(a))},clear:function(){null!=k.container&&(k.container.style.cursor=d);this.currentLink=this.currentState=null;null!=this.highlight&&this.highlight.hide();null!=k.tooltipHandler&&k.tooltipHandler.hide()}}; +k.click=function(a){};k.addMouseListener(f);mxEvent.addListener(document,"mouseleave",function(a){f.clear()})};Graph.prototype.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();c=null!=c?c:!0;a=this.model.getTopmostCells(a);var b=this.getModel(),e=this.gridSize,d=[];b.beginUpdate();try{for(var g=this.cloneCells(a,!1,null,!0),k=0;k<a.length;k++){var f=b.getParent(a[k]),t=this.moveCells([g[k]],e,e,!1)[0];d.push(t);if(c)b.add(f,g[k]);else{var n=f.getIndex(a[k]);b.add(f,g[k],n+1)}}}finally{b.endUpdate()}return d}; +Graph.prototype.insertImage=function(a,c,b){if(null!=a&&null!=this.cellEditor.textarea){for(var e=this.cellEditor.textarea.getElementsByTagName("img"),d=[],g=0;g<e.length;g++)d.push(e[g]);document.execCommand("insertimage",!1,a);a=this.cellEditor.textarea.getElementsByTagName("img");if(a.length==d.length+1)for(g=a.length-1;0<=g;g--)if(0==g||a[g]!=d[g-1]){a[g].setAttribute("width",c);a[g].setAttribute("height",b);break}}};Graph.prototype.insertLink=function(a){if(null!=this.cellEditor.textarea)if(0== a.length)document.execCommand("unlink",!1);else if(mxClient.IS_FF){for(var c=this.cellEditor.textarea.getElementsByTagName("a"),b=[],e=0;e<c.length;e++)b.push(c[e]);document.execCommand("createlink",!1,mxUtils.trim(a));c=this.cellEditor.textarea.getElementsByTagName("a");if(c.length==b.length+1)for(e=c.length-1;0<=e;e--)if(c[e]!=b[e-1]){for(c=c[e].getElementsByTagName("a");0<c.length;){for(b=c[0].parentNode;null!=c[0].firstChild;)b.insertBefore(c[0].firstChild,c[0]);b.removeChild(c[0])}break}}else document.execCommand("createlink", -!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var c=mxGraph.prototype.isCellResizable.apply(this,arguments),b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return c||"0"!=mxUtils.getValue(b,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==b[mxConstants.STYLE_WHITE_SPACE]};Graph.prototype.distributeCells=function(a,c){null==c&&(c=this.getSelectionCells());if(null!=c&&1<c.length){for(var b=[],e=null,d=null,k=0;k<c.length;k++)if(this.getModel().isVertex(c[k])){var g=this.view.getState(c[k]); -if(null!=g){var f=a?g.getCenterX():g.getCenterY(),e=null!=e?Math.max(e,f):f,d=null!=d?Math.min(d,f):f;b.push(g)}}if(2<b.length){b.sort(function(c,b){return a?c.x-b.x:c.y-b.y});g=this.view.translate;f=this.view.scale;d=d/f-(a?g.x:g.y);e=e/f-(a?g.x:g.y);this.getModel().beginUpdate();try{for(var v=(e-d)/(b.length-1),e=d,k=1;k<b.length-1;k++){var n=this.view.getState(this.model.getParent(b[k].cell)),q=this.getCellGeometry(b[k].cell),e=e+v;null!=q&&null!=n&&(q=q.clone(),a?q.x=Math.round(e-q.width/2)-n.origin.x: -q.y=Math.round(e-q.height/2)-n.origin.y,this.getModel().setGeometry(b[k].cell,q))}}finally{this.getModel().endUpdate()}}}return c};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.createSvgImageExport=function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,c){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,c,b,e,d,k,g,f,n,v){var q=this.useCssTransforms;q&& -(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{c=null!=c?c:1;b=null!=b?b:0;d=null!=d?d:!0;k=null!=k?k:!0;g=null!=g?g:!0;var t=k||e?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==t)throw Error(mxResources.get("drawingEmpty"));var l=this.view.scale,x=mxUtils.createXmlDocument(),y=null!=x.createElementNS?x.createElementNS(mxConstants.NS_SVG,"svg"):x.createElement("svg");null!=a&&(null!=y.style?y.style.backgroundColor=a:y.setAttribute("style", -"background-color:"+a));null==x.createElementNS?(y.setAttribute("xmlns",mxConstants.NS_SVG),y.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):y.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=c/l;var J=Math.max(1,Math.ceil(t.width*a)+2*b)+(v?5:0),A=Math.max(1,Math.ceil(t.height*a)+2*b)+(v?5:0);y.setAttribute("version","1.1");y.setAttribute("width",J+"px");y.setAttribute("height",A+"px");y.setAttribute("viewBox",(d?"-0.5 -0.5":"0 0")+" "+J+" "+A);x.appendChild(y); -var E=null!=x.createElementNS?x.createElementNS(mxConstants.NS_SVG,"g"):x.createElement("g");y.appendChild(E);var u=this.createSvgCanvas(E);u.foOffset=d?-.5:0;u.textOffset=d?-.5:0;u.imageOffset=d?-.5:0;u.translate(Math.floor((b/c-t.x)/l),Math.floor((b/c-t.y)/l));var m=document.createElement("div"),I=u.getAlternateText;u.getAlternateText=function(a,c,b,e,d,k,g,f,n,v,q,t,x){if(null!=k&&0<this.state.fontSize)try{mxUtils.isNode(k)?k=k.innerText:(m.innerHTML=k,k=mxUtils.extractTextWithWhitespace(m.childNodes)); -for(var l=Math.ceil(2*e/this.state.fontSize),y=[],J=0,A=0;(0==l||J<l)&&A<k.length;){var E=k.charCodeAt(A);if(10==E||13==E){if(0<J)break}else y.push(k.charAt(A)),255>E&&J++;A++}y.length<k.length&&1<k.length-y.length&&(k=mxUtils.trim(y.join(""))+"...");return k}catch(Ga){return I.apply(this,arguments)}else return I.apply(this,arguments)};var M=this.backgroundImage;if(null!=M){c=l/c;var C=this.view.translate,p=new mxRectangle(C.x*c,C.y*c,M.width*c,M.height*c);mxUtils.intersects(t,p)&&u.image(C.x,C.y, -M.width,M.height,M.src,!0)}u.scale(a);u.textEnabled=g;f=null!=f?f:this.createSvgImageExport();var O=f.drawCellState,D=f.getLinkForCellState;f.getLinkForCellState=function(a,c){var b=D.apply(this,arguments);return null==b||a.view.graph.isCustomLink(b)?null:b};f.drawCellState=function(a,c){for(var b=a.view.graph,e=b.isCellSelected(a.cell),d=b.model.getParent(a.cell);!k&&!e&&null!=d;)e=b.isCellSelected(d),d=b.model.getParent(d);(k||e)&&O.apply(this,arguments)};f.drawState(this.getView().getState(this.model.root), -u);this.updateSvgLinks(y,n,!0);this.addForeignObjectWarning(u,y);return y}finally{q&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,c){if(0<c.getElementsByTagName("foreignObject").length){var b=a.createElement("switch"),e=a.createElement("g");e.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var d=a.createElement("a");d.setAttribute("transform","translate(0,-5)");null==d.setAttributeNS|| -c.ownerDocument!=document&&null==document.documentMode?(d.setAttribute("xlink:href",Graph.foreignObjectWarningLink),d.setAttribute("target","_blank")):(d.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),d.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var k=a.createElement("text");k.setAttribute("text-anchor","middle");k.setAttribute("font-size","10px");k.setAttribute("x","50%");k.setAttribute("y","100%");mxUtils.write(k,Graph.foreignObjectWarningText);b.appendChild(e); -d.appendChild(k);b.appendChild(d);c.appendChild(b)}};Graph.prototype.updateSvgLinks=function(a,c,b){a=a.getElementsByTagName("a");for(var e=0;e<a.length;e++){var d=a[e].getAttribute("href");null==d&&(d=a[e].getAttribute("xlink:href"));null!=d&&(null!=c&&/^https?:\/\//.test(d)?a[e].setAttribute("target",c):b&&this.isCustomLink(d)&&a[e].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){a=new mxSvgCanvas2D(a);a.pointerEvents=!0;return a};Graph.prototype.getSelectedElement= +!1,mxUtils.trim(a))};Graph.prototype.isCellResizable=function(a){var c=mxGraph.prototype.isCellResizable.apply(this,arguments),b=this.view.getState(a),b=null!=b?b.style:this.getCellStyle(a);return c||"0"!=mxUtils.getValue(b,mxConstants.STYLE_RESIZABLE,"1")&&"wrap"==b[mxConstants.STYLE_WHITE_SPACE]};Graph.prototype.distributeCells=function(a,c){null==c&&(c=this.getSelectionCells());if(null!=c&&1<c.length){for(var b=[],e=null,d=null,g=0;g<c.length;g++)if(this.getModel().isVertex(c[g])){var k=this.view.getState(c[g]); +if(null!=k){var f=a?k.getCenterX():k.getCenterY(),e=null!=e?Math.max(e,f):f,d=null!=d?Math.min(d,f):f;b.push(k)}}if(2<b.length){b.sort(function(c,b){return a?c.x-b.x:c.y-b.y});k=this.view.translate;f=this.view.scale;d=d/f-(a?k.x:k.y);e=e/f-(a?k.x:k.y);this.getModel().beginUpdate();try{for(var t=(e-d)/(b.length-1),e=d,g=1;g<b.length-1;g++){var n=this.view.getState(this.model.getParent(b[g].cell)),q=this.getCellGeometry(b[g].cell),e=e+t;null!=q&&null!=n&&(q=q.clone(),a?q.x=Math.round(e-q.width/2)-n.origin.x: +q.y=Math.round(e-q.height/2)-n.origin.y,this.getModel().setGeometry(b[g].cell,q))}}finally{this.getModel().endUpdate()}}}return c};Graph.prototype.isCloneEvent=function(a){return mxClient.IS_MAC&&mxEvent.isMetaDown(a)||mxEvent.isControlDown(a)};Graph.prototype.createSvgImageExport=function(){var a=new mxImageExport;a.getLinkForCellState=mxUtils.bind(this,function(a,c){return this.getLinkForCell(a.cell)});return a};Graph.prototype.getSvg=function(a,c,b,e,d,g,k,f,t,n){var q=this.useCssTransforms;q&& +(this.useCssTransforms=!1,this.view.revalidate(),this.sizeDidChange());try{c=null!=c?c:1;b=null!=b?b:0;d=null!=d?d:!0;g=null!=g?g:!0;k=null!=k?k:!0;var v=g||e?this.getGraphBounds():this.getBoundingBox(this.getSelectionCells());if(null==v)throw Error(mxResources.get("drawingEmpty"));var x=this.view.scale,l=mxUtils.createXmlDocument(),y=null!=l.createElementNS?l.createElementNS(mxConstants.NS_SVG,"svg"):l.createElement("svg");null!=a&&(null!=y.style?y.style.backgroundColor=a:y.setAttribute("style", +"background-color:"+a));null==l.createElementNS?(y.setAttribute("xmlns",mxConstants.NS_SVG),y.setAttribute("xmlns:xlink",mxConstants.NS_XLINK)):y.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mxConstants.NS_XLINK);a=c/x;var z=Math.max(1,Math.ceil(v.width*a)+2*b)+(n?5:0),J=Math.max(1,Math.ceil(v.height*a)+2*b)+(n?5:0);y.setAttribute("version","1.1");y.setAttribute("width",z+"px");y.setAttribute("height",J+"px");y.setAttribute("viewBox",(d?"-0.5 -0.5":"0 0")+" "+z+" "+J);l.appendChild(y); +var D=null!=l.createElementNS?l.createElementNS(mxConstants.NS_SVG,"g"):l.createElement("g");y.appendChild(D);var m=this.createSvgCanvas(D);m.foOffset=d?-.5:0;m.textOffset=d?-.5:0;m.imageOffset=d?-.5:0;m.translate(Math.floor((b/c-v.x)/x),Math.floor((b/c-v.y)/x));var u=document.createElement("div"),G=m.getAlternateText;m.getAlternateText=function(a,c,b,e,d,g,k,f,t,n,q,v,x){if(null!=g&&0<this.state.fontSize)try{mxUtils.isNode(g)?g=g.innerText:(u.innerHTML=g,g=mxUtils.extractTextWithWhitespace(u.childNodes)); +for(var l=Math.ceil(2*e/this.state.fontSize),y=[],z=0,J=0;(0==l||z<l)&&J<g.length;){var D=g.charCodeAt(J);if(10==D||13==D){if(0<z)break}else y.push(g.charAt(J)),255>D&&z++;J++}y.length<g.length&&1<g.length-y.length&&(g=mxUtils.trim(y.join(""))+"...");return g}catch(Ga){return G.apply(this,arguments)}else return G.apply(this,arguments)};var M=this.backgroundImage;if(null!=M){c=x/c;var C=this.view.translate,p=new mxRectangle(C.x*c,C.y*c,M.width*c,M.height*c);mxUtils.intersects(v,p)&&m.image(C.x,C.y, +M.width,M.height,M.src,!0)}m.scale(a);m.textEnabled=k;f=null!=f?f:this.createSvgImageExport();var O=f.drawCellState,E=f.getLinkForCellState;f.getLinkForCellState=function(a,c){var b=E.apply(this,arguments);return null==b||a.view.graph.isCustomLink(b)?null:b};f.drawCellState=function(a,c){for(var b=a.view.graph,e=b.isCellSelected(a.cell),d=b.model.getParent(a.cell);!g&&!e&&null!=d;)e=b.isCellSelected(d),d=b.model.getParent(d);(g||e)&&O.apply(this,arguments)};f.drawState(this.getView().getState(this.model.root), +m);this.updateSvgLinks(y,t,!0);this.addForeignObjectWarning(m,y);return y}finally{q&&(this.useCssTransforms=!0,this.view.revalidate(),this.sizeDidChange())}};Graph.prototype.addForeignObjectWarning=function(a,c){if(0<c.getElementsByTagName("foreignObject").length){var b=a.createElement("switch"),e=a.createElement("g");e.setAttribute("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility");var d=a.createElement("a");d.setAttribute("transform","translate(0,-5)");null==d.setAttributeNS|| +c.ownerDocument!=document&&null==document.documentMode?(d.setAttribute("xlink:href",Graph.foreignObjectWarningLink),d.setAttribute("target","_blank")):(d.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",Graph.foreignObjectWarningLink),d.setAttributeNS(mxConstants.NS_XLINK,"target","_blank"));var g=a.createElement("text");g.setAttribute("text-anchor","middle");g.setAttribute("font-size","10px");g.setAttribute("x","50%");g.setAttribute("y","100%");mxUtils.write(g,Graph.foreignObjectWarningText);b.appendChild(e); +d.appendChild(g);b.appendChild(d);c.appendChild(b)}};Graph.prototype.updateSvgLinks=function(a,c,b){a=a.getElementsByTagName("a");for(var e=0;e<a.length;e++){var d=a[e].getAttribute("href");null==d&&(d=a[e].getAttribute("xlink:href"));null!=d&&(null!=c&&/^https?:\/\//.test(d)?a[e].setAttribute("target",c):b&&this.isCustomLink(d)&&a[e].setAttribute("href","javascript:void(0);"))}};Graph.prototype.createSvgCanvas=function(a){a=new mxSvgCanvas2D(a);a.pointerEvents=!0;return a};Graph.prototype.getSelectedElement= function(){var a=null;if(window.getSelection){var c=window.getSelection();c.getRangeAt&&c.rangeCount&&(a=c.getRangeAt(0).commonAncestorContainer)}else document.selection&&(a=document.selection.createRange().parentElement());return a};Graph.prototype.getParentByName=function(a,c,b){for(;null!=a&&a.nodeName!=c;){if(a==b)return null;a=a.parentNode}return a};Graph.prototype.getParentByNames=function(a,c,b){for(;null!=a&&!(0<=mxUtils.indexOf(c,a.nodeName));){if(a==b)return null;a=a.parentNode}return a}; -Graph.prototype.selectNode=function(a){var c=null;if(window.getSelection){if(c=window.getSelection(),c.getRangeAt&&c.rangeCount){var b=document.createRange();b.selectNode(a);c.removeAllRanges();c.addRange(b)}}else(c=document.selection)&&"Control"!=c.type&&(a=c.createRange(),a.collapse(!0),b=c.createRange(),b.setEndPoint("StartToStart",a),b.select())};Graph.prototype.insertRow=function(a,c){for(var b=a.tBodies[0],e=b.rows[0].cells,d=0,k=0;k<e.length;k++)var g=e[k].getAttribute("colspan"),d=d+(null!= -g?parseInt(g):1);b=b.insertRow(c);for(k=0;k<d;k++)mxUtils.br(b.insertCell(-1));return b.cells[0]};Graph.prototype.deleteRow=function(a,c){a.tBodies[0].deleteRow(c)};Graph.prototype.insertColumn=function(a,c){var b=a.tHead;if(null!=b)for(var e=0;e<b.rows.length;e++){var d=document.createElement("th");b.rows[e].appendChild(d);mxUtils.br(d)}b=a.tBodies[0];for(e=0;e<b.rows.length;e++)d=b.rows[e].insertCell(c),mxUtils.br(d);return b.rows[0].cells[0<=c?c:b.rows[0].cells.length-1]};Graph.prototype.deleteColumn= +Graph.prototype.selectNode=function(a){var c=null;if(window.getSelection){if(c=window.getSelection(),c.getRangeAt&&c.rangeCount){var b=document.createRange();b.selectNode(a);c.removeAllRanges();c.addRange(b)}}else(c=document.selection)&&"Control"!=c.type&&(a=c.createRange(),a.collapse(!0),b=c.createRange(),b.setEndPoint("StartToStart",a),b.select())};Graph.prototype.insertRow=function(a,c){for(var b=a.tBodies[0],e=b.rows[0].cells,d=0,g=0;g<e.length;g++)var k=e[g].getAttribute("colspan"),d=d+(null!= +k?parseInt(k):1);b=b.insertRow(c);for(g=0;g<d;g++)mxUtils.br(b.insertCell(-1));return b.cells[0]};Graph.prototype.deleteRow=function(a,c){a.tBodies[0].deleteRow(c)};Graph.prototype.insertColumn=function(a,c){var b=a.tHead;if(null!=b)for(var e=0;e<b.rows.length;e++){var d=document.createElement("th");b.rows[e].appendChild(d);mxUtils.br(d)}b=a.tBodies[0];for(e=0;e<b.rows.length;e++)d=b.rows[e].insertCell(c),mxUtils.br(d);return b.rows[0].cells[0<=c?c:b.rows[0].cells.length-1]};Graph.prototype.deleteColumn= function(a,c){if(0<=c)for(var b=a.tBodies[0].rows,e=0;e<b.length;e++)b[e].cells.length>c&&b[e].deleteCell(c)};Graph.prototype.pasteHtmlAtCaret=function(a){var c;if(window.getSelection){if(c=window.getSelection(),c.getRangeAt&&c.rangeCount){c=c.getRangeAt(0);c.deleteContents();var b=document.createElement("div");b.innerHTML=a;a=document.createDocumentFragment();for(var e;e=b.firstChild;)lastNode=a.appendChild(e);c.insertNode(a)}}else(c=document.selection)&&"Control"!=c.type&&c.createRange().pasteHTML(a)}; Graph.prototype.createLinkForHint=function(a,c){function b(a,c){a.length>c&&(a=a.substring(0,Math.round(c/2))+"..."+a.substring(a.length-Math.round(c/4)));return a}a=null!=a?a:"javascript:void(0);";if(null==c||0==c.length)c=this.isCustomLink(a)?this.getLinkTitle(a):a;var e=document.createElement("a");e.setAttribute("rel",this.linkRelation);e.setAttribute("href",this.getAbsoluteUrl(a));e.setAttribute("title",b(this.isCustomLink(a)?this.getLinkTitle(a):a,80));null!=this.linkTarget&&e.setAttribute("target", this.linkTarget);mxUtils.write(e,b(c,40));this.isCustomLink(a)&&mxEvent.addListener(e,"click",mxUtils.bind(this,function(c){this.customLinkClicked(a);mxEvent.consume(c)}));return e};Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first};this.addListener(mxEvent.START_EDITING,function(a,c){this.popupMenuHandler.hideMenu()});var a=this.updateMouseEvent;this.updateMouseEvent=function(c){c=a.apply(this,arguments);if(mxEvent.isTouchEvent(c.getEvent())&& -null==c.getState()){var b=this.getCellAt(c.graphX,c.graphY);null!=b&&this.isSwimlane(b)&&this.hitsSwimlaneContent(b,c.graphX,c.graphY)||(c.state=this.view.getState(b),null!=c.state&&null!=c.state.shape&&(this.container.style.cursor=c.state.shape.node.style.cursor))}null==c.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return c};var c=!1,b=!1,e=!1,d=this.fireMouseEvent;this.fireMouseEvent=function(a,k,g){a==mxEvent.MOUSE_DOWN&&(k=this.updateMouseEvent(k),c=this.isCellSelected(k.getCell()), +null==c.getState()){var b=this.getCellAt(c.graphX,c.graphY);null!=b&&this.isSwimlane(b)&&this.hitsSwimlaneContent(b,c.graphX,c.graphY)||(c.state=this.view.getState(b),null!=c.state&&null!=c.state.shape&&(this.container.style.cursor=c.state.shape.node.style.cursor))}null==c.getState()&&this.isEnabled()&&(this.container.style.cursor="default");return c};var c=!1,b=!1,e=!1,d=this.fireMouseEvent;this.fireMouseEvent=function(a,g,k){a==mxEvent.MOUSE_DOWN&&(g=this.updateMouseEvent(g),c=this.isCellSelected(g.getCell()), b=this.isSelectionEmpty(),e=this.popupMenuHandler.isMenuShowing());d.apply(this,arguments)};this.popupMenuHandler.mouseUp=mxUtils.bind(this,function(a,d){this.popupMenuHandler.popupTrigger=!this.isEditing()&&this.isEnabled()&&(null==d.getState()||!d.isSource(d.getState().control))&&(this.popupMenuHandler.popupTrigger||!e&&!mxEvent.isMouseEvent(d.getEvent())&&(b&&null==d.getCell()&&this.isSelectionEmpty()||c&&this.isCellSelected(d.getCell())));mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler, arguments)})};mxCellEditor.prototype.isContentEditing=function(){var a=this.graph.view.getState(this.editingCell);return null!=a&&1==a.style.html};mxCellEditor.prototype.isTableSelected=function(){return null!=this.graph.getParentByName(this.graph.getSelectedElement(),"TABLE",this.textarea)};mxCellEditor.prototype.alignText=function(a,c){var b=null!=c&&mxEvent.isShiftDown(c);if(b||null!=window.getSelection&&null!=window.getSelection().containsNode){var e=!0;this.graph.processElements(this.textarea, function(a){b||window.getSelection().containsNode(a,!0)?(a.removeAttribute("align"),a.style.textAlign=null):e=!1});e&&this.graph.cellEditor.setAlign(a)}document.execCommand("justify"+a.toLowerCase(),!1,null)};mxCellEditor.prototype.saveSelection=function(){if(window.getSelection){var a=window.getSelection();if(a.getRangeAt&&a.rangeCount){for(var c=[],b=0,e=a.rangeCount;b<e;++b)c.push(a.getRangeAt(b));return c}}else if(document.selection&&document.selection.createRange)return document.selection.createRange(); return null};mxCellEditor.prototype.restoreSelection=function(a){try{if(a)if(window.getSelection){sel=window.getSelection();sel.removeAllRanges();for(var c=0,b=a.length;c<b;++c)sel.addRange(a[c])}else document.selection&&a.select&&a.select()}catch(T){}};var p=mxCellRenderer.prototype.initializeLabel;mxCellRenderer.prototype.initializeLabel=function(a){null!=a.text&&(a.text.replaceLinefeeds="0"!=mxUtils.getValue(a.style,"nl2Br","1"));p.apply(this,arguments)};var u=mxConstraintHandler.prototype.update; -mxConstraintHandler.prototype.update=function(a,c){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?u.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var z=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,c){z.apply(this,arguments);var b=this.graph.view.getState(a);this.textarea.className=null!= +mxConstraintHandler.prototype.update=function(a,c){this.isKeepFocusEvent(a)||!mxEvent.isAltDown(a.getEvent())?u.apply(this,arguments):this.reset()};mxGuide.prototype.createGuideShape=function(a){return new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)};mxCellEditor.prototype.escapeCancelsEditing=!1;var A=mxCellEditor.prototype.startEditing;mxCellEditor.prototype.startEditing=function(a,c){A.apply(this,arguments);var b=this.graph.view.getState(a);this.textarea.className=null!= b&&1==b.style.html?"mxCellEditor geContentEditable":"mxCellEditor mxPlainTextEditor";this.codeViewMode=!1;this.switchSelectionState=null;this.graph.setSelectionCell(a);var b=this.graph.getModel().getParent(a),e=this.graph.getCellGeometry(a);this.graph.getModel().isEdge(b)&&null!=e&&e.relative||this.graph.getModel().isEdge(a)?mxClient.IS_QUIRKS?this.textarea.style.border="gray dotted 1px":this.textarea.style.outline=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_FF&&mxClient.IS_WIN?"gray dotted 1px": "":mxClient.IS_QUIRKS&&(this.textarea.style.outline="none",this.textarea.style.border="")};var B=mxCellEditor.prototype.installListeners;mxCellEditor.prototype.installListeners=function(a){function c(a,b){b.originalNode=a;a=a.firstChild;for(var e=b.firstChild;null!=a&&null!=e;)c(a,e),a=a.nextSibling,e=e.nextSibling;return b}function b(a,c){if(null!=a)if(c.originalNode!=a)e(a);else for(a=a.firstChild,c=c.firstChild;null!=a;){var d=a.nextSibling;null==c?e(a):(b(a,c),c=c.nextSibling);a=d}}function e(a){for(var c= a.firstChild;null!=c;){var b=c.nextSibling;e(c);c=b}1==a.nodeType&&("BR"===a.nodeName||null!=a.firstChild)||3==a.nodeType&&0!=mxUtils.trim(mxUtils.getTextContent(a)).length?(3==a.nodeType&&mxUtils.setTextContent(a,mxUtils.getTextContent(a).replace(/\n|\r/g,"")),1==a.nodeType&&(a.removeAttribute("style"),a.removeAttribute("class"),a.removeAttribute("width"),a.removeAttribute("cellpadding"),a.removeAttribute("cellspacing"),a.removeAttribute("border"))):a.parentNode.removeChild(a)}B.apply(this,arguments); mxClient.IS_QUIRKS||7===document.documentMode||8===document.documentMode||mxEvent.addListener(this.textarea,"paste",mxUtils.bind(this,function(a){var e=c(this.textarea,this.textarea.cloneNode(!0));window.setTimeout(mxUtils.bind(this,function(){null!=this.textarea&&(0<=this.textarea.innerHTML.indexOf("<o:OfficeDocumentSettings>")||0<=this.textarea.innerHTML.indexOf("\x3c!--[if !mso]>"))&&b(this.textarea,e)}),0)}))};mxCellEditor.prototype.toggleViewMode=function(){var a=this.graph.view.getState(this.editingCell); -if(null!=a){var c=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),b=this.saveSelection();if(this.codeViewMode){n=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<n.length&&"\n"==n.charAt(n.length-1)&&(n=n.substring(0,n.length-1));n=this.graph.sanitizeHtml(c?n.replace(/\n/g,"<br/>"):n,!0);this.textarea.className="mxCellEditor geContentEditable";var e=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY, -mxConstants.DEFAULT_FONTFAMILY),d=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),k=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,f=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&f.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE, -0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&f.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(e*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(e)+"px";this.textarea.style.textDecoration=f.join(" ");this.textarea.style.fontWeight=k?"bold":"normal";this.textarea.style.fontStyle=g?"italic":"";this.textarea.style.fontFamily=c;this.textarea.style.textAlign=d;this.textarea.style.padding= -"0px";this.textarea.innerHTML!=n&&(this.textarea.innerHTML=n,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var n=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(n=mxUtils.replaceTrailingNewlines(n,"<div><br></div>")); -n=this.graph.sanitizeHtml(c?n.replace(/\n/g,"").replace(/<br\s*.?>/g,"<br>"):n,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var e=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(e*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(e)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily= -mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding="2px";this.textarea.innerHTML!=n&&(this.textarea.innerHTML=n);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=b;this.resize()}};var c=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&& +if(null!=a){var c=null!=a&&"0"!=mxUtils.getValue(a.style,"nl2Br","1"),b=this.saveSelection();if(this.codeViewMode){t=mxUtils.extractTextWithWhitespace(this.textarea.childNodes);0<t.length&&"\n"==t.charAt(t.length-1)&&(t=t.substring(0,t.length-1));t=this.graph.sanitizeHtml(c?t.replace(/\n/g,"<br/>"):t,!0);this.textarea.className="mxCellEditor geContentEditable";var e=mxUtils.getValue(a.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE),c=mxUtils.getValue(a.style,mxConstants.STYLE_FONTFAMILY, +mxConstants.DEFAULT_FONTFAMILY),d=mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),g=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,k=(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,f=[];(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&f.push("underline");(mxUtils.getValue(a.style,mxConstants.STYLE_FONTSTYLE, +0)&mxConstants.FONT_STRIKETHROUGH)==mxConstants.FONT_STRIKETHROUGH&&f.push("line-through");this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(e*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(e)+"px";this.textarea.style.textDecoration=f.join(" ");this.textarea.style.fontWeight=g?"bold":"normal";this.textarea.style.fontStyle=k?"italic":"";this.textarea.style.fontFamily=c;this.textarea.style.textAlign=d;this.textarea.style.padding= +"0px";this.textarea.innerHTML!=t&&(this.textarea.innerHTML=t,0==this.textarea.innerHTML.length&&(this.textarea.innerHTML=this.getEmptyLabelText(),this.clearOnChange=0<this.textarea.innerHTML.length));this.codeViewMode=!1}else{this.clearOnChange&&this.textarea.innerHTML==this.getEmptyLabelText()&&(this.clearOnChange=!1,this.textarea.innerHTML="");var t=mxUtils.htmlEntities(this.textarea.innerHTML);mxClient.IS_QUIRKS||8==document.documentMode||(t=mxUtils.replaceTrailingNewlines(t,"<div><br></div>")); +t=this.graph.sanitizeHtml(c?t.replace(/\n/g,"").replace(/<br\s*.?>/g,"<br>"):t,!0);this.textarea.className="mxCellEditor mxPlainTextEditor";var e=mxConstants.DEFAULT_FONTSIZE;this.textarea.style.lineHeight=mxConstants.ABSOLUTE_LINE_HEIGHT?Math.round(e*mxConstants.LINE_HEIGHT)+"px":mxConstants.LINE_HEIGHT;this.textarea.style.fontSize=Math.round(e)+"px";this.textarea.style.textDecoration="";this.textarea.style.fontWeight="normal";this.textarea.style.fontStyle="";this.textarea.style.fontFamily= +mxConstants.DEFAULT_FONTFAMILY;this.textarea.style.textAlign="left";this.textarea.style.padding="2px";this.textarea.innerHTML!=t&&(this.textarea.innerHTML=t);this.codeViewMode=!0}this.textarea.focus();null!=this.switchSelectionState&&this.restoreSelection(this.switchSelectionState);this.switchSelectionState=b;this.resize()}};var c=mxCellEditor.prototype.resize;mxCellEditor.prototype.resize=function(a,b){if(null!=this.textarea)if(a=this.graph.getView().getState(this.editingCell),this.codeViewMode&& null!=a){var e=a.view.scale;this.bounds=mxRectangle.fromRectangle(a);if(0==this.bounds.width&&0==this.bounds.height){this.bounds.width=160*e;this.bounds.height=60*e;var d=null!=a.text?a.text.margin:null;null==d&&(d=mxUtils.getAlignmentAsPoint(mxUtils.getValue(a.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),mxUtils.getValue(a.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)));this.bounds.x+=d.x*this.bounds.width;this.bounds.y+=d.y*this.bounds.height}this.textarea.style.width= Math.round((this.bounds.width-4)/e)+"px";this.textarea.style.height=Math.round((this.bounds.height-4)/e)+"px";this.textarea.style.overflow="auto";this.textarea.clientHeight<this.textarea.offsetHeight&&(this.textarea.style.height=Math.round(this.bounds.height/e)+(this.textarea.offsetHeight-this.textarea.clientHeight)+"px",this.bounds.height=parseInt(this.textarea.style.height)*e);this.textarea.clientWidth<this.textarea.offsetWidth&&(this.textarea.style.width=Math.round(this.bounds.width/e)+(this.textarea.offsetWidth- this.textarea.clientWidth)+"px",this.bounds.width=parseInt(this.textarea.style.width)*e);this.textarea.style.left=Math.round(this.bounds.x)+"px";this.textarea.style.top=Math.round(this.bounds.y)+"px";mxClient.IS_VML?this.textarea.style.zoom=e:mxUtils.setPrefixedStyle(this.textarea.style,"transform","scale("+e+","+e+")")}else this.textarea.style.height="",this.textarea.style.overflow="",c.apply(this,arguments)};mxCellEditorGetInitialValue=mxCellEditor.prototype.getInitialValue;mxCellEditor.prototype.getInitialValue= function(a,c){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetInitialValue.apply(this,arguments);var b=this.graph.getEditingValue(a.cell,c);"1"==mxUtils.getValue(a.style,"nl2Br","1")&&(b=b.replace(/\n/g,"<br/>"));return b=this.graph.sanitizeHtml(b,!0)};mxCellEditorGetCurrentValue=mxCellEditor.prototype.getCurrentValue;mxCellEditor.prototype.getCurrentValue=function(a){if("0"==mxUtils.getValue(a.style,"html","0"))return mxCellEditorGetCurrentValue.apply(this,arguments);var c=this.graph.sanitizeHtml(this.textarea.innerHTML, !0);return c="1"==mxUtils.getValue(a.style,"nl2Br","1")?c.replace(/\r\n/g,"<br/>").replace(/\n/g,"<br/>"):c.replace(/\r\n/g,"").replace(/\n/g,"")};var e=mxCellEditor.prototype.stopEditing;mxCellEditor.prototype.stopEditing=function(a){this.codeViewMode&&this.toggleViewMode();e.apply(this,arguments);this.focusContainer()};mxCellEditor.prototype.focusContainer=function(){try{this.graph.container.focus()}catch(O){}};var k=mxCellEditor.prototype.applyValue;mxCellEditor.prototype.applyValue=function(a, c){this.graph.getModel().beginUpdate();try{k.apply(this,arguments),""==c&&this.graph.isCellDeletable(a.cell)&&0==this.graph.model.getChildCount(a.cell)&&this.graph.isTransparentState(a)&&this.graph.removeCells([a.cell],!1)}finally{this.graph.getModel().endUpdate()}};mxCellEditor.prototype.getBackgroundColor=function(a){var c=mxUtils.getValue(a.style,mxConstants.STYLE_LABEL_BACKGROUNDCOLOR,null);null!=c&&c!=mxConstants.NONE||!(null!=a.cell.geometry&&0<a.cell.geometry.width)||0==mxUtils.getValue(a.style, -mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)||(c=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,null));c==mxConstants.NONE&&(c=null);return c};mxCellEditor.prototype.getMinimumSize=function(a){var c=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*c+20,30)};var q=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,c,b,e,d,k){mxEvent.isAltDown(k)&&(d=null);q.apply(this,arguments)};mxGraphView.prototype.formatUnitText= +mxConstants.STYLE_ROTATION,0)&&0!=mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)||(c=mxUtils.getValue(a.style,mxConstants.STYLE_FILLCOLOR,null));c==mxConstants.NONE&&(c=null);return c};mxCellEditor.prototype.getMinimumSize=function(a){var c=this.graph.getView().scale;return new mxRectangle(0,0,null==a.text?30:a.text.size*c+20,30)};var q=mxGraphHandler.prototype.moveCells;mxGraphHandler.prototype.moveCells=function(a,c,b,e,d,g){mxEvent.isAltDown(g)&&(d=null);q.apply(this,arguments)};mxGraphView.prototype.formatUnitText= function(a){return a?b(a,this.unit):a};mxGraphHandler.prototype.updateHint=function(c){if(null!=this.pBounds&&(null!=this.shape||this.livePreviewActive)){null==this.hint&&(this.hint=a(),this.graph.container.appendChild(this.hint));var e=this.graph.view.translate,d=this.graph.view.scale;c=this.roundLength((this.bounds.x+this.currentDx)/d-e.x);e=this.roundLength((this.bounds.y+this.currentDy)/d-e.y);d=this.graph.view.unit;this.hint.innerHTML=b(c,d)+", "+b(e,d);this.hint.style.left=this.pBounds.x+this.currentDx+ Math.round((this.pBounds.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=this.pBounds.y+this.currentDy+this.pBounds.height+Editor.hintOffset+"px"}};mxGraphHandler.prototype.removeHint=function(){null!=this.hint&&(this.hint.parentNode.removeChild(this.hint),this.hint=null)};mxVertexHandler.prototype.rotationHandleVSpacing=-12;mxVertexHandler.prototype.getRotationHandlePosition=function(){var a=this.getHandlePadding();return new mxPoint(this.bounds.x+this.bounds.width-this.rotationHandleVSpacing+ a.x/2,this.bounds.y+this.rotationHandleVSpacing-a.y/2)};mxVertexHandler.prototype.isRecursiveResize=function(a,c){return!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&&!mxEvent.isControlDown(c.getEvent())&&!this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null)};mxVertexHandler.prototype.isCenteredEvent=function(a,c){return!(!this.graph.isSwimlane(a.cell)&&0<this.graph.model.getChildCount(a.cell)&& !this.graph.isCellCollapsed(a.cell)&&"1"==mxUtils.getValue(a.style,"recursiveResize","1")&&null==mxUtils.getValue(a.style,"childLayout",null))&&mxEvent.isControlDown(c.getEvent())||mxEvent.isMetaDown(c.getEvent())};var n=mxVertexHandler.prototype.getHandlePadding;mxVertexHandler.prototype.getHandlePadding=function(){var a=new mxPoint(0,0),c=this.tolerance;this.graph.cellEditor.getEditingCell()==this.state.cell&&null!=this.sizers&&0<this.sizers.length&&null!=this.sizers[0]?(c/=2,a.x=this.sizers[0].bounds.width+ c,a.y=this.sizers[0].bounds.height+c):a=n.apply(this,arguments);return a};mxVertexHandler.prototype.updateHint=function(c){if(this.index!=mxEvent.LABEL_HANDLE){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));if(this.index==mxEvent.ROTATION_HANDLE)this.hint.innerHTML=this.currentAlpha+"°";else{c=this.state.view.scale;var e=this.state.view.unit;this.hint.innerHTML=b(this.roundLength(this.bounds.width/c),e)+" x "+b(this.roundLength(this.bounds.height/c),e)}c= mxUtils.getBoundingBox(this.bounds,null!=this.currentAlpha?this.currentAlpha:this.state.style[mxConstants.STYLE_ROTATION]||"0");null==c&&(c=this.bounds);this.hint.style.left=c.x+Math.round((c.width-this.hint.clientWidth)/2)+"px";this.hint.style.top=c.y+c.height+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")}};mxVertexHandler.prototype.removeHint=function(){mxGraphHandler.prototype.removeHint.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.display= -"")};var g=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(a,c){g.apply(this,arguments);null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none")};var A=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(a,c){A.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint= -function(c,e){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var d=this.graph.view.translate,k=this.graph.view.scale,g=this.roundLength(e.x/k-d.x),d=this.roundLength(e.y/k-d.y),k=this.graph.view.unit;this.hint.innerHTML=b(g,k)+", "+b(d,k);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(g=this.constraintHandler.currentConstraint.point,this.hint.innerHTML= -"["+Math.round(100*g.x)+"%, "+Math.round(100*g.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(c.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(c.getGraphY(),e.y)+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+ +"")};var g=mxEdgeHandler.prototype.mouseMove;mxEdgeHandler.prototype.mouseMove=function(a,c){g.apply(this,arguments);null!=this.graph.graphHandler&&null!=this.graph.graphHandler.first&&null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none")};var z=mxEdgeHandler.prototype.mouseUp;mxEdgeHandler.prototype.mouseUp=function(a,c){z.apply(this,arguments);null!=this.linkHint&&"none"==this.linkHint.style.display&&(this.linkHint.style.display="")};mxEdgeHandler.prototype.updateHint= +function(c,e){null==this.hint&&(this.hint=a(),this.state.view.graph.container.appendChild(this.hint));var d=this.graph.view.translate,g=this.graph.view.scale,k=this.roundLength(e.x/g-d.x),d=this.roundLength(e.y/g-d.y),g=this.graph.view.unit;this.hint.innerHTML=b(k,g)+", "+b(d,g);this.hint.style.visibility="visible";if(this.isSource||this.isTarget)null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus?(k=this.constraintHandler.currentConstraint.point,this.hint.innerHTML= +"["+Math.round(100*k.x)+"%, "+Math.round(100*k.y)+"%]"):this.marker.hasValidState()&&(this.hint.style.visibility="hidden");this.hint.style.left=Math.round(c.getGraphX()-this.hint.clientWidth/2)+"px";this.hint.style.top=Math.max(c.getGraphY(),e.y)+Editor.hintOffset+"px";null!=this.linkHint&&(this.linkHint.style.display="none")};mxEdgeHandler.prototype.removeHint=mxVertexHandler.prototype.removeHint;HoverIcons.prototype.mainHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+ HoverIcons.prototype.arrowFill+'" stroke-width="1"/>'):new mxImage(IMAGE_PATH+"/handle-main.png",17,17);HoverIcons.prototype.secondaryHandle=mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path d="m 8 3 L 13 8 L 8 13 L 3 8 z" stroke="#fff" fill="#fca000"/>'):new mxImage(IMAGE_PATH+"/handle-secondary.png",17,17);HoverIcons.prototype.fixedHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><path d="m 7 7 L 11 11 M 7 11 L 11 7" stroke="#fff"/>'): new mxImage(IMAGE_PATH+"/handle-fixed.png",17,17);HoverIcons.prototype.terminalHandle=mxClient.IS_SVG?Graph.createSvgImage(18,18,'<circle cx="9" cy="9" r="5" stroke="#fff" fill="'+HoverIcons.prototype.arrowFill+'" stroke-width="1"/><circle cx="9" cy="9" r="2" stroke="#fff" fill="transparent"/>'):new mxImage(IMAGE_PATH+"/handle-terminal.png",17,17);HoverIcons.prototype.rotationHandle=mxClient.IS_SVG?Graph.createSvgImage(16,16,'<path stroke="'+HoverIcons.prototype.arrowFill+'" fill="'+HoverIcons.prototype.arrowFill+ '" d="M15.55 5.55L11 1v3.07C7.06 4.56 4 7.92 4 12s3.05 7.44 7 7.93v-2.02c-2.84-.48-5-2.94-5-5.91s2.16-5.43 5-5.91V10l4.55-4.45zM19.93 11c-.17-1.39-.72-2.73-1.62-3.89l-1.42 1.42c.54.75.88 1.6 1.02 2.47h2.02zM13 17.9v2.02c1.39-.17 2.74-.71 3.9-1.61l-1.44-1.44c-.75.54-1.59.89-2.46 1.03zm3.89-2.42l1.42 1.41c.9-1.16 1.45-2.5 1.62-3.89h-2.02c-.14.87-.48 1.72-1.02 2.48z"/>',24,24):new mxImage(IMAGE_PATH+"/handle-rotate.png",16,16);mxClient.IS_SVG&&(mxConstraintHandler.prototype.pointImage=Graph.createSvgImage(5, @@ -2489,149 +2489,149 @@ mxClient.IS_SVG||((new Image).src=HoverIcons.prototype.mainHandle.src,(new Image !0;mxEdgeHandler.prototype.dblClickRemoveEnabled=!0;mxEdgeHandler.prototype.straightRemoveEnabled=!0;mxEdgeHandler.prototype.virtualBendsEnabled=!0;mxEdgeHandler.prototype.mergeRemoveEnabled=!0;mxEdgeHandler.prototype.manageLabelHandle=!0;mxEdgeHandler.prototype.outlineConnect=!0;mxEdgeHandler.prototype.isAddVirtualBendEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};if(Graph.touchStyle){if(mxClient.IS_TOUCH|| 0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints)mxShape.prototype.svgStrokeTolerance=18,mxVertexHandler.prototype.tolerance=12,mxEdgeHandler.prototype.tolerance=12,Graph.prototype.tolerance=12,mxVertexHandler.prototype.rotationHandleVSpacing=-16,mxConstraintHandler.prototype.getTolerance=function(a){return mxEvent.isMouseEvent(a.getEvent())?4:this.graph.getTolerance()};mxPanningHandler.prototype.isPanningTrigger=function(a){var c=a.getEvent();return null==a.getState()&&!mxEvent.isMouseEvent(c)|| mxEvent.isPopupTrigger(c)&&(null==a.getState()||mxEvent.isControlDown(c)||mxEvent.isShiftDown(c))};var x=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(a,c){x.apply(this,arguments);mxEvent.isTouchEvent(c.getEvent())&&this.graph.isCellSelected(c.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)}}else mxPanningHandler.prototype.isPanningTrigger=function(a){var c=a.getEvent();return mxEvent.isLeftMouseButton(c)&&(this.useLeftButtonForPanning&&null== -a.getState()||mxEvent.isControlDown(c)&&!mxEvent.isShiftDown(c))||this.usePopupTrigger&&mxEvent.isPopupTrigger(c)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())};mxRubberband.prototype.mouseUp=function(a,c){var b=null!=this.div&&"none"!=this.div.style.display,e=null,d=null,k=null,g=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&& -(e=this.first.x,d=this.first.y,k=(this.currentX-e)/this.graph.view.scale,g=(this.currentY-d)/this.graph.view.scale,mxEvent.isAltDown(c.getEvent())||(k=this.graph.snap(k),g=this.graph.snap(g),this.graph.isGridEnabled()||(Math.abs(k)<this.graph.tolerance&&(k=0),Math.abs(g)<this.graph.tolerance&&(g=0))));this.reset();if(b){if(mxEvent.isAltDown(c.getEvent())&&this.graph.isToggleEvent(c.getEvent())){var k=new mxRectangle(this.x,this.y,this.width,this.height),f=this.graph.getCells(k.x,k.y,k.width,k.height); -this.graph.removeSelectionCells(f)}else if(this.isSpaceEvent(c)){this.graph.model.beginUpdate();try{for(f=this.graph.getCellsBeyond(e,d,this.graph.getDefaultParent(),!0,!0),b=0;b<f.length;b++)if(this.graph.isCellMovable(f[b])){var n=this.graph.view.getState(f[b]),v=this.graph.getCellGeometry(f[b]);null!=n&&null!=v&&(v=v.clone(),v.translate(k,g),this.graph.model.setGeometry(f[b],v))}}finally{this.graph.model.endUpdate()}}else k=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(k, -c.getEvent());c.consume()}};mxRubberband.prototype.mouseMove=function(a,c){if(!c.isConsumed()&&null!=this.first){var b=mxUtils.getScrollOrigin(this.graph.container),e=mxUtils.getOffset(this.graph.container);b.x-=e.x;b.y-=e.y;var e=c.getX()+b.x,b=c.getY()+b.y,d=this.first.x-e,k=this.first.y-b,g=this.graph.tolerance;if(null!=this.div||Math.abs(d)>g||Math.abs(k)>g)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(e,b),this.isSpaceEvent(c)?(e=this.x+this.width,b=this.y+ +a.getState()||mxEvent.isControlDown(c)&&!mxEvent.isShiftDown(c))||this.usePopupTrigger&&mxEvent.isPopupTrigger(c)};mxRubberband.prototype.isSpaceEvent=function(a){return this.graph.isEnabled()&&!this.graph.isCellLocked(this.graph.getDefaultParent())&&mxEvent.isControlDown(a.getEvent())&&mxEvent.isShiftDown(a.getEvent())};mxRubberband.prototype.mouseUp=function(a,c){var b=null!=this.div&&"none"!=this.div.style.display,e=null,d=null,g=null,k=null;null!=this.first&&null!=this.currentX&&null!=this.currentY&& +(e=this.first.x,d=this.first.y,g=(this.currentX-e)/this.graph.view.scale,k=(this.currentY-d)/this.graph.view.scale,mxEvent.isAltDown(c.getEvent())||(g=this.graph.snap(g),k=this.graph.snap(k),this.graph.isGridEnabled()||(Math.abs(g)<this.graph.tolerance&&(g=0),Math.abs(k)<this.graph.tolerance&&(k=0))));this.reset();if(b){if(mxEvent.isAltDown(c.getEvent())&&this.graph.isToggleEvent(c.getEvent())){var g=new mxRectangle(this.x,this.y,this.width,this.height),f=this.graph.getCells(g.x,g.y,g.width,g.height); +this.graph.removeSelectionCells(f)}else if(this.isSpaceEvent(c)){this.graph.model.beginUpdate();try{for(f=this.graph.getCellsBeyond(e,d,this.graph.getDefaultParent(),!0,!0),b=0;b<f.length;b++)if(this.graph.isCellMovable(f[b])){var t=this.graph.view.getState(f[b]),n=this.graph.getCellGeometry(f[b]);null!=t&&null!=n&&(n=n.clone(),n.translate(g,k),this.graph.model.setGeometry(f[b],n))}}finally{this.graph.model.endUpdate()}}else g=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(g, +c.getEvent());c.consume()}};mxRubberband.prototype.mouseMove=function(a,c){if(!c.isConsumed()&&null!=this.first){var b=mxUtils.getScrollOrigin(this.graph.container),e=mxUtils.getOffset(this.graph.container);b.x-=e.x;b.y-=e.y;var e=c.getX()+b.x,b=c.getY()+b.y,d=this.first.x-e,g=this.first.y-b,k=this.graph.tolerance;if(null!=this.div||Math.abs(d)>k||Math.abs(g)>k)null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(e,b),this.isSpaceEvent(c)?(e=this.x+this.width,b=this.y+ this.height,d=this.graph.view.scale,mxEvent.isAltDown(c.getEvent())||(this.width=this.graph.snap(this.width/d)*d,this.height=this.graph.snap(this.height/d)*d,this.graph.isGridEnabled()||(this.width<this.graph.tolerance&&(this.width=0),this.height<this.graph.tolerance&&(this.height=0)),this.x<this.first.x&&(this.x=e-this.width),this.y<this.first.y&&(this.y=b-this.height)),this.div.style.borderStyle="dashed",this.div.style.backgroundColor="white",this.div.style.left=this.x+"px",this.div.style.top=this.y+ "px",this.div.style.width=Math.max(0,this.width)+"px",this.div.style.height=this.graph.container.clientHeight+"px",this.div.style.borderWidth=0>=this.width?"0px 1px 0px 0px":"0px 1px 0px 1px",null==this.secondDiv&&(this.secondDiv=this.div.cloneNode(!0),this.div.parentNode.appendChild(this.secondDiv)),this.secondDiv.style.left=this.x+"px",this.secondDiv.style.top=this.y+"px",this.secondDiv.style.width=this.graph.container.clientWidth+"px",this.secondDiv.style.height=Math.max(0,this.height)+"px",this.secondDiv.style.borderWidth= -0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),c.consume()}};var t=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);t.apply(this,arguments)};var H=(new Date).getTime(),y=0,F=mxEdgeHandler.prototype.updatePreviewState; -mxEdgeHandler.prototype.updatePreviewState=function(a,c,b,e){F.apply(this,arguments);b!=this.currentTerminalState?(H=(new Date).getTime(),y=0):y=(new Date).getTime()-H;this.currentTerminalState=b};var C=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&2E3<y||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&& +0>=this.height?"1px 0px 0px 0px":"1px 0px 1px 0px"):(this.div.style.backgroundColor="",this.div.style.borderWidth="",this.div.style.borderStyle="",null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null)),c.consume()}};var v=mxRubberband.prototype.reset;mxRubberband.prototype.reset=function(){null!=this.secondDiv&&(this.secondDiv.parentNode.removeChild(this.secondDiv),this.secondDiv=null);v.apply(this,arguments)};var I=(new Date).getTime(),y=0,F=mxEdgeHandler.prototype.updatePreviewState; +mxEdgeHandler.prototype.updatePreviewState=function(a,c,b,e){F.apply(this,arguments);b!=this.currentTerminalState?(I=(new Date).getTime(),y=0):y=(new Date).getTime()-I;this.currentTerminalState=b};var C=mxEdgeHandler.prototype.isOutlineConnectEvent;mxEdgeHandler.prototype.isOutlineConnectEvent=function(a){return null!=this.currentTerminalState&&a.getState()==this.currentTerminalState&&2E3<y||(null==this.currentTerminalState||"0"!=mxUtils.getValue(this.currentTerminalState.style,"outlineConnect","1"))&& C.apply(this,arguments)};mxVertexHandler.prototype.isCustomHandleEvent=function(a){return!mxEvent.isShiftDown(a.getEvent())};mxEdgeHandler.prototype.createHandleShape=function(a,c){var b=null!=a&&0==a,e=this.state.getVisibleTerminalState(b),d=null!=a&&(0==a||a>=this.state.absolutePoints.length-1||this.constructor==mxElbowEdgeHandler&&2==a)?this.graph.getConnectionConstraint(this.state,e,b):null,b=null!=(null!=d?this.graph.getConnectionPoint(this.state.getVisibleTerminalState(b),d):null)?this.fixedHandleImage: -null!=d&&null!=e?this.terminalHandleImage:this.handleImage;if(null!=b)return b=new mxImageShape(new mxRectangle(0,0,b.width,b.height),b.src),b.preserveImageAspect=!1,b;b=mxConstants.HANDLE_SIZE;this.preferHtml&&--b;return new mxRectangleShape(new mxRectangle(0,0,b,b),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var v=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(a,c,b){this.handleImage=c==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle: -c==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return v.apply(this,arguments)};var J=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var c=this.graph.getModel(),b=c.getParent(a[0]),e=this.graph.getCellGeometry(a[0]);if(c.isEdge(b)&&null!=e&&e.relative&&(c=this.graph.view.getState(a[0]),null!=c&&2>c.width&&2>c.height&&null!=c.text&&null!=c.text.boundingBox))return mxRectangle.fromRectangle(c.text.boundingBox)}return J.apply(this, -arguments)};var M=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var a=M.apply(this,arguments),c=[],b=0;b<a.length;b++)"1"!=mxUtils.getValue(a[b].style,"part","0")&&c.push(a[b]);return c};var I=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var c=this.graph.getModel(),b=c.getParent(a.cell),e=this.graph.getCellGeometry(a.cell);return c.isEdge(b)&&null!=e&&e.relative&&2>a.width&&2>a.height&&null!= -a.text&&null!=a.text.boundingBox?(c=a.text.unrotatedBoundingBox||a.text.boundingBox,new mxRectangle(Math.round(c.x),Math.round(c.y),Math.round(c.width),Math.round(c.height))):I.apply(this,arguments)};var P=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,c){var b=this.graph.getModel(),e=b.getParent(this.state.cell),d=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(c)==mxEvent.ROTATION_HANDLE||!b.isEdge(e)||null==d||!d.relative||null==this.state|| +null!=d&&null!=e?this.terminalHandleImage:this.handleImage;if(null!=b)return b=new mxImageShape(new mxRectangle(0,0,b.width,b.height),b.src),b.preserveImageAspect=!1,b;b=mxConstants.HANDLE_SIZE;this.preferHtml&&--b;return new mxRectangleShape(new mxRectangle(0,0,b,b),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)};var t=mxVertexHandler.prototype.createSizerShape;mxVertexHandler.prototype.createSizerShape=function(a,c,b){this.handleImage=c==mxEvent.ROTATION_HANDLE?HoverIcons.prototype.rotationHandle: +c==mxEvent.LABEL_HANDLE?this.secondaryHandleImage:this.handleImage;return t.apply(this,arguments)};var J=mxGraphHandler.prototype.getBoundingBox;mxGraphHandler.prototype.getBoundingBox=function(a){if(null!=a&&1==a.length){var c=this.graph.getModel(),b=c.getParent(a[0]),e=this.graph.getCellGeometry(a[0]);if(c.isEdge(b)&&null!=e&&e.relative&&(c=this.graph.view.getState(a[0]),null!=c&&2>c.width&&2>c.height&&null!=c.text&&null!=c.text.boundingBox))return mxRectangle.fromRectangle(c.text.boundingBox)}return J.apply(this, +arguments)};var M=mxGraphHandler.prototype.getGuideStates;mxGraphHandler.prototype.getGuideStates=function(){for(var a=M.apply(this,arguments),c=[],b=0;b<a.length;b++)"1"!=mxUtils.getValue(a[b].style,"part","0")&&c.push(a[b]);return c};var G=mxVertexHandler.prototype.getSelectionBounds;mxVertexHandler.prototype.getSelectionBounds=function(a){var c=this.graph.getModel(),b=c.getParent(a.cell),e=this.graph.getCellGeometry(a.cell);return c.isEdge(b)&&null!=e&&e.relative&&2>a.width&&2>a.height&&null!= +a.text&&null!=a.text.boundingBox?(c=a.text.unrotatedBoundingBox||a.text.boundingBox,new mxRectangle(Math.round(c.x),Math.round(c.y),Math.round(c.width),Math.round(c.height))):G.apply(this,arguments)};var P=mxVertexHandler.prototype.mouseDown;mxVertexHandler.prototype.mouseDown=function(a,c){var b=this.graph.getModel(),e=b.getParent(this.state.cell),d=this.graph.getCellGeometry(this.state.cell);(this.getHandleForEvent(c)==mxEvent.ROTATION_HANDLE||!b.isEdge(e)||null==d||!d.relative||null==this.state|| 2<=this.state.width||2<=this.state.height)&&P.apply(this,arguments)};mxVertexHandler.prototype.isRotationHandleVisible=function(){return this.graph.isEnabled()&&this.rotationEnabled&&this.graph.isCellRotatable(this.state.cell)&&(0>=mxGraphHandler.prototype.maxCells||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)};mxVertexHandler.prototype.rotateClick=function(){var a=mxUtils.getValue(this.state.style,mxConstants.STYLE_STROKECOLOR,mxConstants.NONE),c=mxUtils.getValue(this.state.style, -mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&a==mxConstants.NONE&&c==mxConstants.NONE?(a=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,a,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};var D=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,c){D.apply(this,arguments);null!=this.graph.graphHandler.first&& -(null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display="none"),null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none"))};var E=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,c){E.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.linkHint&&"none"==this.linkHint.style.display&& +mxConstants.STYLE_FILLCOLOR,mxConstants.NONE);this.state.view.graph.model.isVertex(this.state.cell)&&a==mxConstants.NONE&&c==mxConstants.NONE?(a=mxUtils.mod(mxUtils.getValue(this.state.style,mxConstants.STYLE_ROTATION,0)+90,360),this.state.view.graph.setCellStyles(mxConstants.STYLE_ROTATION,a,[this.state.cell])):this.state.view.graph.turnShapes([this.state.cell])};var E=mxVertexHandler.prototype.mouseMove;mxVertexHandler.prototype.mouseMove=function(a,c){E.apply(this,arguments);null!=this.graph.graphHandler.first&& +(null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display="none"),null!=this.linkHint&&"none"!=this.linkHint.style.display&&(this.linkHint.style.display="none"))};var D=mxVertexHandler.prototype.mouseUp;mxVertexHandler.prototype.mouseUp=function(a,c){D.apply(this,arguments);null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.linkHint&&"none"==this.linkHint.style.display&& (this.linkHint.style.display="")};var N=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){N.apply(this,arguments);var a=!1;null!=this.rotationShape&&this.rotationShape.node.setAttribute("title",mxResources.get("rotateTooltip"));var c=mxUtils.bind(this,function(){null!=this.specialHandle&&(this.specialHandle.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none");this.redrawHandles()});this.changeHandler=mxUtils.bind(this, function(a,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state));c()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);this.editingHandler=mxUtils.bind(this,function(a,c){this.redrawHandles()});this.graph.addListener(mxEvent.EDITING_STOPPED,this.editingHandler);var b=this.graph.getLinkForCell(this.state.cell),e=this.graph.getLinksForState(this.state); this.updateLinkHint(b,e);if(null!=b||null!=e&&0<e.length)a=!0;a&&this.redrawHandles()};mxVertexHandler.prototype.updateLinkHint=function(c,b){try{if(null==c&&(null==b||0==b.length)||1<this.graph.getSelectionCount())null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);else if(null!=c||null!=b&&0<b.length){null==this.linkHint&&(this.linkHint=a(),this.linkHint.style.padding="6px 8px 6px 8px",this.linkHint.style.opacity="1",this.linkHint.style.filter="",this.graph.container.appendChild(this.linkHint)); this.linkHint.innerHTML="";if(null!=c&&(this.linkHint.appendChild(this.graph.createLinkForHint(c)),this.graph.isEnabled()&&"function"===typeof this.graph.editLink)){var e=document.createElement("img");e.setAttribute("src",Editor.editImage);e.setAttribute("title",mxResources.get("editLink"));e.setAttribute("width","11");e.setAttribute("height","11");e.style.marginLeft="10px";e.style.marginBottom="-1px";e.style.cursor="pointer";this.linkHint.appendChild(e);mxEvent.addListener(e,"click",mxUtils.bind(this, function(a){this.graph.setSelectionCell(this.state.cell);this.graph.editLink();mxEvent.consume(a)}));var d=document.createElement("img");d.setAttribute("src",Dialog.prototype.clearImage);d.setAttribute("title",mxResources.get("removeIt",[mxResources.get("link")]));d.setAttribute("width","13");d.setAttribute("height","10");d.style.marginLeft="4px";d.style.marginBottom="-1px";d.style.cursor="pointer";this.linkHint.appendChild(d);mxEvent.addListener(d,"click",mxUtils.bind(this,function(a){this.graph.setLinkForCell(this.state.cell, -null);mxEvent.consume(a)}))}if(null!=b)for(e=0;e<b.length;e++){var k=document.createElement("div");k.style.marginTop=null!=c||0<e?"6px":"0px";k.appendChild(this.graph.createLinkForHint(b[e].getAttribute("href"),mxUtils.getTextContent(b[e])));this.linkHint.appendChild(k)}}}catch(ma){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var U=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){U.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this, +null);mxEvent.consume(a)}))}if(null!=b)for(e=0;e<b.length;e++){var g=document.createElement("div");g.style.marginTop=null!=c||0<e?"6px":"0px";g.appendChild(this.graph.createLinkForHint(b[e].getAttribute("href"),mxUtils.getTextContent(b[e])));this.linkHint.appendChild(g)}}}catch(ma){}};mxEdgeHandler.prototype.updateLinkHint=mxVertexHandler.prototype.updateLinkHint;var U=mxEdgeHandler.prototype.init;mxEdgeHandler.prototype.init=function(){U.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this, function(){return this.state.view.graph.connectionHandler.isEnabled()});var a=mxUtils.bind(this,function(){null!=this.linkHint&&(this.linkHint.style.display=1==this.graph.getSelectionCount()?"":"none");null!=this.labelShape&&(this.labelShape.node.style.display=this.graph.isEnabled()&&this.graph.getSelectionCount()<this.graph.graphHandler.maxCells?"":"none")});this.changeHandler=mxUtils.bind(this,function(c,b){this.updateLinkHint(this.graph.getLinkForCell(this.state.cell),this.graph.getLinksForState(this.state)); a();this.redrawHandles()});this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.changeHandler);this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler);var c=this.graph.getLinkForCell(this.state.cell),b=this.graph.getLinksForState(this.state);if(null!=c||null!=b&&0<b.length)this.updateLinkHint(c,b),this.redrawHandles()};var ba=mxConnectionHandler.prototype.init;mxConnectionHandler.prototype.init=function(){ba.apply(this,arguments);this.constraintHandler.isEnabled=mxUtils.bind(this, function(){return this.graph.connectionHandler.isEnabled()})};var V=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles=function(){null!=this.rotationShape&&null!=this.rotationShape.node&&(this.rotationShape.node.style.display=1!=this.graph.getSelectionCount()||null!=this.index&&this.index!=mxEvent.ROTATION_HANDLE?"none":"");V.apply(this);if(null!=this.state&&null!=this.linkHint){var a=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),c=new mxRectangle(this.state.x, this.state.y-22,this.state.width+24,this.state.height+22),b=mxUtils.getBoundingBox(c,this.state.style[mxConstants.STYLE_ROTATION]||"0",a),a=null!=b?mxUtils.getBoundingBox(this.state,this.state.style[mxConstants.STYLE_ROTATION]||"0"):this.state,c=null!=this.state.text?this.state.text.boundingBox:null;null==b&&(b=this.state);b=b.y+b.height;null!=c&&(b=Math.max(b,c.y+c.height));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(b+ -this.verticalOffset/2+Editor.hintOffset)+"px"}};var G=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){G.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getSelectionModel().removeListener(this.changeHandler),this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler), +this.verticalOffset/2+Editor.hintOffset)+"px"}};var H=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(){H.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getSelectionModel().removeListener(this.changeHandler),this.graph.getModel().removeListener(this.changeHandler),this.changeHandler=null);null!=this.editingHandler&&(this.graph.removeListener(this.editingHandler), this.editingHandler=null)};var Y=mxEdgeHandler.prototype.redrawHandles;mxEdgeHandler.prototype.redrawHandles=function(){if(null!=this.marker&&(Y.apply(this),null!=this.state&&null!=this.linkHint)){var a=this.state;null!=this.state.text&&null!=this.state.text.bounds&&(a=new mxRectangle(a.x,a.y,a.width,a.height),a.add(this.state.text.bounds));this.linkHint.style.left=Math.max(0,Math.round(a.x+(a.width-this.linkHint.clientWidth)/2))+"px";this.linkHint.style.top=Math.round(a.y+a.height+Editor.hintOffset)+ "px"}};var fa=mxEdgeHandler.prototype.reset;mxEdgeHandler.prototype.reset=function(){fa.apply(this,arguments);null!=this.linkHint&&(this.linkHint.style.visibility="")};var ja=mxEdgeHandler.prototype.destroy;mxEdgeHandler.prototype.destroy=function(){ja.apply(this,arguments);null!=this.linkHint&&(this.linkHint.parentNode.removeChild(this.linkHint),this.linkHint=null);null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getSelectionModel().removeListener(this.changeHandler), -this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function f(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function l(){mxCylinder.call(this)}function m(){mxActor.call(this)}function p(){mxCylinder.call(this)}function u(){mxActor.call(this)}function z(){mxActor.call(this)}function B(){mxActor.call(this)}function c(){mxActor.call(this)}function e(){mxActor.call(this)}function k(){mxActor.call(this)}function q(){mxActor.call(this)}function n(a,c){this.canvas= +this.changeHandler=null)}}();(function(){function a(){mxCylinder.call(this)}function b(){mxActor.call(this)}function f(){mxCylinder.call(this)}function d(){mxCylinder.call(this)}function l(){mxCylinder.call(this)}function m(){mxActor.call(this)}function p(){mxCylinder.call(this)}function u(){mxActor.call(this)}function A(){mxActor.call(this)}function B(){mxActor.call(this)}function c(){mxActor.call(this)}function e(){mxActor.call(this)}function k(){mxActor.call(this)}function q(){mxActor.call(this)}function n(a,c){this.canvas= a;this.canvas.setLineJoin("round");this.canvas.setLineCap("round");this.defaultVariation=c;this.originalLineTo=this.canvas.lineTo;this.canvas.lineTo=mxUtils.bind(this,n.prototype.lineTo);this.originalMoveTo=this.canvas.moveTo;this.canvas.moveTo=mxUtils.bind(this,n.prototype.moveTo);this.originalClose=this.canvas.close;this.canvas.close=mxUtils.bind(this,n.prototype.close);this.originalQuadTo=this.canvas.quadTo;this.canvas.quadTo=mxUtils.bind(this,n.prototype.quadTo);this.originalCurveTo=this.canvas.curveTo; -this.canvas.curveTo=mxUtils.bind(this,n.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,n.prototype.arcTo)}function g(){mxRectangleShape.call(this)}function A(){mxRectangleShape.call(this)}function x(){mxActor.call(this)}function t(){mxActor.call(this)}function H(){mxActor.call(this)}function y(){mxRectangleShape.call(this)}function F(){mxRectangleShape.call(this)}function C(){mxCylinder.call(this)}function v(){mxShape.call(this)}function J(){mxShape.call(this)} -function M(){mxEllipse.call(this)}function I(){mxShape.call(this)}function P(){mxShape.call(this)}function D(){mxRectangleShape.call(this)}function E(){mxShape.call(this)}function N(){mxShape.call(this)}function U(){mxShape.call(this)}function ba(){mxShape.call(this)}function V(){mxShape.call(this)}function G(){mxCylinder.call(this)}function Y(){mxRectangleShape.call(this)}function fa(){mxDoubleEllipse.call(this)}function ja(){mxDoubleEllipse.call(this)}function O(){mxArrowConnector.call(this);this.spacing= +this.canvas.curveTo=mxUtils.bind(this,n.prototype.curveTo);this.originalArcTo=this.canvas.arcTo;this.canvas.arcTo=mxUtils.bind(this,n.prototype.arcTo)}function g(){mxRectangleShape.call(this)}function z(){mxRectangleShape.call(this)}function x(){mxActor.call(this)}function v(){mxActor.call(this)}function I(){mxActor.call(this)}function y(){mxRectangleShape.call(this)}function F(){mxRectangleShape.call(this)}function C(){mxCylinder.call(this)}function t(){mxShape.call(this)}function J(){mxShape.call(this)} +function M(){mxEllipse.call(this)}function G(){mxShape.call(this)}function P(){mxShape.call(this)}function E(){mxRectangleShape.call(this)}function D(){mxShape.call(this)}function N(){mxShape.call(this)}function U(){mxShape.call(this)}function ba(){mxShape.call(this)}function V(){mxShape.call(this)}function H(){mxCylinder.call(this)}function Y(){mxRectangleShape.call(this)}function fa(){mxDoubleEllipse.call(this)}function ja(){mxDoubleEllipse.call(this)}function O(){mxArrowConnector.call(this);this.spacing= 0}function ga(){mxArrowConnector.call(this);this.spacing=0}function Z(){mxActor.call(this)}function T(){mxRectangleShape.call(this)}function da(){mxActor.call(this)}function ma(){mxActor.call(this)}function W(){mxActor.call(this)}function aa(){mxActor.call(this)}function R(){mxActor.call(this)}function L(){mxActor.call(this)}function ka(){mxActor.call(this)}function Q(){mxActor.call(this)}function S(){mxActor.call(this)}function ca(){mxActor.call(this)}function ta(){mxEllipse.call(this)}function K(){mxEllipse.call(this)} -function la(){mxEllipse.call(this)}function ea(){mxRhombus.call(this)}function ha(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function za(){mxEllipse.call(this)}function oa(){mxActor.call(this)}function ia(){mxActor.call(this)}function sa(){mxActor.call(this)}function pa(){mxConnector.call(this)}function ua(a,c,b,e,d,k,g,f,n,v){g+=n;var na=e.clone();e.x-=d*(2*g+n);e.y-=k*(2*g+n);d*=g+n;k*=g+n;return function(){a.ellipse(na.x-d-g,na.y-k-g,2*g,2*g);v? -a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,c,b,e,d){var k=Math.max(0,Math.min(e,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),na=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(c,b);a.begin(); -a.moveTo(0,0);a.lineTo(e-k,0);a.lineTo(e,k);a.lineTo(e,d);a.lineTo(k,d);a.lineTo(0,d-k);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(e-k,0),a.lineTo(e,k),a.lineTo(k,k),a.close(),a.fill()),0!=na&&(a.setFillAlpha(Math.abs(na)),a.setFillColor(0>na?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(k,k),a.lineTo(k,d),a.lineTo(0,d-k),a.close(),a.fill()),a.begin(), -a.moveTo(k,d),a.lineTo(k,k),a.lineTo(0,0),a.moveTo(k,k),a.lineTo(e,k),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var wa=Math.tan(mxUtils.toRadians(30)),qa=(.5-wa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e,d/wa);a.translate((e- -c)/2,(d-c)/2+c/4);a.moveTo(0,.25*c);a.lineTo(.5*c,c*qa);a.lineTo(c,.25*c);a.lineTo(.5*c,(.5-qa)*c);a.lineTo(0,.25*c);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(f,mxCylinder);f.prototype.size=20;f.prototype.redrawPath=function(a,c,b,e,d,k){c=Math.min(e,d/(.5+wa));k?(a.moveTo(0,.25*c),a.lineTo(.5*c,(.5-qa)*c),a.lineTo(c,.25*c),a.moveTo(.5*c,(.5-qa)*c),a.lineTo(.5*c,(1-qa)*c)):(a.translate((e-c)/2,(d-c)/2),a.moveTo(0,.25*c),a.lineTo(.5*c,c*qa),a.lineTo(c,.25*c), -a.lineTo(c,.75*c),a.lineTo(.5*c,(1-qa)*c),a.lineTo(0,.75*c),a.close());a.end()};mxCellRenderer.registerShape("isoCube",f);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(a,c,b,e,d,k){c=Math.min(d/2,Math.round(d/8)+this.strokewidth-1);if(k&&null!=this.fill||!k&&null==this.fill)a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c),k||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c),k||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c), -k||(a.stroke(),a.begin()),a.translate(0,-c);k||(a.moveTo(0,c),a.curveTo(0,-c/3,e,-c/3,e,c),a.lineTo(e,d-c),a.curveTo(e,d+c/3,0,d+c/3,0,d-c),a.close())};d.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(l,mxCylinder);l.prototype.size=30;l.prototype.darkOpacity=0;l.prototype.paintVertexShape=function(a,c,b,e,d){var k=Math.max(0,Math.min(e,Math.min(d,parseFloat(mxUtils.getValue(this.style, -"size",this.size))))),g=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(c,b);a.begin();a.moveTo(0,0);a.lineTo(e-k,0);a.lineTo(e,k);a.lineTo(e,d);a.lineTo(0,d);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=g&&(a.setFillAlpha(Math.abs(g)),a.setFillColor(0>g?"#FFFFFF":"#000000"),a.begin(),a.moveTo(e-k,0),a.lineTo(e-k,k),a.lineTo(e,k),a.close(),a.fill()),a.begin(),a.moveTo(e-k,0),a.lineTo(e-k,k),a.lineTo(e, -k),a.end(),a.stroke())};mxCellRenderer.registerShape("note",l);mxUtils.extend(m,mxActor);m.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,0);a.quadTo(e/2,.5*d,e,0);a.quadTo(.5*e,d/2,e,d);a.quadTo(e/2,.5*d,0,d);a.quadTo(.5*e,d/2,0,0);a.end()};mxCellRenderer.registerShape("switch",m);mxUtils.extend(p,mxCylinder);p.prototype.tabWidth=60;p.prototype.tabHeight=20;p.prototype.tabPosition="right";p.prototype.redrawPath=function(a,c,b,e,d,k){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style, -"tabWidth",this.tabWidth))));b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var g=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);k?"left"==g?(a.moveTo(0,b),a.lineTo(c,b)):(a.moveTo(e-c,b),a.lineTo(e,b)):("left"==g?(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,b),a.lineTo(e,b)):(a.moveTo(0,b),a.lineTo(e-c,b),a.lineTo(e-c,0),a.lineTo(e,0)),a.lineTo(e,d),a.lineTo(0,d),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",p);mxUtils.extend(u, -mxActor);u.prototype.size=30;u.prototype.isRoundable=function(){return!0};u.prototype.redrawPath=function(a,c,b,e,d){c=Math.max(0,Math.min(e,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(e,0),new mxPoint(e,d),new mxPoint(0,d),new mxPoint(0,c)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("card",u);mxUtils.extend(z,mxActor);z.prototype.size= -.4;z.prototype.redrawPath=function(a,c,b,e,d){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,c/2);a.quadTo(e/4,1.4*c,e/2,c/2);a.quadTo(3*e/4,c*(1-1.4),e,c/2);a.lineTo(e,d-c/2);a.quadTo(3*e/4,d-1.4*c,e/2,d-c/2);a.quadTo(e/4,d-c*(1-1.4),0,d-c/2);a.lineTo(0,c/2);a.close();a.end()};z.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var c=mxUtils.getValue(this.style,"size",this.size),b=a.width,e=a.height;if(null==this.direction|| -this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return c*=e,new mxRectangle(a.x,a.y+c,b,e-2*c);c*=b;return new mxRectangle(a.x+c,a.y,b-2*c,e)}return a};mxCellRenderer.registerShape("tape",z);mxUtils.extend(B,mxActor);B.prototype.size=.3;B.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*a.height):null};B.prototype.redrawPath=function(a,c,b, +function la(){mxEllipse.call(this)}function ea(){mxRhombus.call(this)}function ha(){mxEllipse.call(this)}function Aa(){mxEllipse.call(this)}function Ba(){mxEllipse.call(this)}function za(){mxEllipse.call(this)}function oa(){mxActor.call(this)}function ia(){mxActor.call(this)}function sa(){mxActor.call(this)}function pa(){mxConnector.call(this)}function ua(a,c,b,e,d,g,k,f,t,n){k+=t;var na=e.clone();e.x-=d*(2*k+t);e.y-=g*(2*k+t);d*=k+t;g*=k+t;return function(){a.ellipse(na.x-d-k,na.y-g-k,2*k,2*k);n? +a.fillAndStroke():a.stroke()}}mxUtils.extend(a,mxCylinder);a.prototype.size=20;a.prototype.darkOpacity=0;a.prototype.darkOpacity2=0;a.prototype.paintVertexShape=function(a,c,b,e,d){var g=Math.max(0,Math.min(e,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))))),k=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),na=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));a.translate(c,b);a.begin(); +a.moveTo(0,0);a.lineTo(e-g,0);a.lineTo(e,g);a.lineTo(e,d);a.lineTo(g,d);a.lineTo(0,d-g);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=k&&(a.setFillAlpha(Math.abs(k)),a.setFillColor(0>k?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(e-g,0),a.lineTo(e,g),a.lineTo(g,g),a.close(),a.fill()),0!=na&&(a.setFillAlpha(Math.abs(na)),a.setFillColor(0>na?"#FFFFFF":"#000000"),a.begin(),a.moveTo(0,0),a.lineTo(g,g),a.lineTo(g,d),a.lineTo(0,d-g),a.close(),a.fill()),a.begin(), +a.moveTo(g,d),a.lineTo(g,g),a.lineTo(0,0),a.moveTo(g,g),a.lineTo(e,g),a.end(),a.stroke())};a.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?(a=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(a,a,0,0)):null};mxCellRenderer.registerShape("cube",a);var wa=Math.tan(mxUtils.toRadians(30)),qa=(.5-wa)/2;mxUtils.extend(b,mxActor);b.prototype.size=20;b.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e,d/wa);a.translate((e- +c)/2,(d-c)/2+c/4);a.moveTo(0,.25*c);a.lineTo(.5*c,c*qa);a.lineTo(c,.25*c);a.lineTo(.5*c,(.5-qa)*c);a.lineTo(0,.25*c);a.close();a.end()};mxCellRenderer.registerShape("isoRectangle",b);mxUtils.extend(f,mxCylinder);f.prototype.size=20;f.prototype.redrawPath=function(a,c,b,e,d,g){c=Math.min(e,d/(.5+wa));g?(a.moveTo(0,.25*c),a.lineTo(.5*c,(.5-qa)*c),a.lineTo(c,.25*c),a.moveTo(.5*c,(.5-qa)*c),a.lineTo(.5*c,(1-qa)*c)):(a.translate((e-c)/2,(d-c)/2),a.moveTo(0,.25*c),a.lineTo(.5*c,c*qa),a.lineTo(c,.25*c), +a.lineTo(c,.75*c),a.lineTo(.5*c,(1-qa)*c),a.lineTo(0,.75*c),a.close());a.end()};mxCellRenderer.registerShape("isoCube",f);mxUtils.extend(d,mxCylinder);d.prototype.redrawPath=function(a,c,b,e,d,g){c=Math.min(d/2,Math.round(d/8)+this.strokewidth-1);if(g&&null!=this.fill||!g&&null==this.fill)a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c),g||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c),g||(a.stroke(),a.begin()),a.translate(0,c/2),a.moveTo(0,c),a.curveTo(0,2*c,e,2*c,e,c), +g||(a.stroke(),a.begin()),a.translate(0,-c);g||(a.moveTo(0,c),a.curveTo(0,-c/3,e,-c/3,e,c),a.lineTo(e,d-c),a.curveTo(e,d+c/3,0,d+c/3,0,d-c),a.close())};d.prototype.getLabelMargins=function(a){return new mxRectangle(0,2.5*Math.min(a.height/2,Math.round(a.height/8)+this.strokewidth-1),0,0)};mxCellRenderer.registerShape("datastore",d);mxUtils.extend(l,mxCylinder);l.prototype.size=30;l.prototype.darkOpacity=0;l.prototype.paintVertexShape=function(a,c,b,e,d){var g=Math.max(0,Math.min(e,Math.min(d,parseFloat(mxUtils.getValue(this.style, +"size",this.size))))),k=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity))));a.translate(c,b);a.begin();a.moveTo(0,0);a.lineTo(e-g,0);a.lineTo(e,g);a.lineTo(e,d);a.lineTo(0,d);a.lineTo(0,0);a.close();a.end();a.fillAndStroke();this.outline||(a.setShadow(!1),0!=k&&(a.setFillAlpha(Math.abs(k)),a.setFillColor(0>k?"#FFFFFF":"#000000"),a.begin(),a.moveTo(e-g,0),a.lineTo(e-g,g),a.lineTo(e,g),a.close(),a.fill()),a.begin(),a.moveTo(e-g,0),a.lineTo(e-g,g),a.lineTo(e, +g),a.end(),a.stroke())};mxCellRenderer.registerShape("note",l);mxUtils.extend(m,mxActor);m.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,0);a.quadTo(e/2,.5*d,e,0);a.quadTo(.5*e,d/2,e,d);a.quadTo(e/2,.5*d,0,d);a.quadTo(.5*e,d/2,0,0);a.end()};mxCellRenderer.registerShape("switch",m);mxUtils.extend(p,mxCylinder);p.prototype.tabWidth=60;p.prototype.tabHeight=20;p.prototype.tabPosition="right";p.prototype.redrawPath=function(a,c,b,e,d,g){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style, +"tabWidth",this.tabWidth))));b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var k=mxUtils.getValue(this.style,"tabPosition",this.tabPosition);g?"left"==k?(a.moveTo(0,b),a.lineTo(c,b)):(a.moveTo(e-c,b),a.lineTo(e,b)):("left"==k?(a.moveTo(0,0),a.lineTo(c,0),a.lineTo(c,b),a.lineTo(e,b)):(a.moveTo(0,b),a.lineTo(e-c,b),a.lineTo(e-c,0),a.lineTo(e,0)),a.lineTo(e,d),a.lineTo(0,d),a.lineTo(0,b),a.close());a.end()};mxCellRenderer.registerShape("folder",p);mxUtils.extend(u, +mxActor);u.prototype.size=30;u.prototype.isRoundable=function(){return!0};u.prototype.redrawPath=function(a,c,b,e,d){c=Math.max(0,Math.min(e,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(e,0),new mxPoint(e,d),new mxPoint(0,d),new mxPoint(0,c)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("card",u);mxUtils.extend(A,mxActor);A.prototype.size= +.4;A.prototype.redrawPath=function(a,c,b,e,d){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,c/2);a.quadTo(e/4,1.4*c,e/2,c/2);a.quadTo(3*e/4,c*(1-1.4),e,c/2);a.lineTo(e,d-c/2);a.quadTo(3*e/4,d-1.4*c,e/2,d-c/2);a.quadTo(e/4,d-c*(1-1.4),0,d-c/2);a.lineTo(0,c/2);a.close();a.end()};A.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var c=mxUtils.getValue(this.style,"size",this.size),b=a.width,e=a.height;if(null==this.direction|| +this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)return c*=e,new mxRectangle(a.x,a.y+c,b,e-2*c);c*=b;return new mxRectangle(a.x+c,a.y,b-2*c,e)}return a};mxCellRenderer.registerShape("tape",A);mxUtils.extend(B,mxActor);B.prototype.size=.3;B.prototype.getLabelMargins=function(a){return mxUtils.getValue(this.style,"boundedLbl",!1)?new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*a.height):null};B.prototype.redrawPath=function(a,c,b, e,d){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(0,0);a.lineTo(e,0);a.lineTo(e,d-c/2);a.quadTo(3*e/4,d-1.4*c,e/2,d-c/2);a.quadTo(e/4,d-c*(1-1.4),0,d-c/2);a.lineTo(0,c/2);a.close();a.end()};mxCellRenderer.registerShape("document",B);var Ca=mxCylinder.prototype.getCylinderSize;mxCylinder.prototype.getCylinderSize=function(a,c,b,e){var d=mxUtils.getValue(this.style,"size");return null!=d?e*Math.max(0,Math.min(1,d)):Ca.apply(this,arguments)};mxCylinder.prototype.getLabelMargins= function(a){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var c=2*mxUtils.getValue(this.style,"size",.15);return new mxRectangle(0,Math.min(this.maxHeight*this.scale,a.height*c),0,0)}return null};mxUtils.extend(c,mxActor);c.prototype.size=.2;c.prototype.isRoundable=function(){return!0};c.prototype.redrawPath=function(a,c,b,e,d){c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ 2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(c,0),new mxPoint(e,0),new mxPoint(e-c,d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("parallelogram",c);mxUtils.extend(e,mxActor);e.prototype.size=.2;e.prototype.isRoundable=function(){return!0};e.prototype.redrawPath=function(a,c,b,e,d){c=e*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0, d),new mxPoint(c,0),new mxPoint(e-c,0),new mxPoint(e,d)],this.isRounded,b,!0)};mxCellRenderer.registerShape("trapezoid",e);mxUtils.extend(k,mxActor);k.prototype.size=.5;k.prototype.redrawPath=function(a,c,b,e,d){a.setFillColor(null);c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(e,0),new mxPoint(c,0),new mxPoint(c,d/2),new mxPoint(0,d/2),new mxPoint(c, d/2),new mxPoint(c,d),new mxPoint(e,d)],this.isRounded,b,!1);a.end()};mxCellRenderer.registerShape("curlyBracket",k);mxUtils.extend(q,mxActor);q.prototype.redrawPath=function(a,c,b,e,d){a.setStrokeWidth(1);a.setFillColor(this.stroke);c=e/5;a.rect(0,0,c,d);a.fillAndStroke();a.rect(2*c,0,c,d);a.fillAndStroke();a.rect(4*c,0,c,d);a.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",q);n.prototype.moveTo=function(a,c){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=a;this.lastY= -c;this.firstX=a;this.firstY=c};n.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};n.prototype.quadTo=function(a,c,b,e){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=e};n.prototype.curveTo=function(a,c,b,e,d,k){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=d;this.lastY=k};n.prototype.arcTo=function(a,c,b,e, -d,k,g){this.originalArcTo.apply(this.canvas,arguments);this.lastX=k;this.lastY=g};n.prototype.lineTo=function(a,c){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},e=Math.abs(a-this.lastX),d=Math.abs(c-this.lastY),k=Math.sqrt(e*e+d*d);if(2>k){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c;return}var g=Math.round(k/10),f=this.defaultVariation;5>g&&(g=5,f/=3);for(var na=b(a-this.lastX)*e/g,b=b(c-this.lastY)*d/ -g,e=e/k,d=d/k,k=0;k<g;k++){var n=(Math.random()-.5)*f;this.originalLineTo.call(this.canvas,na*k+this.lastX-n*d,b*k+this.lastY-n*e)}this.originalLineTo.call(this.canvas,a,c)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c};n.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo}; +c;this.firstX=a;this.firstY=c};n.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas,arguments));this.originalClose.apply(this.canvas,arguments)};n.prototype.quadTo=function(a,c,b,e){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=b;this.lastY=e};n.prototype.curveTo=function(a,c,b,e,d,g){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=d;this.lastY=g};n.prototype.arcTo=function(a,c,b,e, +d,g,k){this.originalArcTo.apply(this.canvas,arguments);this.lastX=g;this.lastY=k};n.prototype.lineTo=function(a,c){if(null!=this.lastX&&null!=this.lastY){var b=function(a){return"number"===typeof a?a?0>a?-1:1:a===a?0:NaN:NaN},e=Math.abs(a-this.lastX),d=Math.abs(c-this.lastY),g=Math.sqrt(e*e+d*d);if(2>g){this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c;return}var k=Math.round(g/10),f=this.defaultVariation;5>k&&(k=5,f/=3);for(var na=b(a-this.lastX)*e/k,b=b(c-this.lastY)*d/ +k,e=e/g,d=d/g,g=0;g<k;g++){var t=(Math.random()-.5)*f;this.originalLineTo.call(this.canvas,na*g+this.lastX-t*d,b*g+this.lastY-t*e)}this.originalLineTo.call(this.canvas,a,c)}else this.originalLineTo.apply(this.canvas,arguments);this.lastX=a;this.lastY=c};n.prototype.destroy=function(){this.canvas.lineTo=this.originalLineTo;this.canvas.moveTo=this.originalMoveTo;this.canvas.close=this.originalClose;this.canvas.quadTo=this.originalQuadTo;this.canvas.curveTo=this.originalCurveTo;this.canvas.arcTo=this.originalArcTo}; var Ma=mxShape.prototype.paint;mxShape.prototype.defaultJiggle=1.5;mxShape.prototype.paint=function(a){null!=this.style&&"0"!=mxUtils.getValue(this.style,"comic","0")&&null==a.handHiggle&&(a.handJiggle=new n(a,mxUtils.getValue(this.style,"jiggle",this.defaultJiggle)));Ma.apply(this,arguments);null!=a.handJiggle&&(a.handJiggle.destroy(),delete a.handJiggle)};mxRhombus.prototype.defaultJiggle=2;var Da=mxRectangleShape.prototype.isHtmlAllowed;mxRectangleShape.prototype.isHtmlAllowed=function(){return(null== -this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Da.apply(this,arguments)};var xa=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,c,b,e,d){if(null==a.handJiggle)xa.apply(this,arguments);else{var k=!0;null!=this.style&&(k="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(k||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)k||null!=this.fill&&this.fill!=mxConstants.NONE|| -(a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?k=Math.min(e/2,Math.min(d/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.min(e*k,d*k)),a.moveTo(c+k,b),a.lineTo(c+e-k,b),a.quadTo(c+e,b,c+e,b+k),a.lineTo(c+e,b+d-k),a.quadTo(c+e,b+d,c+e-k,b+d),a.lineTo(c+k,b+d),a.quadTo(c,b+d,c,b+d-k), -a.lineTo(c,b+k),a.quadTo(c,b,c+k,b)):(a.moveTo(c,b),a.lineTo(c+e,b),a.lineTo(c+e,b+d),a.lineTo(c,b+d),a.lineTo(c,b)),a.close(),a.end(),a.fillAndStroke()}};var ya=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,c,b,e,d){null==a.handJiggle&&ya.apply(this,arguments)};mxUtils.extend(g,mxRectangleShape);g.prototype.size=.1;g.prototype.isHtmlAllowed=function(){return!1};g.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL, +this.style||"0"==mxUtils.getValue(this.style,"comic","0"))&&Da.apply(this,arguments)};var xa=mxRectangleShape.prototype.paintBackground;mxRectangleShape.prototype.paintBackground=function(a,c,b,e,d){if(null==a.handJiggle)xa.apply(this,arguments);else{var g=!0;null!=this.style&&(g="1"==mxUtils.getValue(this.style,mxConstants.STYLE_POINTER_EVENTS,"1"));if(g||null!=this.fill&&this.fill!=mxConstants.NONE||null!=this.stroke&&this.stroke!=mxConstants.NONE)g||null!=this.fill&&this.fill!=mxConstants.NONE|| +(a.pointerEvents=!1),a.begin(),this.isRounded?("1"==mxUtils.getValue(this.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?g=Math.min(e/2,Math.min(d/2,mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2)):(g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.min(e*g,d*g)),a.moveTo(c+g,b),a.lineTo(c+e-g,b),a.quadTo(c+e,b,c+e,b+g),a.lineTo(c+e,b+d-g),a.quadTo(c+e,b+d,c+e-g,b+d),a.lineTo(c+g,b+d),a.quadTo(c,b+d,c,b+d-g), +a.lineTo(c,b+g),a.quadTo(c,b,c+g,b)):(a.moveTo(c,b),a.lineTo(c+e,b),a.lineTo(c+e,b+d),a.lineTo(c,b+d),a.lineTo(c,b)),a.close(),a.end(),a.fillAndStroke()}};var ya=mxRectangleShape.prototype.paintForeground;mxRectangleShape.prototype.paintForeground=function(a,c,b,e,d){null==a.handJiggle&&ya.apply(this,arguments)};mxUtils.extend(g,mxRectangleShape);g.prototype.size=.1;g.prototype.isHtmlAllowed=function(){return!1};g.prototype.getLabelBounds=function(a){if(mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL, !0)==(null==this.direction||this.direction==mxConstants.DIRECTION_EAST||this.direction==mxConstants.DIRECTION_WEST)){var c=a.width,b=a.height;a=new mxRectangle(a.x,a.y,c,b);var e=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var d=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,e=Math.max(e,Math.min(c*d,b*d));a.x+=Math.round(e);a.width-=Math.round(2*e)}return a};g.prototype.paintForeground= -function(a,c,b,e,d){var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(e*g,d*g));k=Math.round(k);a.begin();a.moveTo(c+k,b);a.lineTo(c+k,b+d);a.moveTo(c+e-k,b);a.lineTo(c+e-k,b+d);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",g);mxUtils.extend(A, -mxRectangleShape);A.prototype.paintBackground=function(a,c,b,e,d){a.setFillColor(mxConstants.NONE);a.rect(c,b,e,d);a.fill()};A.prototype.paintForeground=function(a,c,b,e,d){};mxCellRenderer.registerShape("transparent",A);mxUtils.extend(x,mxHexagon);x.prototype.size=30;x.prototype.position=.5;x.prototype.position2=.5;x.prototype.base=20;x.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};x.prototype.isRoundable= -function(){return!0};x.prototype.redrawPath=function(a,c,b,e,d){c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"base",this.base)))); -this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,d-b),new mxPoint(Math.min(e,k+f),d-b),new mxPoint(g,d),new mxPoint(Math.max(0,k),d-b),new mxPoint(0,d-b)],this.isRounded,c,!0,[4])};mxCellRenderer.registerShape("callout",x);mxUtils.extend(t,mxActor);t.prototype.size=.2;t.prototype.fixedSize=20;t.prototype.isRoundable=function(){return!0};t.prototype.redrawPath=function(a,c,b,e,d){c="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style, -"size",this.fixedSize)))):e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e-c,d),new mxPoint(0,d),new mxPoint(c,d/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",t);mxUtils.extend(H,mxHexagon);H.prototype.size=.25;H.prototype.isRoundable=function(){return!0};H.prototype.redrawPath= -function(a,c,b,e,d){c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(e-c,0),new mxPoint(e,.5*d),new mxPoint(e-c,d),new mxPoint(c,d),new mxPoint(0,.5*d)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",H);mxUtils.extend(y,mxRectangleShape);y.prototype.isHtmlAllowed=function(){return!1};y.prototype.paintForeground=function(a, -c,b,e,d){var k=Math.min(e/5,d/5)+1;a.begin();a.moveTo(c+e/2,b+k);a.lineTo(c+e/2,b+d-k);a.moveTo(c+k,b+d/2);a.lineTo(c+e-k,b+d/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",y);var Ha=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+ -c,a.y+c,a.width-2*c,a.height-2*c)}return a};mxRhombus.prototype.paintVertexShape=function(a,c,b,e,d){Ha.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var k=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);c+=k;b+=k;e-=2*k;d-=2*k;0<e&&0<d&&(a.setShadow(!1),Ha.apply(this,[a,c,b,e,d]))}};mxUtils.extend(F,mxRectangleShape);F.prototype.isHtmlAllowed=function(){return!1};F.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(Math.max(2, -this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+c,a.y+c,a.width-2*c,a.height-2*c)}return a};F.prototype.paintForeground=function(a,c,b,e,d){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var k=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);c+=k;b+=k;e-=2*k;d-=2*k;0<e&&0<d&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var k=0,g;do{g=mxCellRenderer.defaultShapes[this.style["symbol"+ -k]];if(null!=g){var f=this.style["symbol"+k+"Align"],na=this.style["symbol"+k+"VerticalAlign"],n=this.style["symbol"+k+"Width"],v=this.style["symbol"+k+"Height"],q=this.style["symbol"+k+"Spacing"]||0,t=this.style["symbol"+k+"VSpacing"]||q,x=this.style["symbol"+k+"ArcSpacing"];null!=x&&(x*=this.getArcSize(e+this.strokewidth,d+this.strokewidth),q+=x,t+=x);var x=c,l=b,x=f==mxConstants.ALIGN_CENTER?x+(e-n)/2:f==mxConstants.ALIGN_RIGHT?x+(e-n-q):x+q,l=na==mxConstants.ALIGN_MIDDLE?l+(d-v)/2:na==mxConstants.ALIGN_BOTTOM? -l+(d-v-t):l+t;a.save();f=new g;f.style=this.style;g.prototype.paintVertexShape.call(f,a,x,l,n,v);a.restore()}k++}while(null!=g)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",F);mxUtils.extend(C,mxCylinder);C.prototype.redrawPath=function(a,c,b,e,d,k){k?(a.moveTo(0,0),a.lineTo(e/2,d/2),a.lineTo(e,0),a.end()):(a.moveTo(0,0),a.lineTo(e,0),a.lineTo(e,d),a.lineTo(0,d),a.close())};mxCellRenderer.registerShape("message",C);mxUtils.extend(v,mxShape); -v.prototype.paintBackground=function(a,c,b,e,d){a.translate(c,b);a.ellipse(e/4,0,e/2,d/4);a.fillAndStroke();a.begin();a.moveTo(e/2,d/4);a.lineTo(e/2,2*d/3);a.moveTo(e/2,d/3);a.lineTo(0,d/3);a.moveTo(e/2,d/3);a.lineTo(e,d/3);a.moveTo(e/2,2*d/3);a.lineTo(0,d);a.moveTo(e/2,2*d/3);a.lineTo(e,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",v);mxUtils.extend(J,mxShape);J.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};J.prototype.paintBackground=function(a, -c,b,e,d){a.translate(c,b);a.begin();a.moveTo(0,d/4);a.lineTo(0,3*d/4);a.end();a.stroke();a.begin();a.moveTo(0,d/2);a.lineTo(e/6,d/2);a.end();a.stroke();a.ellipse(e/6,0,5*e/6,d);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",J);mxUtils.extend(M,mxEllipse);M.prototype.paintVertexShape=function(a,c,b,e,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(c+e/8,b+d);a.lineTo(c+7*e/8,b+d);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",M);mxUtils.extend(I, -mxShape);I.prototype.paintVertexShape=function(a,c,b,e,d){a.translate(c,b);a.begin();a.moveTo(e,0);a.lineTo(0,d);a.moveTo(0,0);a.lineTo(e,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",I);mxUtils.extend(P,mxShape);P.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};P.prototype.paintBackground=function(a,c,b,e,d){a.translate(c,b);a.begin();a.moveTo(3*e/8,d/8*1.1);a.lineTo(5*e/8,0);a.end();a.stroke();a.ellipse(0,d/8,e,7*d/8);a.fillAndStroke()}; -P.prototype.paintForeground=function(a,c,b,e,d){a.begin();a.moveTo(3*e/8,d/8*1.1);a.lineTo(5*e/8,d/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",P);mxUtils.extend(D,mxRectangleShape);D.prototype.size=40;D.prototype.isHtmlAllowed=function(){return!1};D.prototype.getLabelBounds=function(a){var c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,c)};D.prototype.paintBackground=function(a,c,b,e, -d){var k=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),g=mxUtils.getValue(this.style,"participant");null==g||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,c,b,e,k):(g=this.state.view.graph.cellRenderer.getShape(g),null!=g&&g!=D&&(g=new g,g.apply(this.state),a.save(),g.paintVertexShape(a,c,b,e,k),a.restore()));k<d&&(a.setDashed(!0),a.begin(),a.moveTo(c+e/2,b+k),a.lineTo(c+e/2,b+d),a.end(),a.stroke())};D.prototype.paintForeground=function(a, -c,b,e,d){var k=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,c,b,e,Math.min(d,k))};mxCellRenderer.registerShape("umlLifeline",D);mxUtils.extend(E,mxShape);E.prototype.width=60;E.prototype.height=30;E.prototype.corner=10;E.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, -"height",this.height)*this.scale))};E.prototype.paintBackground=function(a,c,b,e,d){var k=this.corner,g=Math.min(e,Math.max(k,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),f=Math.min(d,Math.max(1.5*k,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),n=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);n!=mxConstants.NONE&&(a.setFillColor(n),a.rect(c,b,e,d),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= -mxConstants.NONE?(this.getGradientBounds(a,c,b,e,d),a.setGradient(this.fill,this.gradient,c,b,e,d,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(c,b);a.lineTo(c+g,b);a.lineTo(c+g,b+Math.max(0,f-1.5*k));a.lineTo(c+Math.max(0,g-k),b+f);a.lineTo(c,b+f);a.close();a.fillAndStroke();a.begin();a.moveTo(c+g,b);a.lineTo(c+e,b);a.lineTo(c+e,b+d);a.lineTo(c,b+d);a.lineTo(c,b+f);a.stroke()};mxCellRenderer.registerShape("umlFrame",E);mxPerimeter.LifelinePerimeter=function(a,c,b,e){e=D.prototype.size; +function(a,c,b,e,d){var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));if(this.isRounded)var k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(e*k,d*k));g=Math.round(g);a.begin();a.moveTo(c+g,b);a.lineTo(c+g,b+d);a.moveTo(c+e-g,b);a.lineTo(c+e-g,b+d);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("process",g);mxUtils.extend(z, +mxRectangleShape);z.prototype.paintBackground=function(a,c,b,e,d){a.setFillColor(mxConstants.NONE);a.rect(c,b,e,d);a.fill()};z.prototype.paintForeground=function(a,c,b,e,d){};mxCellRenderer.registerShape("transparent",z);mxUtils.extend(x,mxHexagon);x.prototype.size=30;x.prototype.position=.5;x.prototype.position2=.5;x.prototype.base=20;x.prototype.getLabelMargins=function(){return new mxRectangle(0,0,0,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale)};x.prototype.isRoundable= +function(){return!0};x.prototype.redrawPath=function(a,c,b,e,d){c=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));var g=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position",this.position)))),k=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2)))),f=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"base",this.base)))); +this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,d-b),new mxPoint(Math.min(e,g+f),d-b),new mxPoint(k,d),new mxPoint(Math.max(0,g),d-b),new mxPoint(0,d-b)],this.isRounded,c,!0,[4])};mxCellRenderer.registerShape("callout",x);mxUtils.extend(v,mxActor);v.prototype.size=.2;v.prototype.fixedSize=20;v.prototype.isRoundable=function(){return!0};v.prototype.redrawPath=function(a,c,b,e,d){c="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style, +"size",this.fixedSize)))):e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e-c,d),new mxPoint(0,d),new mxPoint(c,d/2)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("step",v);mxUtils.extend(I,mxHexagon);I.prototype.size=.25;I.prototype.isRoundable=function(){return!0};I.prototype.redrawPath= +function(a,c,b,e,d){c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(e-c,0),new mxPoint(e,.5*d),new mxPoint(e-c,d),new mxPoint(c,d),new mxPoint(0,.5*d)],this.isRounded,b,!0)};mxCellRenderer.registerShape("hexagon",I);mxUtils.extend(y,mxRectangleShape);y.prototype.isHtmlAllowed=function(){return!1};y.prototype.paintForeground=function(a, +c,b,e,d){var g=Math.min(e/5,d/5)+1;a.begin();a.moveTo(c+e/2,b+g);a.lineTo(c+e/2,b+d-g);a.moveTo(c+g,b+d/2);a.lineTo(c+e-g,b+d/2);a.end();a.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("plus",y);var Ha=mxRhombus.prototype.paintVertexShape;mxRhombus.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+ +c,a.y+c,a.width-2*c,a.height-2*c)}return a};mxRhombus.prototype.paintVertexShape=function(a,c,b,e,d){Ha.apply(this,arguments);if(!this.outline&&1==this.style["double"]){var g=2*Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);c+=g;b+=g;e-=2*g;d-=2*g;0<e&&0<d&&(a.setShadow(!1),Ha.apply(this,[a,c,b,e,d]))}};mxUtils.extend(F,mxRectangleShape);F.prototype.isHtmlAllowed=function(){return!1};F.prototype.getLabelBounds=function(a){if(1==this.style["double"]){var c=(Math.max(2, +this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0))*this.scale;return new mxRectangle(a.x+c,a.y+c,a.width-2*c,a.height-2*c)}return a};F.prototype.paintForeground=function(a,c,b,e,d){if(null!=this.style){if(!this.outline&&1==this.style["double"]){var g=Math.max(2,this.strokewidth+1)+parseFloat(this.style[mxConstants.STYLE_MARGIN]||0);c+=g;b+=g;e-=2*g;d-=2*g;0<e&&0<d&&mxRectangleShape.prototype.paintBackground.apply(this,arguments)}a.setDashed(!1);var g=0,k;do{k=mxCellRenderer.defaultShapes[this.style["symbol"+ +g]];if(null!=k){var f=this.style["symbol"+g+"Align"],na=this.style["symbol"+g+"VerticalAlign"],t=this.style["symbol"+g+"Width"],n=this.style["symbol"+g+"Height"],q=this.style["symbol"+g+"Spacing"]||0,v=this.style["symbol"+g+"VSpacing"]||q,x=this.style["symbol"+g+"ArcSpacing"];null!=x&&(x*=this.getArcSize(e+this.strokewidth,d+this.strokewidth),q+=x,v+=x);var x=c,l=b,x=f==mxConstants.ALIGN_CENTER?x+(e-t)/2:f==mxConstants.ALIGN_RIGHT?x+(e-t-q):x+q,l=na==mxConstants.ALIGN_MIDDLE?l+(d-n)/2:na==mxConstants.ALIGN_BOTTOM? +l+(d-n-v):l+v;a.save();f=new k;f.style=this.style;k.prototype.paintVertexShape.call(f,a,x,l,t,n);a.restore()}g++}while(null!=k)}mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("ext",F);mxUtils.extend(C,mxCylinder);C.prototype.redrawPath=function(a,c,b,e,d,g){g?(a.moveTo(0,0),a.lineTo(e/2,d/2),a.lineTo(e,0),a.end()):(a.moveTo(0,0),a.lineTo(e,0),a.lineTo(e,d),a.lineTo(0,d),a.close())};mxCellRenderer.registerShape("message",C);mxUtils.extend(t,mxShape); +t.prototype.paintBackground=function(a,c,b,e,d){a.translate(c,b);a.ellipse(e/4,0,e/2,d/4);a.fillAndStroke();a.begin();a.moveTo(e/2,d/4);a.lineTo(e/2,2*d/3);a.moveTo(e/2,d/3);a.lineTo(0,d/3);a.moveTo(e/2,d/3);a.lineTo(e,d/3);a.moveTo(e/2,2*d/3);a.lineTo(0,d);a.moveTo(e/2,2*d/3);a.lineTo(e,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlActor",t);mxUtils.extend(J,mxShape);J.prototype.getLabelMargins=function(a){return new mxRectangle(a.width/6,0,0,0)};J.prototype.paintBackground=function(a, +c,b,e,d){a.translate(c,b);a.begin();a.moveTo(0,d/4);a.lineTo(0,3*d/4);a.end();a.stroke();a.begin();a.moveTo(0,d/2);a.lineTo(e/6,d/2);a.end();a.stroke();a.ellipse(e/6,0,5*e/6,d);a.fillAndStroke()};mxCellRenderer.registerShape("umlBoundary",J);mxUtils.extend(M,mxEllipse);M.prototype.paintVertexShape=function(a,c,b,e,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(c+e/8,b+d);a.lineTo(c+7*e/8,b+d);a.end();a.stroke()};mxCellRenderer.registerShape("umlEntity",M);mxUtils.extend(G, +mxShape);G.prototype.paintVertexShape=function(a,c,b,e,d){a.translate(c,b);a.begin();a.moveTo(e,0);a.lineTo(0,d);a.moveTo(0,0);a.lineTo(e,d);a.end();a.stroke()};mxCellRenderer.registerShape("umlDestroy",G);mxUtils.extend(P,mxShape);P.prototype.getLabelBounds=function(a){return new mxRectangle(a.x,a.y+a.height/8,a.width,7*a.height/8)};P.prototype.paintBackground=function(a,c,b,e,d){a.translate(c,b);a.begin();a.moveTo(3*e/8,d/8*1.1);a.lineTo(5*e/8,0);a.end();a.stroke();a.ellipse(0,d/8,e,7*d/8);a.fillAndStroke()}; +P.prototype.paintForeground=function(a,c,b,e,d){a.begin();a.moveTo(3*e/8,d/8*1.1);a.lineTo(5*e/8,d/4);a.end();a.stroke()};mxCellRenderer.registerShape("umlControl",P);mxUtils.extend(E,mxRectangleShape);E.prototype.size=40;E.prototype.isHtmlAllowed=function(){return!1};E.prototype.getLabelBounds=function(a){var c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale));return new mxRectangle(a.x,a.y,a.width,c)};E.prototype.paintBackground=function(a,c,b,e, +d){var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),k=mxUtils.getValue(this.style,"participant");null==k||null==this.state?mxRectangleShape.prototype.paintBackground.call(this,a,c,b,e,g):(k=this.state.view.graph.cellRenderer.getShape(k),null!=k&&k!=E&&(k=new k,k.apply(this.state),a.save(),k.paintVertexShape(a,c,b,e,g),a.restore()));g<d&&(a.setDashed(!0),a.begin(),a.moveTo(c+e/2,b+g),a.lineTo(c+e/2,b+d),a.end(),a.stroke())};E.prototype.paintForeground=function(a, +c,b,e,d){var g=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));mxRectangleShape.prototype.paintForeground.call(this,a,c,b,e,Math.min(d,g))};mxCellRenderer.registerShape("umlLifeline",E);mxUtils.extend(D,mxShape);D.prototype.width=60;D.prototype.height=30;D.prototype.corner=10;D.prototype.getLabelMargins=function(a){return new mxRectangle(0,0,a.width-parseFloat(mxUtils.getValue(this.style,"width",this.width)*this.scale),a.height-parseFloat(mxUtils.getValue(this.style, +"height",this.height)*this.scale))};D.prototype.paintBackground=function(a,c,b,e,d){var g=this.corner,k=Math.min(e,Math.max(g,parseFloat(mxUtils.getValue(this.style,"width",this.width)))),f=Math.min(d,Math.max(1.5*g,parseFloat(mxUtils.getValue(this.style,"height",this.height)))),t=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE);t!=mxConstants.NONE&&(a.setFillColor(t),a.rect(c,b,e,d),a.fill());null!=this.fill&&this.fill!=mxConstants.NONE&&this.gradient&&this.gradient!= +mxConstants.NONE?(this.getGradientBounds(a,c,b,e,d),a.setGradient(this.fill,this.gradient,c,b,e,d,this.gradientDirection)):a.setFillColor(this.fill);a.begin();a.moveTo(c,b);a.lineTo(c+k,b);a.lineTo(c+k,b+Math.max(0,f-1.5*g));a.lineTo(c+Math.max(0,k-g),b+f);a.lineTo(c,b+f);a.close();a.fillAndStroke();a.begin();a.moveTo(c+k,b);a.lineTo(c+e,b);a.lineTo(c+e,b+d);a.lineTo(c,b+d);a.lineTo(c,b+f);a.stroke()};mxCellRenderer.registerShape("umlFrame",D);mxPerimeter.LifelinePerimeter=function(a,c,b,e){e=E.prototype.size; null!=c&&(e=mxUtils.getValue(c.style,"size",e)*c.view.scale);c=parseFloat(c.style[mxConstants.STYLE_STROKEWIDTH]||1)*c.view.scale/2-1;b.x<a.getCenterX()&&(c=-1*(c+1));return new mxPoint(a.getCenterX()+c,Math.min(a.y+a.height,Math.max(a.y+e,b.y)))};mxStyleRegistry.putValue("lifelinePerimeter",mxPerimeter.LifelinePerimeter);mxPerimeter.OrthogonalPerimeter=function(a,c,b,e){e=!0;return mxPerimeter.RectanglePerimeter.apply(this,arguments)};mxStyleRegistry.putValue("orthogonalPerimeter",mxPerimeter.OrthogonalPerimeter); mxPerimeter.BackbonePerimeter=function(a,c,b,e){e=parseFloat(c.style[mxConstants.STYLE_STROKEWIDTH]||1)*c.view.scale/2-1;null!=c.style.backboneSize&&(e+=parseFloat(c.style.backboneSize)*c.view.scale/2-1);if("south"==c.style[mxConstants.STYLE_DIRECTION]||"north"==c.style[mxConstants.STYLE_DIRECTION])return b.x<a.getCenterX()&&(e=-1*(e+1)),new mxPoint(a.getCenterX()+e,Math.min(a.y+a.height,Math.max(a.y,b.y)));b.y<a.getCenterY()&&(e=-1*(e+1));return new mxPoint(Math.min(a.x+a.width,Math.max(a.x,b.x)), -a.getCenterY()+e)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,c,b,e){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(c.style,"size",x.prototype.size))*c.view.scale))),c.style),c,b,e)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,e,d){var k=c.prototype.size; -null!=b&&(k=mxUtils.getValue(b.style,"size",k));var g=a.x,f=a.y,n=a.width,v=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(k=v*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f),new mxPoint(g+n,f+k),new mxPoint(g+n,f+v),new mxPoint(g,f+v-k),new mxPoint(g,f)]):(k=n*Math.max(0,Math.min(1,k)),f=[new mxPoint(g+k,f),new mxPoint(g+n,f),new mxPoint(g+n-k,f+v),new mxPoint(g, -f+v),new mxPoint(g+k,f)]);v=a.getCenterX();a=a.getCenterY();a=new mxPoint(v,a);d&&(e.x<g||e.x>g+n?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(f,a,e)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,c,b,d){var k=e.prototype.size;null!=c&&(k=mxUtils.getValue(c.style,"size",k));var g=a.x,f=a.y,n=a.width,v=a.height;c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST; -c==mxConstants.DIRECTION_EAST?(k=n*Math.max(0,Math.min(1,k)),f=[new mxPoint(g+k,f),new mxPoint(g+n-k,f),new mxPoint(g+n,f+v),new mxPoint(g,f+v),new mxPoint(g+k,f)]):c==mxConstants.DIRECTION_WEST?(k=n*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f),new mxPoint(g+n,f),new mxPoint(g+n-k,f+v),new mxPoint(g+k,f+v),new mxPoint(g,f)]):c==mxConstants.DIRECTION_NORTH?(k=v*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f+k),new mxPoint(g+n,f),new mxPoint(g+n,f+v),new mxPoint(g,f+v-k),new mxPoint(g,f+k)]):(k=v*Math.max(0, -Math.min(1,k)),f=[new mxPoint(g,f),new mxPoint(g+n,f+k),new mxPoint(g+n,f+v-k),new mxPoint(g,f+v),new mxPoint(g,f)]);v=a.getCenterX();a=a.getCenterY();a=new mxPoint(v,a);d&&(b.x<g||b.x>g+n?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(f,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,c,b,e){var d="0"!=mxUtils.getValue(c.style,"fixedSize","0"),k=d?t.prototype.fixedSize:t.prototype.size;null!=c&&(k=mxUtils.getValue(c.style, -"size",k));var g=a.x,f=a.y,n=a.width,v=a.height,q=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_EAST?(d=d?Math.max(0,Math.min(n,k)):n*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f),new mxPoint(g+n-d,f),new mxPoint(g+n,a),new mxPoint(g+n-d,f+v),new mxPoint(g,f+v),new mxPoint(g+d,a),new mxPoint(g,f)]):c==mxConstants.DIRECTION_WEST?(d=d?Math.max(0,Math.min(n,k)):n*Math.max(0, -Math.min(1,k)),f=[new mxPoint(g+d,f),new mxPoint(g+n,f),new mxPoint(g+n-d,a),new mxPoint(g+n,f+v),new mxPoint(g+d,f+v),new mxPoint(g,a),new mxPoint(g+d,f)]):c==mxConstants.DIRECTION_NORTH?(d=d?Math.max(0,Math.min(v,k)):v*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f+d),new mxPoint(q,f),new mxPoint(g+n,f+d),new mxPoint(g+n,f+v),new mxPoint(q,f+v-d),new mxPoint(g,f+v),new mxPoint(g,f+d)]):(d=d?Math.max(0,Math.min(v,k)):v*Math.max(0,Math.min(1,k)),f=[new mxPoint(g,f),new mxPoint(q,f+d),new mxPoint(g+ -n,f),new mxPoint(g+n,f+v-d),new mxPoint(q,f+v),new mxPoint(g,f+v-d),new mxPoint(g,f)]);q=new mxPoint(q,a);e&&(b.x<g||b.x>g+n?q.y=b.y:q.x=b.x);return mxUtils.getPerimeterPoint(f,q,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,c,b,e){var d=H.prototype.size;null!=c&&(d=mxUtils.getValue(c.style,"size",d));var k=a.x,g=a.y,f=a.width,n=a.height,v=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION, -mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_SOUTH?(d=n*Math.max(0,Math.min(1,d)),g=[new mxPoint(v,g),new mxPoint(k+f,g+d),new mxPoint(k+f,g+n-d),new mxPoint(v,g+n),new mxPoint(k,g+n-d),new mxPoint(k,g+d),new mxPoint(v,g)]):(d=f*Math.max(0,Math.min(1,d)),g=[new mxPoint(k+d,g),new mxPoint(k+f-d,g),new mxPoint(k+f,a),new mxPoint(k+f-d,g+n),new mxPoint(k+d,g+n),new mxPoint(k,a),new mxPoint(k+d,g)]);v=new mxPoint(v,a);e&&(b.x<k||b.x>k+ -f?v.y=b.y:v.x=b.x);return mxUtils.getPerimeterPoint(g,v,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(N,mxShape);N.prototype.size=10;N.prototype.paintBackground=function(a,c,b,e,d){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(c,b);a.ellipse((e-k)/2,0,k,k);a.fillAndStroke();a.begin();a.moveTo(e/2,k);a.lineTo(e/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",N);mxUtils.extend(U,mxShape);U.prototype.size= -10;U.prototype.inset=2;U.prototype.paintBackground=function(a,c,b,e,d){var k=parseFloat(mxUtils.getValue(this.style,"size",this.size)),g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.begin();a.moveTo(e/2,k+g);a.lineTo(e/2,d);a.end();a.stroke();a.begin();a.moveTo((e-k)/2-g,k/2);a.quadTo((e-k)/2-g,k+g,e/2,k+g);a.quadTo((e+k)/2+g,k+g,(e+k)/2+g,k/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",U);mxUtils.extend(ba,mxShape);ba.prototype.paintBackground= -function(a,c,b,e,d){a.translate(c,b);a.begin();a.moveTo(0,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,0,d);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",ba);mxUtils.extend(V,mxShape);V.prototype.inset=2;V.prototype.paintBackground=function(a,c,b,e,d){var k=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.ellipse(0,k,e-2*k,d-2*k);a.fillAndStroke();a.begin();a.moveTo(e/2,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,e/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", -V);mxUtils.extend(G,mxCylinder);G.prototype.jettyWidth=32;G.prototype.jettyHeight=12;G.prototype.redrawPath=function(a,c,b,e,d,k){var g=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));c=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));b=g/2;var g=b+g/2,f=.3*d-c/2,n=.7*d-c/2;k?(a.moveTo(b,f),a.lineTo(g,f),a.lineTo(g,f+c),a.lineTo(b,f+c),a.moveTo(b,n),a.lineTo(g,n),a.lineTo(g,n+c),a.lineTo(b,n+c)):(a.moveTo(b,0),a.lineTo(e,0),a.lineTo(e,d),a.lineTo(b,d), -a.lineTo(b,n+c),a.lineTo(0,n+c),a.lineTo(0,n),a.lineTo(b,n),a.lineTo(b,f+c),a.lineTo(0,f+c),a.lineTo(0,f),a.lineTo(b,f),a.close());a.end()};mxCellRenderer.registerShape("component",G);mxUtils.extend(Y,mxRectangleShape);Y.prototype.paintForeground=function(a,c,b,e,d){var k=e/2,g=d/2,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;a.begin();this.addPoints(a,[new mxPoint(c+k,b),new mxPoint(c+e,b+g),new mxPoint(c+k,b+d),new mxPoint(c,b+g)],this.isRounded,f,!0);a.stroke(); -mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Y);mxUtils.extend(fa,mxDoubleEllipse);fa.prototype.outerStroke=!0;fa.prototype.paintVertexShape=function(a,c,b,e,d){var k=Math.min(4,Math.min(e/5,d/5));0<e&&0<d&&(a.ellipse(c+k,b+k,e-2*k,d-2*k),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(c,b,e,d),a.stroke())};mxCellRenderer.registerShape("endState",fa);mxUtils.extend(ja,fa);ja.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState", +a.getCenterY()+e)};mxStyleRegistry.putValue("backbonePerimeter",mxPerimeter.BackbonePerimeter);mxPerimeter.CalloutPerimeter=function(a,c,b,e){return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(a,new mxRectangle(0,0,0,Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(c.style,"size",x.prototype.size))*c.view.scale))),c.style),c,b,e)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(a,b,e,d){var g=c.prototype.size; +null!=b&&(g=mxUtils.getValue(b.style,"size",g));var k=a.x,f=a.y,t=a.width,n=a.height;b=null!=b?mxUtils.getValue(b.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_SOUTH?(g=n*Math.max(0,Math.min(1,g)),f=[new mxPoint(k,f),new mxPoint(k+t,f+g),new mxPoint(k+t,f+n),new mxPoint(k,f+n-g),new mxPoint(k,f)]):(g=t*Math.max(0,Math.min(1,g)),f=[new mxPoint(k+g,f),new mxPoint(k+t,f),new mxPoint(k+t-g,f+n),new mxPoint(k, +f+n),new mxPoint(k+g,f)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);d&&(e.x<k||e.x>k+t?a.y=e.y:a.x=e.x);return mxUtils.getPerimeterPoint(f,a,e)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(a,c,b,d){var g=e.prototype.size;null!=c&&(g=mxUtils.getValue(c.style,"size",g));var k=a.x,f=a.y,t=a.width,n=a.height;c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST; +c==mxConstants.DIRECTION_EAST?(g=t*Math.max(0,Math.min(1,g)),f=[new mxPoint(k+g,f),new mxPoint(k+t-g,f),new mxPoint(k+t,f+n),new mxPoint(k,f+n),new mxPoint(k+g,f)]):c==mxConstants.DIRECTION_WEST?(g=t*Math.max(0,Math.min(1,g)),f=[new mxPoint(k,f),new mxPoint(k+t,f),new mxPoint(k+t-g,f+n),new mxPoint(k+g,f+n),new mxPoint(k,f)]):c==mxConstants.DIRECTION_NORTH?(g=n*Math.max(0,Math.min(1,g)),f=[new mxPoint(k,f+g),new mxPoint(k+t,f),new mxPoint(k+t,f+n),new mxPoint(k,f+n-g),new mxPoint(k,f+g)]):(g=n*Math.max(0, +Math.min(1,g)),f=[new mxPoint(k,f),new mxPoint(k+t,f+g),new mxPoint(k+t,f+n-g),new mxPoint(k,f+n),new mxPoint(k,f)]);n=a.getCenterX();a=a.getCenterY();a=new mxPoint(n,a);d&&(b.x<k||b.x>k+t?a.y=b.y:a.x=b.x);return mxUtils.getPerimeterPoint(f,a,b)};mxStyleRegistry.putValue("trapezoidPerimeter",mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(a,c,b,e){var d="0"!=mxUtils.getValue(c.style,"fixedSize","0"),g=d?v.prototype.fixedSize:v.prototype.size;null!=c&&(g=mxUtils.getValue(c.style, +"size",g));var k=a.x,f=a.y,t=a.width,n=a.height,q=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_EAST?(d=d?Math.max(0,Math.min(t,g)):t*Math.max(0,Math.min(1,g)),f=[new mxPoint(k,f),new mxPoint(k+t-d,f),new mxPoint(k+t,a),new mxPoint(k+t-d,f+n),new mxPoint(k,f+n),new mxPoint(k+d,a),new mxPoint(k,f)]):c==mxConstants.DIRECTION_WEST?(d=d?Math.max(0,Math.min(t,g)):t*Math.max(0, +Math.min(1,g)),f=[new mxPoint(k+d,f),new mxPoint(k+t,f),new mxPoint(k+t-d,a),new mxPoint(k+t,f+n),new mxPoint(k+d,f+n),new mxPoint(k,a),new mxPoint(k+d,f)]):c==mxConstants.DIRECTION_NORTH?(d=d?Math.max(0,Math.min(n,g)):n*Math.max(0,Math.min(1,g)),f=[new mxPoint(k,f+d),new mxPoint(q,f),new mxPoint(k+t,f+d),new mxPoint(k+t,f+n),new mxPoint(q,f+n-d),new mxPoint(k,f+n),new mxPoint(k,f+d)]):(d=d?Math.max(0,Math.min(n,g)):n*Math.max(0,Math.min(1,g)),f=[new mxPoint(k,f),new mxPoint(q,f+d),new mxPoint(k+ +t,f),new mxPoint(k+t,f+n-d),new mxPoint(q,f+n),new mxPoint(k,f+n-d),new mxPoint(k,f)]);q=new mxPoint(q,a);e&&(b.x<k||b.x>k+t?q.y=b.y:q.x=b.x);return mxUtils.getPerimeterPoint(f,q,b)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter);mxPerimeter.HexagonPerimeter2=function(a,c,b,e){var d=I.prototype.size;null!=c&&(d=mxUtils.getValue(c.style,"size",d));var g=a.x,k=a.y,f=a.width,t=a.height,n=a.getCenterX();a=a.getCenterY();c=null!=c?mxUtils.getValue(c.style,mxConstants.STYLE_DIRECTION, +mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;c==mxConstants.DIRECTION_NORTH||c==mxConstants.DIRECTION_SOUTH?(d=t*Math.max(0,Math.min(1,d)),k=[new mxPoint(n,k),new mxPoint(g+f,k+d),new mxPoint(g+f,k+t-d),new mxPoint(n,k+t),new mxPoint(g,k+t-d),new mxPoint(g,k+d),new mxPoint(n,k)]):(d=f*Math.max(0,Math.min(1,d)),k=[new mxPoint(g+d,k),new mxPoint(g+f-d,k),new mxPoint(g+f,a),new mxPoint(g+f-d,k+t),new mxPoint(g+d,k+t),new mxPoint(g,a),new mxPoint(g+d,k)]);n=new mxPoint(n,a);e&&(b.x<g||b.x>g+ +f?n.y=b.y:n.x=b.x);return mxUtils.getPerimeterPoint(k,n,b)};mxStyleRegistry.putValue("hexagonPerimeter2",mxPerimeter.HexagonPerimeter2);mxUtils.extend(N,mxShape);N.prototype.size=10;N.prototype.paintBackground=function(a,c,b,e,d){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size));a.translate(c,b);a.ellipse((e-g)/2,0,g,g);a.fillAndStroke();a.begin();a.moveTo(e/2,g);a.lineTo(e/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("lollipop",N);mxUtils.extend(U,mxShape);U.prototype.size= +10;U.prototype.inset=2;U.prototype.paintBackground=function(a,c,b,e,d){var g=parseFloat(mxUtils.getValue(this.style,"size",this.size)),k=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.begin();a.moveTo(e/2,g+k);a.lineTo(e/2,d);a.end();a.stroke();a.begin();a.moveTo((e-g)/2-k,g/2);a.quadTo((e-g)/2-k,g+k,e/2,g+k);a.quadTo((e+g)/2+k,g+k,(e+g)/2+k,g/2);a.end();a.stroke()};mxCellRenderer.registerShape("requires",U);mxUtils.extend(ba,mxShape);ba.prototype.paintBackground= +function(a,c,b,e,d){a.translate(c,b);a.begin();a.moveTo(0,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,0,d);a.end();a.stroke()};mxCellRenderer.registerShape("requiredInterface",ba);mxUtils.extend(V,mxShape);V.prototype.inset=2;V.prototype.paintBackground=function(a,c,b,e,d){var g=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;a.translate(c,b);a.ellipse(0,g,e-2*g,d-2*g);a.fillAndStroke();a.begin();a.moveTo(e/2,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,e/2,d);a.end();a.stroke()};mxCellRenderer.registerShape("providedRequiredInterface", +V);mxUtils.extend(H,mxCylinder);H.prototype.jettyWidth=32;H.prototype.jettyHeight=12;H.prototype.redrawPath=function(a,c,b,e,d,g){var k=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));c=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));b=k/2;var k=b+k/2,f=.3*d-c/2,t=.7*d-c/2;g?(a.moveTo(b,f),a.lineTo(k,f),a.lineTo(k,f+c),a.lineTo(b,f+c),a.moveTo(b,t),a.lineTo(k,t),a.lineTo(k,t+c),a.lineTo(b,t+c)):(a.moveTo(b,0),a.lineTo(e,0),a.lineTo(e,d),a.lineTo(b,d), +a.lineTo(b,t+c),a.lineTo(0,t+c),a.lineTo(0,t),a.lineTo(b,t),a.lineTo(b,f+c),a.lineTo(0,f+c),a.lineTo(0,f),a.lineTo(b,f),a.close());a.end()};mxCellRenderer.registerShape("component",H);mxUtils.extend(Y,mxRectangleShape);Y.prototype.paintForeground=function(a,c,b,e,d){var g=e/2,k=d/2,f=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;a.begin();this.addPoints(a,[new mxPoint(c+g,b),new mxPoint(c+e,b+k),new mxPoint(c+g,b+d),new mxPoint(c,b+k)],this.isRounded,f,!0);a.stroke(); +mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",Y);mxUtils.extend(fa,mxDoubleEllipse);fa.prototype.outerStroke=!0;fa.prototype.paintVertexShape=function(a,c,b,e,d){var g=Math.min(4,Math.min(e/5,d/5));0<e&&0<d&&(a.ellipse(c+g,b+g,e-2*g,d-2*g),a.fillAndStroke());a.setShadow(!1);this.outerStroke&&(a.ellipse(c,b,e,d),a.stroke())};mxCellRenderer.registerShape("endState",fa);mxUtils.extend(ja,fa);ja.prototype.outerStroke=!1;mxCellRenderer.registerShape("startState", ja);mxUtils.extend(O,mxArrowConnector);O.prototype.defaultWidth=4;O.prototype.isOpenEnded=function(){return!0};O.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};O.prototype.isArrowRounded=function(){return this.isRounded};mxCellRenderer.registerShape("link",O);mxUtils.extend(ga,mxArrowConnector);ga.prototype.defaultWidth=10;ga.prototype.defaultArrowWidth=20;ga.prototype.getStartArrowWidth=function(){return this.getEdgeWidth()+ mxUtils.getNumber(this.style,"startWidth",this.defaultArrowWidth)};ga.prototype.getEndArrowWidth=function(){return this.getEdgeWidth()+mxUtils.getNumber(this.style,"endWidth",this.defaultArrowWidth)};ga.prototype.getEdgeWidth=function(){return mxUtils.getNumber(this.style,"width",this.defaultWidth)+Math.max(0,this.strokewidth-1)};mxCellRenderer.registerShape("flexArrow",ga);mxUtils.extend(Z,mxActor);Z.prototype.size=30;Z.prototype.isRoundable=function(){return!0};Z.prototype.redrawPath=function(a, c,b,e,d){c=Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size)));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,d),new mxPoint(0,c),new mxPoint(e,0),new mxPoint(e,d)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("manualInput",Z);mxUtils.extend(T,mxRectangleShape);T.prototype.dx=20;T.prototype.dy=20;T.prototype.isHtmlAllowed=function(){return!1};T.prototype.paintForeground=function(a,c,b,e,d){mxRectangleShape.prototype.paintForeground.apply(this, -arguments);var k=0;if(this.isRounded)var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,k=Math.max(k,Math.min(e*g,d*g));g=Math.max(k,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));k=Math.max(k,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(c,b+k);a.lineTo(c+e,b+k);a.end();a.stroke();a.begin();a.moveTo(c+g,b);a.lineTo(c+g,b+d);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage", -T);mxUtils.extend(da,mxActor);da.prototype.dx=20;da.prototype.dy=20;da.prototype.redrawPath=function(a,c,b,e,d){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,b),new mxPoint(c, -b),new mxPoint(c,d),new mxPoint(0,d)],this.isRounded,k,!0);a.end()};mxCellRenderer.registerShape("corner",da);mxUtils.extend(ma,mxActor);ma.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,0);a.lineTo(0,d);a.end();a.moveTo(e,0);a.lineTo(e,d);a.end();a.moveTo(0,d/2);a.lineTo(e,d/2);a.end()};mxCellRenderer.registerShape("crossbar",ma);mxUtils.extend(W,mxActor);W.prototype.dx=20;W.prototype.dy=20;W.prototype.redrawPath=function(a,c,b,e,d){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style, -"dx",this.dx))));b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,b),new mxPoint((e+c)/2,b),new mxPoint((e+c)/2,d),new mxPoint((e-c)/2,d),new mxPoint((e-c)/2,b),new mxPoint(0,b)],this.isRounded,k,!0);a.end()};mxCellRenderer.registerShape("tee",W);mxUtils.extend(aa, -mxActor);aa.prototype.arrowWidth=.3;aa.prototype.arrowSize=.2;aa.prototype.redrawPath=function(a,c,b,e,d){var k=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));b=(d-k)/2;var k=b+k,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,b),new mxPoint(e-c,b),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e- -c,d),new mxPoint(e-c,k),new mxPoint(0,k)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("singleArrow",aa);mxUtils.extend(R,mxActor);R.prototype.redrawPath=function(a,c,b,e,d){var k=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",aa.prototype.arrowWidth))));c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",aa.prototype.arrowSize))));b=(d-k)/2;var k=b+k,g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ -2;this.addPoints(a,[new mxPoint(0,d/2),new mxPoint(c,0),new mxPoint(c,b),new mxPoint(e-c,b),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e-c,d),new mxPoint(e-c,k),new mxPoint(c,k),new mxPoint(c,d)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",R);mxUtils.extend(L,mxActor);L.prototype.size=.1;L.prototype.redrawPath=function(a,c,b,e,d){c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(c,0);a.lineTo(e,0);a.quadTo(e-2*c,d/2, +arguments);var g=0;if(this.isRounded)var k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100,g=Math.max(g,Math.min(e*k,d*k));k=Math.max(g,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));g=Math.max(g,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));a.begin();a.moveTo(c,b+g);a.lineTo(c+e,b+g);a.end();a.stroke();a.begin();a.moveTo(c+k,b);a.lineTo(c+k,b+d);a.end();a.stroke()};mxCellRenderer.registerShape("internalStorage", +T);mxUtils.extend(da,mxActor);da.prototype.dx=20;da.prototype.dy=20;da.prototype.redrawPath=function(a,c,b,e,d){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,b),new mxPoint(c, +b),new mxPoint(c,d),new mxPoint(0,d)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("corner",da);mxUtils.extend(ma,mxActor);ma.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,0);a.lineTo(0,d);a.end();a.moveTo(e,0);a.lineTo(e,d);a.end();a.moveTo(0,d/2);a.lineTo(e,d/2);a.end()};mxCellRenderer.registerShape("crossbar",ma);mxUtils.extend(W,mxActor);W.prototype.dx=20;W.prototype.dy=20;W.prototype.redrawPath=function(a,c,b,e,d){c=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style, +"dx",this.dx))));b=Math.max(0,Math.min(d,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));parseFloat(mxUtils.getValue(this.style,"size",this.size));var g=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,b),new mxPoint((e+c)/2,b),new mxPoint((e+c)/2,d),new mxPoint((e-c)/2,d),new mxPoint((e-c)/2,b),new mxPoint(0,b)],this.isRounded,g,!0);a.end()};mxCellRenderer.registerShape("tee",W);mxUtils.extend(aa, +mxActor);aa.prototype.arrowWidth=.3;aa.prototype.arrowSize=.2;aa.prototype.redrawPath=function(a,c,b,e,d){var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth))));c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize))));b=(d-g)/2;var g=b+g,k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,b),new mxPoint(e-c,b),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e- +c,d),new mxPoint(e-c,g),new mxPoint(0,g)],this.isRounded,k,!0);a.end()};mxCellRenderer.registerShape("singleArrow",aa);mxUtils.extend(R,mxActor);R.prototype.redrawPath=function(a,c,b,e,d){var g=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",aa.prototype.arrowWidth))));c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",aa.prototype.arrowSize))));b=(d-g)/2;var g=b+g,k=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ +2;this.addPoints(a,[new mxPoint(0,d/2),new mxPoint(c,0),new mxPoint(c,b),new mxPoint(e-c,b),new mxPoint(e-c,0),new mxPoint(e,d/2),new mxPoint(e-c,d),new mxPoint(e-c,g),new mxPoint(c,g),new mxPoint(c,d)],this.isRounded,k,!0);a.end()};mxCellRenderer.registerShape("doubleArrow",R);mxUtils.extend(L,mxActor);L.prototype.size=.1;L.prototype.redrawPath=function(a,c,b,e,d){c=e*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));a.moveTo(c,0);a.lineTo(e,0);a.quadTo(e-2*c,d/2, e,d);a.lineTo(c,d);a.quadTo(c-2*c,d/2,c,0);a.close();a.end()};mxCellRenderer.registerShape("dataStorage",L);mxUtils.extend(ka,mxActor);ka.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,0,d);a.close();a.end()};mxCellRenderer.registerShape("or",ka);mxUtils.extend(Q,mxActor);Q.prototype.redrawPath=function(a,c,b,e,d){a.moveTo(0,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,0,d);a.quadTo(e/2,d/2,0,0);a.close();a.end()};mxCellRenderer.registerShape("xor",Q);mxUtils.extend(S, mxActor);S.prototype.size=20;S.prototype.isRoundable=function(){return!0};S.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e/2,Math.min(d,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(c,0),new mxPoint(e-c,0),new mxPoint(e,.8*c),new mxPoint(e,d),new mxPoint(0,d),new mxPoint(0,.8*c)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("loopLimit",S);mxUtils.extend(ca, mxActor);ca.prototype.size=.375;ca.prototype.isRoundable=function(){return!0};ca.prototype.redrawPath=function(a,c,b,e,d){c=d*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));b=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(a,[new mxPoint(0,0),new mxPoint(e,0),new mxPoint(e,d-c),new mxPoint(e/2,d),new mxPoint(0,d-c)],this.isRounded,b,!0);a.end()};mxCellRenderer.registerShape("offPageConnector",ca);mxUtils.extend(ta, mxEllipse);ta.prototype.paintVertexShape=function(a,c,b,e,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.begin();a.moveTo(c+e/2,b+d);a.lineTo(c+e,b+d);a.end();a.stroke()};mxCellRenderer.registerShape("tapeData",ta);mxUtils.extend(K,mxEllipse);K.prototype.paintVertexShape=function(a,c,b,e,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(c,b+d/2);a.lineTo(c+e,b+d/2);a.end();a.stroke();a.begin();a.moveTo(c+e/2,b);a.lineTo(c+e/2,b+d);a.end(); a.stroke()};mxCellRenderer.registerShape("orEllipse",K);mxUtils.extend(la,mxEllipse);la.prototype.paintVertexShape=function(a,c,b,e,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(c+.145*e,b+.145*d);a.lineTo(c+.855*e,b+.855*d);a.end();a.stroke();a.begin();a.moveTo(c+.855*e,b+.145*d);a.lineTo(c+.145*e,b+.855*d);a.end();a.stroke()};mxCellRenderer.registerShape("sumEllipse",la);mxUtils.extend(ea,mxRhombus);ea.prototype.paintVertexShape=function(a,c,b, e,d){mxRhombus.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();a.moveTo(c,b+d/2);a.lineTo(c+e,b+d/2);a.end();a.stroke()};mxCellRenderer.registerShape("sortShape",ea);mxUtils.extend(ha,mxEllipse);ha.prototype.paintVertexShape=function(a,c,b,e,d){a.begin();a.moveTo(c,b);a.lineTo(c+e,b);a.lineTo(c+e/2,b+d/2);a.close();a.fillAndStroke();a.begin();a.moveTo(c,b+d);a.lineTo(c+e,b+d);a.lineTo(c+e/2,b+d/2);a.close();a.fillAndStroke()};mxCellRenderer.registerShape("collate",ha);mxUtils.extend(Aa, -mxEllipse);Aa.prototype.paintVertexShape=function(a,c,b,e,d){var k=b+d-5;a.begin();a.moveTo(c,b);a.lineTo(c,b+d);a.moveTo(c,k);a.lineTo(c+10,k-5);a.moveTo(c,k);a.lineTo(c+10,k+5);a.moveTo(c,k);a.lineTo(c+e,k);a.moveTo(c+e,b);a.lineTo(c+e,b+d);a.moveTo(c+e,k);a.lineTo(c+e-10,k-5);a.moveTo(c+e,k);a.lineTo(c+e-10,k+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",Aa);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=function(a,c,b,e,d){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this, +mxEllipse);Aa.prototype.paintVertexShape=function(a,c,b,e,d){var g=b+d-5;a.begin();a.moveTo(c,b);a.lineTo(c,b+d);a.moveTo(c,g);a.lineTo(c+10,g-5);a.moveTo(c,g);a.lineTo(c+10,g+5);a.moveTo(c,g);a.lineTo(c+e,g);a.moveTo(c+e,b);a.lineTo(c+e,b+d);a.moveTo(c+e,g);a.lineTo(c+e-10,g-5);a.moveTo(c+e,g);a.lineTo(c+e-10,g+5);a.end();a.stroke()};mxCellRenderer.registerShape("dimension",Aa);mxUtils.extend(Ba,mxEllipse);Ba.prototype.paintVertexShape=function(a,c,b,e,d){this.outline||a.setStrokeColor(null);mxRectangleShape.prototype.paintBackground.apply(this, arguments);null!=this.style&&(a.setStrokeColor(this.stroke),a.rect(c,b,e,d),a.fill(),a.begin(),a.moveTo(c,b),"1"==mxUtils.getValue(this.style,"top","1")?a.lineTo(c+e,b):a.moveTo(c+e,b),"1"==mxUtils.getValue(this.style,"right","1")?a.lineTo(c+e,b+d):a.moveTo(c+e,b+d),"1"==mxUtils.getValue(this.style,"bottom","1")?a.lineTo(c,b+d):a.moveTo(c,b+d),"1"==mxUtils.getValue(this.style,"left","1")&&a.lineTo(c,b-this.strokewidth/2),a.end(),a.stroke())};mxCellRenderer.registerShape("partialRectangle",Ba);mxUtils.extend(za, mxEllipse);za.prototype.paintVertexShape=function(a,c,b,e,d){mxEllipse.prototype.paintVertexShape.apply(this,arguments);a.setShadow(!1);a.begin();"vertical"==mxUtils.getValue(this.style,"line")?(a.moveTo(c+e/2,b),a.lineTo(c+e/2,b+d)):(a.moveTo(c,b+d/2),a.lineTo(c+e,b+d/2));a.end();a.stroke()};mxCellRenderer.registerShape("lineEllipse",za);mxUtils.extend(oa,mxActor);oa.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e,d/2);a.moveTo(0,0);a.lineTo(e-c,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,e-c,d);a.lineTo(0, -d);a.close();a.end()};mxCellRenderer.registerShape("delay",oa);mxUtils.extend(ia,mxActor);ia.prototype.size=.2;ia.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(d,e);var k=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=(d-k)/2;b=c+k;var g=(e-k)/2,k=g+k;a.moveTo(0,c);a.lineTo(g,c);a.lineTo(g,0);a.lineTo(k,0);a.lineTo(k,c);a.lineTo(e,c);a.lineTo(e,b);a.lineTo(k,b);a.lineTo(k,d);a.lineTo(g,d);a.lineTo(g,b);a.lineTo(0,b);a.close();a.end()};mxCellRenderer.registerShape("cross", +d);a.close();a.end()};mxCellRenderer.registerShape("delay",oa);mxUtils.extend(ia,mxActor);ia.prototype.size=.2;ia.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(d,e);var g=Math.max(0,Math.min(c,c*parseFloat(mxUtils.getValue(this.style,"size",this.size))));c=(d-g)/2;b=c+g;var k=(e-g)/2,g=k+g;a.moveTo(0,c);a.lineTo(k,c);a.lineTo(k,0);a.lineTo(g,0);a.lineTo(g,c);a.lineTo(e,c);a.lineTo(e,b);a.lineTo(g,b);a.lineTo(g,d);a.lineTo(k,d);a.lineTo(k,b);a.lineTo(0,b);a.close();a.end()};mxCellRenderer.registerShape("cross", ia);mxUtils.extend(sa,mxActor);sa.prototype.size=.25;sa.prototype.redrawPath=function(a,c,b,e,d){c=Math.min(e,d/2);b=Math.min(e-c,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*e);a.moveTo(0,d/2);a.lineTo(b,0);a.lineTo(e-c,0);a.quadTo(e,0,e,d/2);a.quadTo(e,d,e-c,d);a.lineTo(b,d);a.close();a.end()};mxCellRenderer.registerShape("display",sa);mxUtils.extend(pa,mxConnector);pa.prototype.origPaintEdgeShape=pa.prototype.paintEdgeShape;pa.prototype.paintEdgeShape=function(a,c,b){for(var e= -[],d=0;d<c.length;d++)e.push(mxUtils.clone(c[d]));var d=a.state.dashed,k=a.state.fixDash;pa.prototype.origPaintEdgeShape.apply(this,[a,e,b]);3<=a.state.strokeWidth&&(e=mxUtils.getValue(this.style,"fillColor",null),null!=e&&(a.setStrokeColor(e),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(d,k),pa.prototype.origPaintEdgeShape.apply(this,[a,c,b])))};mxCellRenderer.registerShape("filledEdge",pa);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors; -StyleFormatPanel.prototype.getCustomColors=function(){var c=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==c.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,c,b,e,d,k,g,f,n,v){var q=d*(g+n+1),t=k*(g+n+1);return function(){a.begin();a.moveTo(e.x-q/2-t/2,e.y-t/2+q/2);a.lineTo(e.x+t/2-3*q/2,e.y-3*t/2-q/2);a.stroke()}});mxMarker.addMarker("cross",function(a,c,b,e,d,k,g,f,n, -v){var q=d*(g+n+1),t=k*(g+n+1);return function(){a.begin();a.moveTo(e.x-q/2-t/2,e.y-t/2+q/2);a.lineTo(e.x+t/2-3*q/2,e.y-3*t/2-q/2);a.moveTo(e.x-q/2+t/2,e.y-t/2-q/2);a.lineTo(e.x-t/2-3*q/2,e.y-3*t/2+q/2);a.stroke()}});mxMarker.addMarker("circle",ua);mxMarker.addMarker("circlePlus",function(a,c,b,e,d,k,g,f,n,v){var q=e.clone(),t=ua.apply(this,arguments),x=d*(g+2*n),l=k*(g+2*n);return function(){t.apply(this,arguments);a.begin();a.moveTo(q.x-d*n,q.y-k*n);a.lineTo(q.x-2*x+d*n,q.y-2*l+k*n);a.moveTo(q.x- -x-l+k*n,q.y-l+x-d*n);a.lineTo(q.x+l-x-k*n,q.y-l-x+d*n);a.stroke()}});mxMarker.addMarker("halfCircle",function(a,c,b,e,d,k,g,f,n,v){var q=d*(g+n+1),t=k*(g+n+1),x=e.clone();e.x-=q;e.y-=t;return function(){a.begin();a.moveTo(x.x-t,x.y+q);a.quadTo(e.x-t,e.y+q,e.x,e.y);a.quadTo(e.x+t,e.y-q,x.x+t,x.y-q);a.stroke()}});mxMarker.addMarker("async",function(a,c,b,e,d,k,g,f,n,v){c=d*n*1.118;b=k*n*1.118;d*=g+n;k*=g+n;var q=e.clone();q.x-=c;q.y-=b;e.x+=1*-d-c;e.y+=1*-k-b;return function(){a.begin();a.moveTo(q.x, -q.y);f?a.lineTo(q.x-d-k/2,q.y-k+d/2):a.lineTo(q.x+k/2-d,q.y-k-d/2);a.lineTo(q.x-d,q.y-k);a.close();v?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(c,b,e,d,k,g,f,n,v,q){k*=f+v;g*=f+v;var t=d.clone();return function(){c.begin();c.moveTo(t.x,t.y);n?c.lineTo(t.x-k-g/a,t.y-g+k/a):c.lineTo(t.x+g/a-k,t.y-g-k/a);c.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ia=function(a,c,b){return Ea(a,["width"],c,function(c,e,d,k,g){g=a.shape.getEdgeWidth()* -a.view.scale+b;return new mxPoint(k.x+e*c/4+d*g/2,k.y+d*c/4-e*g/2)},function(c,e,d,k,g,f){c=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,g.x,g.y,f.x,f.y));a.style.width=Math.round(2*c)/a.view.scale-b})},Ea=function(a,c,b,e,d){return X(a,c,function(c){var d=a.absolutePoints,k=d.length-1;c=a.view.translate;var g=a.view.scale,f=b?d[0]:d[k],d=b?d[1]:d[k-1],k=d.x-f.x,n=d.y-f.y,v=Math.sqrt(k*k+n*n),f=e.call(this,v,k/v,n/v,f,d);return new mxPoint(f.x/g-c.x,f.y/g-c.y)},function(c,e,k){var g=a.absolutePoints,f=g.length- -1;c=a.view.translate;var n=a.view.scale,v=b?g[0]:g[f],g=b?g[1]:g[f-1],f=g.x-v.x,q=g.y-v.y,t=Math.sqrt(f*f+q*q);e.x=(e.x+c.x)*n;e.y=(e.y+c.y)*n;d.call(this,t,f/t,q/t,v,g,e,k)})},va=function(a){return function(c){return[X(c,["arrowWidth","arrowSize"],function(c){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",aa.prototype.arrowWidth))),e=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",aa.prototype.arrowSize)));return new mxPoint(c.x+(1-e)*c.width,c.y+(1- +[],d=0;d<c.length;d++)e.push(mxUtils.clone(c[d]));var d=a.state.dashed,g=a.state.fixDash;pa.prototype.origPaintEdgeShape.apply(this,[a,e,b]);3<=a.state.strokeWidth&&(e=mxUtils.getValue(this.style,"fillColor",null),null!=e&&(a.setStrokeColor(e),a.setStrokeWidth(a.state.strokeWidth-2),a.setDashed(d,g),pa.prototype.origPaintEdgeShape.apply(this,[a,c,b])))};mxCellRenderer.registerShape("filledEdge",pa);"undefined"!==typeof StyleFormatPanel&&function(){var a=StyleFormatPanel.prototype.getCustomColors; +StyleFormatPanel.prototype.getCustomColors=function(){var c=this.format.getSelectionState(),b=a.apply(this,arguments);"umlFrame"==c.style.shape&&b.push({title:mxResources.get("laneColor"),key:"swimlaneFillColor",defaultValue:"#ffffff"});return b}}();mxMarker.addMarker("dash",function(a,c,b,e,d,g,k,f,t,n){var q=d*(k+t+1),v=g*(k+t+1);return function(){a.begin();a.moveTo(e.x-q/2-v/2,e.y-v/2+q/2);a.lineTo(e.x+v/2-3*q/2,e.y-3*v/2-q/2);a.stroke()}});mxMarker.addMarker("cross",function(a,c,b,e,d,g,k,f,t, +n){var q=d*(k+t+1),v=g*(k+t+1);return function(){a.begin();a.moveTo(e.x-q/2-v/2,e.y-v/2+q/2);a.lineTo(e.x+v/2-3*q/2,e.y-3*v/2-q/2);a.moveTo(e.x-q/2+v/2,e.y-v/2-q/2);a.lineTo(e.x-v/2-3*q/2,e.y-3*v/2+q/2);a.stroke()}});mxMarker.addMarker("circle",ua);mxMarker.addMarker("circlePlus",function(a,c,b,e,d,g,k,f,t,n){var q=e.clone(),v=ua.apply(this,arguments),x=d*(k+2*t),l=g*(k+2*t);return function(){v.apply(this,arguments);a.begin();a.moveTo(q.x-d*t,q.y-g*t);a.lineTo(q.x-2*x+d*t,q.y-2*l+g*t);a.moveTo(q.x- +x-l+g*t,q.y-l+x-d*t);a.lineTo(q.x+l-x-g*t,q.y-l-x+d*t);a.stroke()}});mxMarker.addMarker("halfCircle",function(a,c,b,e,d,g,k,f,t,n){var q=d*(k+t+1),v=g*(k+t+1),x=e.clone();e.x-=q;e.y-=v;return function(){a.begin();a.moveTo(x.x-v,x.y+q);a.quadTo(e.x-v,e.y+q,e.x,e.y);a.quadTo(e.x+v,e.y-q,x.x+v,x.y-q);a.stroke()}});mxMarker.addMarker("async",function(a,c,b,e,d,g,k,f,t,n){c=d*t*1.118;b=g*t*1.118;d*=k+t;g*=k+t;var q=e.clone();q.x-=c;q.y-=b;e.x+=1*-d-c;e.y+=1*-g-b;return function(){a.begin();a.moveTo(q.x, +q.y);f?a.lineTo(q.x-d-g/2,q.y-g+d/2):a.lineTo(q.x+g/2-d,q.y-g-d/2);a.lineTo(q.x-d,q.y-g);a.close();n?a.fillAndStroke():a.stroke()}});mxMarker.addMarker("openAsync",function(a){a=null!=a?a:2;return function(c,b,e,d,g,k,f,t,n,q){g*=f+n;k*=f+n;var v=d.clone();return function(){c.begin();c.moveTo(v.x,v.y);t?c.lineTo(v.x-g-k/a,v.y-k+g/a):c.lineTo(v.x+k/a-g,v.y-k-g/a);c.stroke()}}}(2));if("undefined"!==typeof mxVertexHandler){var Ia=function(a,c,b){return Ea(a,["width"],c,function(c,e,d,g,k){k=a.shape.getEdgeWidth()* +a.view.scale+b;return new mxPoint(g.x+e*c/4+d*k/2,g.y+d*c/4-e*k/2)},function(c,e,d,g,k,f){c=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,k.x,k.y,f.x,f.y));a.style.width=Math.round(2*c)/a.view.scale-b})},Ea=function(a,c,b,e,d){return X(a,c,function(c){var d=a.absolutePoints,g=d.length-1;c=a.view.translate;var k=a.view.scale,f=b?d[0]:d[g],d=b?d[1]:d[g-1],g=d.x-f.x,t=d.y-f.y,n=Math.sqrt(g*g+t*t),f=e.call(this,n,g/n,t/n,f,d);return new mxPoint(f.x/k-c.x,f.y/k-c.y)},function(c,e,g){var k=a.absolutePoints,f=k.length- +1;c=a.view.translate;var t=a.view.scale,n=b?k[0]:k[f],k=b?k[1]:k[f-1],f=k.x-n.x,q=k.y-n.y,v=Math.sqrt(f*f+q*q);e.x=(e.x+c.x)*t;e.y=(e.y+c.y)*t;d.call(this,v,f/v,q/v,n,k,e,g)})},va=function(a){return function(c){return[X(c,["arrowWidth","arrowSize"],function(c){var b=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"arrowWidth",aa.prototype.arrowWidth))),e=Math.max(0,Math.min(a,mxUtils.getValue(this.state.style,"arrowSize",aa.prototype.arrowSize)));return new mxPoint(c.x+(1-e)*c.width,c.y+(1- b)*c.height/2)},function(c,b){this.state.style.arrowWidth=Math.max(0,Math.min(1,Math.abs(c.y+c.height/2-b.y)/c.height*2));this.state.style.arrowSize=Math.max(0,Math.min(a,(c.x+c.width-b.x)/c.width))})]}},Na=function(a,c,b){return function(e){var d=[X(e,["size"],function(b){var e=Math.max(0,Math.min(b.width,Math.min(b.height,parseFloat(mxUtils.getValue(this.state.style,"size",c)))))*a;return new mxPoint(b.x+e,b.y+e)},function(c,b){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(c.width, -b.x-c.x),Math.min(c.height,b.y-c.y)))/a)})];b&&mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(ra(e));return d}},Ja=function(a,c,b,e,d){b=null!=b?b:1;return function(k){var g=[X(k,["size"],function(c){var b=null!=d?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,e=parseFloat(mxUtils.getValue(this.state.style,"size",b?d:a));return new mxPoint(c.x+Math.max(0,Math.min(c.width,e*(b?1:c.width))),c.getCenterY())},function(a,c,e){var g=null!=d?"0"!=mxUtils.getValue(this.state.style, -"fixedSize","0"):null;a=g?c.x-a.x:Math.max(0,Math.min(b,(c.x-a.x)/a.width));g&&!mxEvent.isAltDown(e.getEvent())&&(a=k.view.graph.snap(a));this.state.style.size=a},null,e)];c&&mxUtils.getValue(k.style,mxConstants.STYLE_ROUNDED,!1)&&g.push(ra(k));return g}},Oa=function(a){return function(c){var b=[X(c,["size"],function(c){var b=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",e.prototype.size))));return new mxPoint(c.x+b*c.width*.75,c.y+c.height/4)},function(c,b){this.state.style.size= +b.x-c.x),Math.min(c.height,b.y-c.y)))/a)})];b&&mxUtils.getValue(e.style,mxConstants.STYLE_ROUNDED,!1)&&d.push(ra(e));return d}},Ja=function(a,c,b,e,d){b=null!=b?b:1;return function(g){var k=[X(g,["size"],function(c){var b=null!=d?"0"!=mxUtils.getValue(this.state.style,"fixedSize","0"):null,e=parseFloat(mxUtils.getValue(this.state.style,"size",b?d:a));return new mxPoint(c.x+Math.max(0,Math.min(c.width,e*(b?1:c.width))),c.getCenterY())},function(a,c,e){var k=null!=d?"0"!=mxUtils.getValue(this.state.style, +"fixedSize","0"):null;a=k?c.x-a.x:Math.max(0,Math.min(b,(c.x-a.x)/a.width));k&&!mxEvent.isAltDown(e.getEvent())&&(a=g.view.graph.snap(a));this.state.style.size=a},null,e)];c&&mxUtils.getValue(g.style,mxConstants.STYLE_ROUNDED,!1)&&k.push(ra(g));return k}},Oa=function(a){return function(c){var b=[X(c,["size"],function(c){var b=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.state.style,"size",e.prototype.size))));return new mxPoint(c.x+b*c.width*.75,c.y+c.height/4)},function(c,b){this.state.style.size= Math.max(0,Math.min(a,(b.x-c.x)/(.75*c.width)))},null,!0)];mxUtils.getValue(c.style,mxConstants.STYLE_ROUNDED,!1)&&b.push(ra(c));return b}},Fa=function(){return function(a){var c=[];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ra(a));return c}},ra=function(a,c){return X(a,[mxConstants.STYLE_ARCSIZE],function(b){var e=null!=c?c:b.height/8;if("1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)){var d=mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/ 2;return new mxPoint(b.x+b.width-Math.min(b.width/2,d),b.y+e)}d=Math.max(0,parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)))/100;return new mxPoint(b.x+b.width-Math.min(Math.max(b.width/2,b.height/2),Math.min(b.width,b.height)*d),b.y+e)},function(c,b,e){"1"==mxUtils.getValue(a.style,mxConstants.STYLE_ABSOLUTE_ARCSIZE,0)?this.state.style[mxConstants.STYLE_ARCSIZE]=Math.round(Math.max(0,Math.min(c.width,2*(c.x+c.width-b.x)))):this.state.style[mxConstants.STYLE_ARCSIZE]= -Math.round(Math.min(50,Math.max(0,100*(c.width-b.x+c.x)/Math.min(c.width,c.height))))})},X=function(a,c,b,e,d,k){var g=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);g.execute=function(){for(var a=0;a<c.length;a++)this.copyStyle(c[a])};g.getPosition=b;g.setPosition=e;g.ignoreGrid=null!=d?d:!0;if(k){var f=g.positionChanged;g.positionChanged=function(){f.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return g},Ga={link:function(a){return[Ia(a,!0,10), -Ia(a,!1,10)]},flexArrow:function(a){var c=a.view.graph.gridSize/a.view.scale,b=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(Ea(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,e,d,k){c=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;k=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(k+a.shape.strokewidth*a.view.scale)+e*c/2,d.y+ -e*(k+a.shape.strokewidth*a.view.scale)-b*c/2)},function(b,e,d,k,g,f,n){b=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,g.x,g.y,f.x,f.y));e=mxUtils.ptLineDist(k.x,k.y,k.x+d,k.y-e,f.x,f.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(n.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])- -parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<c/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),b.push(Ea(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,e,d,k){c=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;k=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(k+a.shape.strokewidth*a.view.scale)+e*c/2,d.y+e*(k+a.shape.strokewidth* -a.view.scale)-b*c/2)},function(b,e,d,k,g,f,n){b=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,g.x,g.y,f.x,f.y));e=mxUtils.ptLineDist(k.x,k.y,k.x+d,k.y-e,f.x,f.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(n.getEvent())|| -(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<c/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<c&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(Ea(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(c,b,e,d,k){c=(a.shape.getEdgeWidth()- -a.shape.strokewidth)*a.view.scale;k=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(k+a.shape.strokewidth*a.view.scale)-e*c/2,d.y+e*(k+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,e,d,k,g,f,n){b=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,g.x,g.y,f.x,f.y));e=mxUtils.ptLineDist(k.x,k.y,k.x+d,k.y-e,f.x,f.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2* -b)/a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(n.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),b.push(Ea(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(c,b,e,d,k){c=(a.shape.getEndArrowWidth()-a.shape.strokewidth)* -a.view.scale;k=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(k+a.shape.strokewidth*a.view.scale)-e*c/2,d.y+e*(k+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,e,d,k,g,f,n){b=Math.sqrt(mxUtils.ptSegDistSq(k.x,k.y,g.x,g.y,f.x,f.y));e=mxUtils.ptLineDist(k.x,k.y,k.x+d,k.y-e,f.x,f.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/ -a.view.scale;mxEvent.isControlDown(n.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(n.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<c&&(a.style.endWidth=a.style.startWidth))})));return b}, +Math.round(Math.min(50,Math.max(0,100*(c.width-b.x+c.x)/Math.min(c.width,c.height))))})},X=function(a,c,b,e,d,g){var k=new mxHandle(a,null,mxVertexHandler.prototype.secondaryHandleImage);k.execute=function(){for(var a=0;a<c.length;a++)this.copyStyle(c[a])};k.getPosition=b;k.setPosition=e;k.ignoreGrid=null!=d?d:!0;if(g){var f=k.positionChanged;k.positionChanged=function(){f.apply(this,arguments);a.view.invalidate(this.state.cell);a.view.validate()}}return k},Ga={link:function(a){return[Ia(a,!0,10), +Ia(a,!1,10)]},flexArrow:function(a){var c=a.view.graph.gridSize/a.view.scale,b=[];mxUtils.getValue(a.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(Ea(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,e,d,g){c=(a.shape.getEdgeWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(g+a.shape.strokewidth*a.view.scale)+e*c/2,d.y+ +e*(g+a.shape.strokewidth*a.view.scale)-b*c/2)},function(b,e,d,g,k,f,t){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,k.x,k.y,f.x,f.y));e=mxUtils.ptLineDist(g.x,g.y,g.x+d,g.y-e,f.x,f.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2*b)/a.view.scale;mxEvent.isControlDown(t.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]);mxEvent.isAltDown(t.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])- +parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<c/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE])})),b.push(Ea(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!0,function(c,b,e,d,g){c=(a.shape.getStartArrowWidth()-a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(g+a.shape.strokewidth*a.view.scale)+e*c/2,d.y+e*(g+a.shape.strokewidth* +a.view.scale)-b*c/2)},function(b,e,d,g,k,f,t){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,k.x,k.y,f.x,f.y));e=mxUtils.ptLineDist(g.x,g.y,g.x+d,g.y-e,f.x,f.y);a.style[mxConstants.STYLE_STARTSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.startWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/a.view.scale;mxEvent.isControlDown(t.getEvent())&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE],a.style.endWidth=a.style.startWidth);mxEvent.isAltDown(t.getEvent())|| +(Math.abs(parseFloat(a.style[mxConstants.STYLE_STARTSIZE])-parseFloat(a.style[mxConstants.STYLE_ENDSIZE]))<c/6&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]),Math.abs(parseFloat(a.style.startWidth)-parseFloat(a.style.endWidth))<c&&(a.style.startWidth=a.style.endWidth))})));mxUtils.getValue(a.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(b.push(Ea(a,["width",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(c,b,e,d,g){c=(a.shape.getEdgeWidth()- +a.shape.strokewidth)*a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(g+a.shape.strokewidth*a.view.scale)-e*c/2,d.y+e*(g+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,e,d,g,k,f,t){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,k.x,k.y,f.x,f.y));e=mxUtils.ptLineDist(g.x,g.y,g.x+d,g.y-e,f.x,f.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.width=Math.round(2* +b)/a.view.scale;mxEvent.isControlDown(t.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE]);mxEvent.isAltDown(t.getEvent())||Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE])})),b.push(Ea(a,["startWidth","endWidth",mxConstants.STYLE_STARTSIZE,mxConstants.STYLE_ENDSIZE],!1,function(c,b,e,d,g){c=(a.shape.getEndArrowWidth()-a.shape.strokewidth)* +a.view.scale;g=3*mxUtils.getNumber(a.style,mxConstants.STYLE_ENDSIZE,mxConstants.ARROW_SIZE/5)*a.view.scale;return new mxPoint(d.x+b*(g+a.shape.strokewidth*a.view.scale)-e*c/2,d.y+e*(g+a.shape.strokewidth*a.view.scale)+b*c/2)},function(b,e,d,g,k,f,t){b=Math.sqrt(mxUtils.ptSegDistSq(g.x,g.y,k.x,k.y,f.x,f.y));e=mxUtils.ptLineDist(g.x,g.y,g.x+d,g.y-e,f.x,f.y);a.style[mxConstants.STYLE_ENDSIZE]=Math.round(100*(e-a.shape.strokewidth)/3)/100/a.view.scale;a.style.endWidth=Math.max(0,Math.round(2*b)-a.shape.getEdgeWidth())/ +a.view.scale;mxEvent.isControlDown(t.getEvent())&&(a.style[mxConstants.STYLE_STARTSIZE]=a.style[mxConstants.STYLE_ENDSIZE],a.style.startWidth=a.style.endWidth);mxEvent.isAltDown(t.getEvent())||(Math.abs(parseFloat(a.style[mxConstants.STYLE_ENDSIZE])-parseFloat(a.style[mxConstants.STYLE_STARTSIZE]))<c/6&&(a.style[mxConstants.STYLE_ENDSIZE]=a.style[mxConstants.STYLE_STARTSIZE]),Math.abs(parseFloat(a.style.endWidth)-parseFloat(a.style.startWidth))<c&&(a.style.endWidth=a.style.startWidth))})));return b}, swimlane:function(a){var c=[X(a,[mxConstants.STYLE_STARTSIZE],function(c){var b=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));return 1==mxUtils.getValue(a.style,mxConstants.STYLE_HORIZONTAL,1)?new mxPoint(c.getCenterX(),c.y+Math.max(0,Math.min(c.height,b))):new mxPoint(c.x+Math.max(0,Math.min(c.width,b)),c.getCenterY())},function(c,b){a.style[mxConstants.STYLE_STARTSIZE]=1==mxUtils.getValue(this.state.style,mxConstants.STYLE_HORIZONTAL,1)?Math.round(Math.max(0, -Math.min(c.height,b.y-c.y))):Math.round(Math.max(0,Math.min(c.width,b.x-c.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var b=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));c.push(ra(a,b/2))}return c},label:Fa(),ext:Fa(),rectangle:Fa(),triangle:Fa(),rhombus:Fa(),umlLifeline:function(a){return[X(a,["size"],function(a){var c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",D.prototype.size))));return new mxPoint(a.getCenterX(), -a.y+c)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))},!1)]},umlFrame:function(a){return[X(a,["width","height"],function(a){var c=Math.max(E.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",E.prototype.width))),b=Math.max(1.5*E.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",E.prototype.height)));return new mxPoint(a.x+c,a.y+b)},function(a,c){this.state.style.width=Math.round(Math.max(E.prototype.corner, -Math.min(a.width,c.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*E.prototype.corner,Math.min(a.height,c.y-a.y)))},!1)]},process:function(a){var c=[X(a,["size"],function(a){var c=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size))));return new mxPoint(a.x+a.width*c,a.y+a.height/4)},function(a,c){this.state.style.size=Math.max(0,Math.min(.5,(c.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ra(a));return c},cross:function(a){return[X(a, +Math.min(c.height,b.y-c.y))):Math.round(Math.max(0,Math.min(c.width,b.x-c.x)))})];if(mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED)){var b=parseFloat(mxUtils.getValue(a.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE));c.push(ra(a,b/2))}return c},label:Fa(),ext:Fa(),rectangle:Fa(),triangle:Fa(),rhombus:Fa(),umlLifeline:function(a){return[X(a,["size"],function(a){var c=Math.max(0,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style,"size",E.prototype.size))));return new mxPoint(a.getCenterX(), +a.y+c)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))},!1)]},umlFrame:function(a){return[X(a,["width","height"],function(a){var c=Math.max(D.prototype.corner,Math.min(a.width,mxUtils.getValue(this.state.style,"width",D.prototype.width))),b=Math.max(1.5*D.prototype.corner,Math.min(a.height,mxUtils.getValue(this.state.style,"height",D.prototype.height)));return new mxPoint(a.x+c,a.y+b)},function(a,c){this.state.style.width=Math.round(Math.max(D.prototype.corner, +Math.min(a.width,c.x-a.x)));this.state.style.height=Math.round(Math.max(1.5*D.prototype.corner,Math.min(a.height,c.y-a.y)))},!1)]},process:function(a){var c=[X(a,["size"],function(a){var c=Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.state.style,"size",g.prototype.size))));return new mxPoint(a.x+a.width*c,a.y+a.height/4)},function(a,c){this.state.style.size=Math.max(0,Math.min(.5,(c.x-a.x)/a.width))})];mxUtils.getValue(a.style,mxConstants.STYLE_ROUNDED,!1)&&c.push(ra(a));return c},cross:function(a){return[X(a, ["size"],function(a){var c=Math.min(a.width,a.height),c=Math.max(0,Math.min(1,mxUtils.getValue(this.state.style,"size",ia.prototype.size)))*c/2;return new mxPoint(a.getCenterX()-c,a.getCenterY()-c)},function(a,c){var b=Math.min(a.width,a.height);this.state.style.size=Math.max(0,Math.min(1,Math.min(Math.max(0,a.getCenterY()-c.y)/b*2,Math.max(0,a.getCenterX()-c.x)/b*2)))})]},note:function(a){return[X(a,["size"],function(a){var c=Math.max(0,Math.min(a.width,Math.min(a.height,parseFloat(mxUtils.getValue(this.state.style, "size",l.prototype.size)))));return new mxPoint(a.x+a.width-c,a.y+c)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(Math.min(a.width,a.x+a.width-c.x),Math.min(a.height,c.y-a.y))))})]},manualInput:function(a){var c=[X(a,["size"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",Z.prototype.size)));return new mxPoint(a.x+a.width/4,a.y+3*c/4)},function(a,c){this.state.style.size=Math.round(Math.max(0,Math.min(a.height,4*(c.y-a.y)/3)))})];mxUtils.getValue(a.style, mxConstants.STYLE_ROUNDED,!1)&&c.push(ra(a));return c},dataStorage:function(a){return[X(a,["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",L.prototype.size))));return new mxPoint(a.x+(1-c)*a.width,a.getCenterY())},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.x+a.width-c.x)/a.width))})]},callout:function(a){var c=[X(a,["size","position"],function(a){var c=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"size",x.prototype.size))), @@ -2642,12 +2642,12 @@ mxUtils.getValue(this.state.style,"position2",x.prototype.position2)));return ne "dx",da.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style,"dy",da.prototype.dy)));return new mxPoint(a.x+c,a.y+b)},function(a,c){this.state.style.dx=Math.round(Math.max(0,Math.min(a.width,c.x-a.x)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})]},tee:function(a){return[X(a,["dx","dy"],function(a){var c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"dx",W.prototype.dx))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style, "dy",W.prototype.dy)));return new mxPoint(a.x+(a.width+c)/2,a.y+b)},function(a,c){this.state.style.dx=Math.round(Math.max(0,2*Math.min(a.width/2,c.x-a.x-a.width/2)));this.state.style.dy=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})]},singleArrow:va(1),doubleArrow:va(.5),folder:function(a){return[X(a,["tabWidth","tabHeight"],function(a){var c=Math.max(0,Math.min(a.width,mxUtils.getValue(this.state.style,"tabWidth",p.prototype.tabWidth))),b=Math.max(0,Math.min(a.height,mxUtils.getValue(this.state.style, "tabHeight",p.prototype.tabHeight)));mxUtils.getValue(this.state.style,"tabPosition",p.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(c=a.width-c);return new mxPoint(a.x+c,a.y+b)},function(a,c){var b=Math.max(0,Math.min(a.width,c.x-a.x));mxUtils.getValue(this.state.style,"tabPosition",p.prototype.tabPosition)==mxConstants.ALIGN_RIGHT&&(b=a.width-b);this.state.style.tabWidth=Math.round(b);this.state.style.tabHeight=Math.round(Math.max(0,Math.min(a.height,c.y-a.y)))})]},document:function(a){return[X(a, -["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",B.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-c)*a.height)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-c.y)/a.height))})]},tape:function(a){return[X(a,["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",z.prototype.size))));return new mxPoint(a.getCenterX(),a.y+c*a.height/2)},function(a,c){this.state.style.size= -Math.max(0,Math.min(1,(c.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[X(a,["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ca.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-c)*a.height)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-c.y)/a.height))})]},step:Ja(t.prototype.size,!0,null,!0,t.prototype.fixedSize),hexagon:Ja(H.prototype.size,!0,.5,!0),curlyBracket:Ja(k.prototype.size,!1),display:Ja(sa.prototype.size, +["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",B.prototype.size))));return new mxPoint(a.x+3*a.width/4,a.y+(1-c)*a.height)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-c.y)/a.height))})]},tape:function(a){return[X(a,["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",A.prototype.size))));return new mxPoint(a.getCenterX(),a.y+c*a.height/2)},function(a,c){this.state.style.size= +Math.max(0,Math.min(1,(c.y-a.y)/a.height*2))})]},offPageConnector:function(a){return[X(a,["size"],function(a){var c=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"size",ca.prototype.size))));return new mxPoint(a.getCenterX(),a.y+(1-c)*a.height)},function(a,c){this.state.style.size=Math.max(0,Math.min(1,(a.y+a.height-c.y)/a.height))})]},step:Ja(v.prototype.size,!0,null,!0,v.prototype.fixedSize),hexagon:Ja(I.prototype.size,!0,.5,!0),curlyBracket:Ja(k.prototype.size,!1),display:Ja(sa.prototype.size, !1),cube:Na(1,a.prototype.size,!1),card:Na(.5,u.prototype.size,!0),loopLimit:Na(.5,S.prototype.size,!0),trapezoid:Oa(.5),parallelogram:Oa(1)};Graph.createHandle=X;Graph.handleFactory=Ga;mxVertexHandler.prototype.createCustomHandles=function(){if(this.graph.isCellRotatable(this.state.cell)){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_RECTANGLE);a=Ga[a];null==a&&null!=this.state.shape&&this.state.shape.isRoundable()&& (a=Ga[mxConstants.SHAPE_RECTANGLE]);if(null!=a)return a(this.state)}return null};mxEdgeHandler.prototype.createCustomHandles=function(){var a=this.state.style.shape;null==mxCellRenderer.defaultShapes[a]&&null==mxStencilRegistry.getStencil(a)&&(a=mxConstants.SHAPE_CONNECTOR);a=Ga[a];return null!=a?a(this.state):null}}else Graph.createHandle=function(){},Graph.handleFactory={};var Ka=new mxPoint(1,0),La=new mxPoint(1,0),va=mxUtils.toRadians(-30),Ka=mxUtils.getRotatedPoint(Ka,Math.cos(va),Math.sin(va)), -va=mxUtils.toRadians(-150),La=mxUtils.getRotatedPoint(La,Math.cos(va),Math.sin(va));mxEdgeStyle.IsometricConnector=function(a,c,b,e,d){var k=a.view;e=null!=e&&0<e.length?e[0]:null;var g=a.absolutePoints,f=g[0],g=g[g.length-1];null!=e&&(e=k.transformControlPoint(a,e));null==f&&null!=c&&(f=new mxPoint(c.getCenterX(),c.getCenterY()));null==g&&null!=b&&(g=new mxPoint(b.getCenterX(),b.getCenterY()));var n=Ka.x,v=Ka.y,q=La.x,t=La.y,x="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!= -g&&null!=f){a=function(a,c,b){a-=l.x;var e=c-l.y;c=(t*a-q*e)/(n*t-v*q);a=(v*a-n*e)/(v*q-n*t);x?(b&&(l=new mxPoint(l.x+n*c,l.y+v*c),d.push(l)),l=new mxPoint(l.x+q*a,l.y+t*a)):(b&&(l=new mxPoint(l.x+q*a,l.y+t*a),d.push(l)),l=new mxPoint(l.x+n*c,l.y+v*c));d.push(l)};var l=f;null==e&&(e=new mxPoint(f.x+(g.x-f.x)/2,f.y+(g.y-f.y)/2));a(e.x,e.y,!0);a(g.x,g.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Pa=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler= +va=mxUtils.toRadians(-150),La=mxUtils.getRotatedPoint(La,Math.cos(va),Math.sin(va));mxEdgeStyle.IsometricConnector=function(a,c,b,e,d){var g=a.view;e=null!=e&&0<e.length?e[0]:null;var k=a.absolutePoints,f=k[0],k=k[k.length-1];null!=e&&(e=g.transformControlPoint(a,e));null==f&&null!=c&&(f=new mxPoint(c.getCenterX(),c.getCenterY()));null==k&&null!=b&&(k=new mxPoint(b.getCenterX(),b.getCenterY()));var t=Ka.x,n=Ka.y,q=La.x,v=La.y,x="horizontal"==mxUtils.getValue(a.style,"elbow","horizontal");if(null!= +k&&null!=f){a=function(a,c,b){a-=l.x;var e=c-l.y;c=(v*a-q*e)/(t*v-n*q);a=(n*a-t*e)/(n*q-t*v);x?(b&&(l=new mxPoint(l.x+t*c,l.y+n*c),d.push(l)),l=new mxPoint(l.x+q*a,l.y+v*a)):(b&&(l=new mxPoint(l.x+q*a,l.y+v*a),d.push(l)),l=new mxPoint(l.x+t*c,l.y+n*c));d.push(l)};var l=f;null==e&&(e=new mxPoint(f.x+(k.x-f.x)/2,f.y+(k.y-f.y)/2));a(e.x,e.y,!0);a(k.x,k.y,!1)}};mxStyleRegistry.putValue("isometricEdgeStyle",mxEdgeStyle.IsometricConnector);var Pa=Graph.prototype.createEdgeHandler;Graph.prototype.createEdgeHandler= function(a,c){if(c==mxEdgeStyle.IsometricConnector){var b=new mxElbowEdgeHandler(a);b.snapToTerminals=!1;return b}return Pa.apply(this,arguments)};b.prototype.constraints=[];f.prototype.getConstraints=function(a,c,b){a=[];var e=Math.tan(mxUtils.toRadians(30)),d=(.5-e)/2,e=Math.min(c,b/(.5+e));c=(c-e)/2;b=(b-e)/2;a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b+.25*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.5*e,b+e*d));a.push(new mxConnectionConstraint(new mxPoint(0, 0),!1,null,c+e,b+.25*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+e,b+.75*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c+.5*e,b+(1-d)*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,b+.75*e));return a};x.prototype.getConstraints=function(a,c,b){a=[];mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE);var e=Math.max(0,Math.min(b,parseFloat(mxUtils.getValue(this.style,"size",this.size))));parseFloat(mxUtils.getValue(this.style, "position",this.position));var d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"position2",this.position2))));parseFloat(mxUtils.getValue(this.style,"base",this.base));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.25,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(.75,0),!1));a.push(new mxConnectionConstraint(new mxPoint(1,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0, @@ -2667,11 +2667,11 @@ parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth)))),d=Math.max(0 mxEllipse.prototype.constraints;Z.prototype.constraints=mxRectangleShape.prototype.constraints;oa.prototype.constraints=mxRectangleShape.prototype.constraints;sa.prototype.getConstraints=function(a,c,b){a=[];var e=Math.min(c,b/2),d=Math.min(c-e,Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size)))*c);a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null, .5*(d+c-e),0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-e,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-e,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(d+c-e),b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));return a};S.prototype.constraints=mxRectangleShape.prototype.constraints;ca.prototype.constraints=mxRectangleShape.prototype.constraints;mxCylinder.prototype.constraints= [new mxConnectionConstraint(new mxPoint(.15,.05),!1),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.85,.05),!1),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.3),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.7),!0),new mxConnectionConstraint(new mxPoint(.15,.95),!1),new mxConnectionConstraint(new mxPoint(.5, -1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];G.prototype.constraints= +1),!0),new mxConnectionConstraint(new mxPoint(.85,.95),!1)];t.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,.1),!1),new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.75,.1),!1),new mxConnectionConstraint(new mxPoint(0,1/3),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(1,1/3),!1),new mxConnectionConstraint(new mxPoint(1,1),!1),new mxConnectionConstraint(new mxPoint(.5,.5),!1)];H.prototype.constraints= [new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75,0),!0),new mxConnectionConstraint(new mxPoint(0,.3),!0),new mxConnectionConstraint(new mxPoint(0,.7),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75, 1),!0)];mxActor.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.25,.2),!1),new mxConnectionConstraint(new mxPoint(.1,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.75,.25),!1),new mxConnectionConstraint(new mxPoint(.9,.5),!1),new mxConnectionConstraint(new mxPoint(1,.75),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75, -1),!0)];m.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];z.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35), -!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];t.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75, +1),!0)];m.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,0),!1),new mxConnectionConstraint(new mxPoint(.5,.25),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(0,1),!1),new mxConnectionConstraint(new mxPoint(.5,.75),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];A.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.35), +!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.65),!1),new mxConnectionConstraint(new mxPoint(1,.35),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,.65),!1),new mxConnectionConstraint(new mxPoint(.25,1),!1),new mxConnectionConstraint(new mxPoint(.75,0),!1)];v.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.25,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.75, 0),!0),new mxConnectionConstraint(new mxPoint(.25,1),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(.75,1),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(1,.25),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0),new mxConnectionConstraint(new mxPoint(1,.75),!0)];mxLine.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0, .5),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];N.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.5,0),!1),new mxConnectionConstraint(new mxPoint(.5,1),!1)];mxDoubleEllipse.prototype.constraints=mxEllipse.prototype.constraints;mxRhombus.prototype.constraints=mxEllipse.prototype.constraints;mxTriangle.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!0), new mxConnectionConstraint(new mxPoint(0,.5),!0),new mxConnectionConstraint(new mxPoint(0,.75),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.5,1),!0),new mxConnectionConstraint(new mxPoint(1,.5),!0)];mxHexagon.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.375,0),!0),new mxConnectionConstraint(new mxPoint(.5,0),!0),new mxConnectionConstraint(new mxPoint(.625,0),!0),new mxConnectionConstraint(new mxPoint(0,.25),!0),new mxConnectionConstraint(new mxPoint(0, @@ -2686,10 +2686,10 @@ e.prototype.constraints=mxRectangleShape.prototype.constraints;B.prototype.const new mxConnectionConstraint(new mxPoint(.5,.5),!1),new mxConnectionConstraint(new mxPoint(.75,.5),!1),new mxConnectionConstraint(new mxPoint(1,0),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(1,1),!1)];aa.prototype.getConstraints=function(a,c,b){a=[];var e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",this.arrowWidth)))),d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",this.arrowSize)))),e=(b-e)/ 2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c-d),b-e));a.push(new mxConnectionConstraint(new mxPoint(0, 0),!1,null,0,b-e));return a};R.prototype.getConstraints=function(a,c,b){a=[];var e=b*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowWidth",aa.prototype.arrowWidth)))),d=c*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arrowSize",aa.prototype.arrowSize)))),e=(b-e)/2;a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,e));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,b-e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));return a};ia.prototype.getConstraints=function(a,c,b){a=[];var e=Math.min(b,c),d=Math.max(0,Math.min(e,e*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),e=(b-d)/2,k=e+d,g=(c-d)/2,d=g+d;a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,g,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b-.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,b));a.push(new mxConnectionConstraint(new mxPoint(.5, -1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b-.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,k));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,e));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,k));a.push(new mxConnectionConstraint(new mxPoint(0, -0),!1,null,.5*(c+d),k));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,k));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,k));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*g,k));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,g,e));return a};D.prototype.constraints= +0),!1,null,c-d,0));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c-d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*c,b-e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));return a};ia.prototype.getConstraints=function(a,c,b){a=[];var e=Math.min(b,c),d=Math.max(0,Math.min(e,e*parseFloat(mxUtils.getValue(this.style,"size",this.size)))),e=(b-d)/2,g=e+d,k=(c-d)/2,d=k+d;a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,k,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,k,0));a.push(new mxConnectionConstraint(new mxPoint(.5,0),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,0));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,k,b-.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,k,b));a.push(new mxConnectionConstraint(new mxPoint(.5, +1),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,b-.5*e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,d,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(c+d),e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,e));a.push(new mxConnectionConstraint(new mxPoint(1,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,c,g));a.push(new mxConnectionConstraint(new mxPoint(0, +0),!1,null,.5*(c+d),g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,k,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*k,e));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e));a.push(new mxConnectionConstraint(new mxPoint(0,.5),!1));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*k,g));a.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,k,e));return a};E.prototype.constraints= null;ka.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.25),!1),new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(0,.75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];Q.prototype.constraints=[new mxConnectionConstraint(new mxPoint(.175,.25),!1),new mxConnectionConstraint(new mxPoint(.25,.5),!1),new mxConnectionConstraint(new mxPoint(.175, .75),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1),new mxConnectionConstraint(new mxPoint(.7,.1),!1),new mxConnectionConstraint(new mxPoint(.7,.9),!1)];ba.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)];V.prototype.constraints=[new mxConnectionConstraint(new mxPoint(0,.5),!1),new mxConnectionConstraint(new mxPoint(1,.5),!1)]})();function Actions(a){this.editorUi=a;this.actions={};this.init()} Actions.prototype.init=function(){function a(a){d.escape();var b=d.getDeletableCells(d.getSelectionCells());if(null!=b&&0<b.length){var f=d.selectParentAfterDelete?d.model.getParents(b):null;d.removeCells(b,a);if(null!=f){a=[];for(b=0;b<f.length;b++)d.model.contains(f[b])&&(d.model.isVertex(f[b])||d.model.isEdge(f[b]))&&a.push(f[b]);d.setSelectionCells(a)}}}var b=this.editorUi,f=b.editor,d=f.graph,l=function(){return Action.prototype.isEnabled.apply(this,arguments)&&d.isEnabled()};this.addAction("new...", @@ -2739,9 +2739,9 @@ function(b){null!=b&&d.setCellStyle(mxUtils.trim(b),a)},null,null,400,220);this. if(null!=a&&d.getModel().isEdge(a)){var b=f.graph.selectionCellsHandler.getHandler(a);if(b instanceof mxEdgeHandler){for(var l=d.view.translate,c=d.view.scale,e=l.x,l=l.y,a=d.getModel().getParent(a),k=d.getCellGeometry(a);d.getModel().isVertex(a)&&null!=k;)e+=k.x,l+=k.y,a=d.getModel().getParent(a),k=d.getCellGeometry(a);e=Math.round(d.snap(d.popupMenuHandler.triggerX/c-e));c=Math.round(d.snap(d.popupMenuHandler.triggerY/c-l));b.addPointAt(b.state,e,c)}}});this.addAction("removeWaypoint",function(){var a= b.actions.get("removeWaypoint");null!=a.handler&&a.handler.removePoint(a.handler.state,a.index)});this.addAction("clearWaypoints",function(){var a=d.getSelectionCells();if(null!=a){a=d.addAllEdges(a);d.getModel().beginUpdate();try{for(var b=0;b<a.length;b++){var f=a[b];if(d.getModel().isEdge(f)){var c=d.getCellGeometry(f);null!=c&&(c=c.clone(),c.points=null,d.getModel().setGeometry(f,c))}}}finally{d.getModel().endUpdate()}}},null,null,"Alt+Shift+C");m=this.addAction("subscript",mxUtils.bind(this, function(){d.cellEditor.isContentEditing()&&document.execCommand("subscript",!1,null)}),null,null,Editor.ctrlKey+"+,");m=this.addAction("superscript",mxUtils.bind(this,function(){d.cellEditor.isContentEditing()&&document.execCommand("superscript",!1,null)}),null,null,Editor.ctrlKey+"+.");this.addAction("image...",function(){if(d.isEnabled()&&!d.isCellLocked(d.getDefaultParent())){var a=mxResources.get("image")+" ("+mxResources.get("url")+"):",f=d.getView().getState(d.getSelectionCell()),l="";null!= -f&&(l=f.style[mxConstants.STYLE_IMAGE]||l);var c=d.cellEditor.saveSelection();b.showImageDialog(a,l,function(a,b,f){if(d.cellEditor.isContentEditing())d.cellEditor.restoreSelection(c),d.insertImage(a,b,f);else{var e=d.getSelectionCells();if(null!=a&&(0<a.length||0<e.length)){var k=null;d.getModel().beginUpdate();try{if(0==e.length){var q=d.getFreeInsertPoint(),k=e=[d.insertVertex(d.getDefaultParent(),null,"",q.x,q.y,b,f,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")]; -d.fireEvent(new mxEventObject("cellsInserted","cells",k))}d.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,e);var l=d.view.getState(e[0]),t=null!=l?l.style:d.getCellStyle(e[0]);"image"!=t[mxConstants.STYLE_SHAPE]&&"label"!=t[mxConstants.STYLE_SHAPE]?d.setCellStyles(mxConstants.STYLE_SHAPE,"image",e):0==a.length&&d.setCellStyles(mxConstants.STYLE_SHAPE,null,e);if(1==d.getSelectionCount()&&null!=b&&null!=f){var m=e[0],y=d.getModel().getGeometry(m);null!=y&&(y=y.clone(),y.width=b,y.height=f, -d.getModel().setGeometry(m,y))}}finally{d.getModel().endUpdate()}null!=k&&(d.setSelectionCells(k),d.scrollCellToVisible(k[0]))}}},d.cellEditor.isContentEditing(),!d.cellEditor.isContentEditing())}}).isEnabled=l;m=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide", +f&&(l=f.style[mxConstants.STYLE_IMAGE]||l);var c=d.cellEditor.saveSelection();b.showImageDialog(a,l,function(a,b,f){if(d.cellEditor.isContentEditing())d.cellEditor.restoreSelection(c),d.insertImage(a,b,f);else{var e=d.getSelectionCells();if(null!=a&&(0<a.length||0<e.length)){var g=null;d.getModel().beginUpdate();try{if(0==e.length){var k=d.getFreeInsertPoint(),g=e=[d.insertVertex(d.getDefaultParent(),null,"",k.x,k.y,b,f,"shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;")]; +d.fireEvent(new mxEventObject("cellsInserted","cells",g))}d.setCellStyles(mxConstants.STYLE_IMAGE,0<a.length?a:null,e);var q=d.view.getState(e[0]),v=null!=q?q.style:d.getCellStyle(e[0]);"image"!=v[mxConstants.STYLE_SHAPE]&&"label"!=v[mxConstants.STYLE_SHAPE]?d.setCellStyles(mxConstants.STYLE_SHAPE,"image",e):0==a.length&&d.setCellStyles(mxConstants.STYLE_SHAPE,null,e);if(1==d.getSelectionCount()&&null!=b&&null!=f){var l=e[0],y=d.getModel().getGeometry(l);null!=y&&(y=y.clone(),y.width=b,y.height=f, +d.getModel().setGeometry(l,y))}}finally{d.getModel().endUpdate()}null!=g&&(d.setSelectionCells(g),d.scrollCellToVisible(g[0]))}}},d.cellEditor.isContentEditing(),!d.cellEditor.isContentEditing())}}).isEnabled=l;m=this.addAction("layers",mxUtils.bind(this,function(){null==this.layersWindow?(this.layersWindow=new LayersWindow(b,document.body.offsetWidth-280,120,220,180),this.layersWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.addListener("hide", function(){b.fireEvent(new mxEventObject("layers"))}),this.layersWindow.window.setVisible(!0),b.fireEvent(new mxEventObject("layers"))):this.layersWindow.window.setVisible(!this.layersWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+L");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.layersWindow&&this.layersWindow.window.isVisible()}));m=this.addAction("formatPanel",mxUtils.bind(this,function(){b.toggleFormatPanel()}),null,null,Editor.ctrlKey+ "+Shift+P");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return 0<b.formatWidth}));m=this.addAction("outline",mxUtils.bind(this,function(){null==this.outlineWindow?(this.outlineWindow=new OutlineWindow(b,document.body.offsetWidth-260,100,180,180),this.outlineWindow.window.addListener("show",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.addListener("hide",function(){b.fireEvent(new mxEventObject("outline"))}),this.outlineWindow.window.setVisible(!0), b.fireEvent(new mxEventObject("outline"))):this.outlineWindow.window.setVisible(!this.outlineWindow.window.isVisible())}),null,null,Editor.ctrlKey+"+Shift+O");m.setToggleAction(!0);m.setSelectedCallback(mxUtils.bind(this,function(){return null!=this.outlineWindow&&this.outlineWindow.window.isVisible()}))}; @@ -2751,23 +2751,23 @@ DrawioFile.prototype.allChangesSavedKey="allChangesSaved";DrawioFile.prototype.a DrawioFile.prototype.changeListenerEnabled=!0;DrawioFile.prototype.lastAutosaveRevision=null;DrawioFile.prototype.maxAutosaveRevisionDelay=3E5;DrawioFile.prototype.inConflictState=!1;DrawioFile.prototype.invalidChecksum=!1;DrawioFile.prototype.errorReportsEnabled=!1;DrawioFile.prototype.reportEnabled=!0;DrawioFile.prototype.ageStart=null;DrawioFile.prototype.getSize=function(){return null!=this.data?this.data.length:0}; DrawioFile.prototype.synchronizeFile=function(a,b){this.savingFile?null!=b&&b({message:mxResources.get("busy")}):null!=this.sync?this.sync.fileChanged(a,b):this.updateFile(a,b)}; DrawioFile.prototype.updateFile=function(a,b,f,d){null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():this.getLatestVersion(mxUtils.bind(this,function(l){try{null!=f&&f()||(this.ui.getCurrentFile()!=this||this.invalidChecksum?null!=b&&b():null!=l?this.mergeFile(l,a,b,d):this.reloadFile(a,b))}catch(m){null!=b&&b(m)}}),b))}; -DrawioFile.prototype.mergeFile=function(a,b,f,d){var l=!0;try{this.stats.fileMerged++;var m=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),p=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=p&&0<p.length){this.shadowPages=p;this.backupPatch=this.isModified()?this.ui.diffPages(m,this.ui.pages):null;var u=[this.ui.diffPages(null!=d?d:m,this.shadowPages)];if(!this.ignorePatches(u)){var z=this.ui.patchPages(m, -u[0]);d={};var B=this.ui.getHashValueForPages(z,d),m={},c=this.ui.getHashValueForPages(this.shadowPages,m);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",u,"checksum",c==B,B);if(null!=B&&B!=c){var e=this.compressReportData(this.getAnonymizedXmlForPages(p)),k=this.compressReportData(this.getAnonymizedXmlForPages(z)),q=this.ui.hashValue(a.getCurrentEtag()),n=this.ui.hashValue(this.getCurrentEtag());this.checksumError(f,u,"Shadow Details: "+JSON.stringify(d)+ +DrawioFile.prototype.mergeFile=function(a,b,f,d){var l=!0;try{this.stats.fileMerged++;var m=null!=this.shadowPages?this.shadowPages:this.ui.getPagesForNode(mxUtils.parseXml(this.shadowData).documentElement),p=this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement);if(null!=p&&0<p.length){this.shadowPages=p;this.backupPatch=this.isModified()?this.ui.diffPages(m,this.ui.pages):null;var u=[this.ui.diffPages(null!=d?d:m,this.shadowPages)];if(!this.ignorePatches(u)){var A=this.ui.patchPages(m, +u[0]);d={};var B=this.ui.getHashValueForPages(A,d),m={},c=this.ui.getHashValueForPages(this.shadowPages,m);"1"==urlParams.test&&EditorUi.debug("File.mergeFile",[this],"backup",this.backupPatch,"patches",u,"checksum",c==B,B);if(null!=B&&B!=c){var e=this.compressReportData(this.getAnonymizedXmlForPages(p)),k=this.compressReportData(this.getAnonymizedXmlForPages(A)),q=this.ui.hashValue(a.getCurrentEtag()),n=this.ui.hashValue(this.getCurrentEtag());this.checksumError(f,u,"Shadow Details: "+JSON.stringify(d)+ "\nChecksum: "+B+"\nCurrent: "+c+"\nCurrent Details: "+JSON.stringify(m)+"\nFrom: "+q+"\nTo: "+n+"\n\nFile Data:\n"+e+"\nPatched Shadow:\n"+k,null,"mergeFile");return}this.patch(u,DrawioFile.LAST_WRITE_WINS?this.backupPatch:null)}}else throw l=!1,Error(mxResources.get("notADiagramFile"));this.inConflictState=this.invalidChecksum=!1;this.setDescriptor(a.getDescriptor());this.descriptorChanged();this.backupPatch=null;null!=b&&b()}catch(x){this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged(); -null!=f&&f(x);try{if(l)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,x);else{var g=this.getCurrentUser(),A=null!=g?g.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),A,x)}}catch(t){}}}; +null!=f&&f(x);try{if(l)if(this.errorReportsEnabled)this.sendErrorReport("Error in mergeFile",null,x);else{var g=this.getCurrentUser(),z=null!=g?g.id:"unknown";EditorUi.logError("Error in mergeFile",null,this.getMode()+"."+this.getId(),z,x)}}catch(v){}}}; DrawioFile.prototype.getAnonymizedXmlForPages=function(a){var b=new mxCodec(mxUtils.createXmlDocument()),f=b.document.createElement("mxfile");if(null!=a)for(var d=0;d<a.length;d++){var l=b.encode(new mxGraphModel(a[d].root));"1"!=urlParams.dev&&(l=this.ui.anonymizeNode(l,!0));l.setAttribute("id",a[d].getId());a[d].viewState&&this.ui.editor.graph.saveViewState(a[d].viewState,l,!0);f.appendChild(l)}return mxUtils.getPrettyXml(f)}; DrawioFile.prototype.compressReportData=function(a,b,f){b=null!=b?b:1E4;null!=f&&null!=a&&a.length>f?a=a.substring(0,f)+"[...]":null!=a&&a.length>b&&(a=Graph.compress(a)+"\n");return a}; DrawioFile.prototype.checksumError=function(a,b,f,d,l){this.stats.checksumErrors++;this.invalidChecksum=this.inConflictState=!0;this.descriptorChanged();null!=this.sync&&this.sync.updateOnlineState();null!=a&&a();try{if(this.errorReportsEnabled){if(null!=b)for(a=0;a<b.length;a++)this.ui.anonymizePatch(b[a]);var m=mxUtils.bind(this,function(a){var d=this.compressReportData(JSON.stringify(b,null,2));a=null!=a?this.compressReportData(this.getAnonymizedXmlForPages(this.ui.getPagesForNode(mxUtils.parseXml(a.data).documentElement)), 25E3):"n/a";this.sendErrorReport("Checksum Error in "+l+" "+this.getHash(),(null!=f?f:"")+"\n\nPatches:\n"+d+(null!=a?"\n\nRemote:\n"+a:""),null,7E4)});null==d?m(null):this.getLatestVersion(mxUtils.bind(this,function(a){null!=a&&a.getCurrentEtag()==d?m(a):m(null)}),function(){})}else{var p=this.getCurrentUser(),u=null!=p?p.id:"unknown";EditorUi.logError("Checksum Error in "+l+" "+this.getId(),null,this.getMode()+"."+this.getId(),"user_"+u+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")); -try{EditorUi.logEvent({category:"CHECKSUM-ERROR-SYNC-FILE-"+this.getHash(),action:l,label:"user_"+u+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")})}catch(z){}}}catch(z){}}; -DrawioFile.prototype.sendErrorReport=function(a,b,f,d){try{var l=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),m=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),p=this.getCurrentUser(),u=null!=p?this.ui.hashValue(p.id):"unknown",z=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",B=this.getTitle(),c=B.lastIndexOf("."),p="xml";0<c&&(p=B.substring(c));var e=null!=f?f.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+ -":\n\nBrowser="+navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+p+")\nUser="+u+z+"\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=b?"\n\n"+b:"")+ +try{EditorUi.logEvent({category:"CHECKSUM-ERROR-SYNC-FILE-"+this.getHash(),action:l,label:"user_"+u+(null!=this.sync?"-client_"+this.sync.clientId:"-nosync")})}catch(A){}}}catch(A){}}; +DrawioFile.prototype.sendErrorReport=function(a,b,f,d){try{var l=this.compressReportData(this.getAnonymizedXmlForPages(this.shadowPages),25E3),m=this.compressReportData(this.getAnonymizedXmlForPages(this.ui.pages),25E3),p=this.getCurrentUser(),u=null!=p?this.ui.hashValue(p.id):"unknown",A=null!=this.sync?"-client_"+this.sync.clientId:"-nosync",B=this.getTitle(),c=B.lastIndexOf("."),p="xml";0<c&&(p=B.substring(c));var e=null!=f?f.stack:Error().stack;EditorUi.sendReport(a+" "+(new Date).toISOString()+ +":\n\nBrowser="+navigator.userAgent+"\nFile="+this.ui.hashValue(this.getId())+" ("+this.getMode()+")"+(this.isModified()?" modified":"")+"\nSize/Type="+this.getSize()+" ("+p+")\nUser="+u+A+"\nPrefix="+this.ui.editor.graph.model.prefix+"\nSync="+DrawioFile.SYNC+(null!=this.sync?(this.sync.enabled?" enabled":"")+(this.sync.isConnected()?" connected":""):"")+"\nPlugins="+(null!=mxSettings.settings?mxSettings.getPlugins():"null")+"\n\nStats:\n"+JSON.stringify(this.stats,null,2)+(null!=b?"\n\n"+b:"")+ (null!=f?"\n\nError: "+f.message:"")+"\n\nStack:\n"+e+"\n\nShadow:\n"+l+"\n\nData:\n"+m,d)}catch(k){}}; DrawioFile.prototype.reloadFile=function(a,b){try{this.ui.spinner.stop();var f=mxUtils.bind(this,function(){this.stats.fileReloaded++;this.reportEnabled=!1;var b=this.ui.editor.graph.getViewState(),f=this.ui.editor.graph.getSelectionCells(),m=this.ui.currentPage;this.ui.loadFile(this.getHash(),!0,null,mxUtils.bind(this,function(){if(null==this.ui.fileLoadedError){this.ui.restoreViewState(m,b,f);null!=this.backupPatch&&this.patch([this.backupPatch]);var d=this.ui.getCurrentFile();null!=d&&(d.stats= this.stats);null!=a&&a()}}),!0)});this.isModified()&&null==this.backupPatch?this.ui.confirm(mxResources.get("allChangesLost"),mxUtils.bind(this,function(){this.handleFileSuccess("manual"==DrawioFile.SYNC)}),f,mxResources.get("cancel"),mxResources.get("discardChanges")):f()}catch(d){null!=b&&b(d)}};DrawioFile.prototype.copyFile=function(a,b){this.ui.editor.editAsNew(this.ui.getFileData(!0),this.ui.getCopyFilename(this))}; DrawioFile.prototype.ignorePatches=function(a){for(var b=!0,f=0;f<a.length&&b;f++)b=b&&0==Object.keys(a[f]).length;return b}; -DrawioFile.prototype.patch=function(a,b){var f=this.ui.editor.undoManager,d=f.history.slice(),l=f.indexOfNextAdd,m=this.ui.editor.graph;m.container.style.visibility="hidden";var p=this.changeListenerEnabled;this.changeListenerEnabled=!1;var u=m.foldingEnabled,z=m.mathEnabled,B=m.cellRenderer.redraw;m.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());B.apply(this,arguments)};m.model.beginUpdate();try{for(var c= -0;c<a.length;c++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[c],!0,b,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{m.container.style.visibility="";m.model.endUpdate();m.cellRenderer.redraw=B;this.changeListenerEnabled=p;f.history=d;f.indexOfNextAdd=l;f.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)z!= +DrawioFile.prototype.patch=function(a,b){var f=this.ui.editor.undoManager,d=f.history.slice(),l=f.indexOfNextAdd,m=this.ui.editor.graph;m.container.style.visibility="hidden";var p=this.changeListenerEnabled;this.changeListenerEnabled=!1;var u=m.foldingEnabled,A=m.mathEnabled,B=m.cellRenderer.redraw;m.cellRenderer.redraw=function(a){a.view.graph.isEditing(a.cell)&&(a.view.graph.scrollCellToVisible(a.cell),a.view.graph.cellEditor.resize());B.apply(this,arguments)};m.model.beginUpdate();try{for(var c= +0;c<a.length;c++)this.ui.pages=this.ui.patchPages(this.ui.pages,a[c],!0,b,this.isModified());0==this.ui.pages.length&&this.ui.pages.push(this.ui.createPage());0>mxUtils.indexOf(this.ui.pages,this.ui.currentPage)&&this.ui.selectPage(this.ui.pages[0],!0)}finally{m.container.style.visibility="";m.model.endUpdate();m.cellRenderer.redraw=B;this.changeListenerEnabled=p;f.history=d;f.indexOfNextAdd=l;f.fireEvent(new mxEventObject(mxEvent.CLEAR));if(null==this.ui.currentPage||this.ui.currentPage.needsUpdate)A!= m.mathEnabled?(this.ui.editor.updateGraphComponents(),m.refresh()):(u!=m.foldingEnabled?m.view.revalidate():m.view.validate(),m.sizeDidChange());this.ui.updateTabContainer()}}; DrawioFile.prototype.save=function(a,b,f,d,l,m){try{if(this.isEditable())if(!l&&this.invalidChecksum)if(null!=f)f({message:mxResources.get("checksum")});else throw Error(mxResources.get("checksum"));else this.updateFileData(),this.clearAutosave(),null!=b&&b();else if(null!=f)f({message:mxResources.get("readOnly")});else throw Error(mxResources.get("readOnly"));}catch(p){if(null!=f)f(p);else throw p;}}; DrawioFile.prototype.updateFileData=function(){this.setData(this.ui.getFileData(null,null,null,null,null,null,null,null,this,!this.isCompressed()))};DrawioFile.prototype.isCompressedStorage=function(){return!0};DrawioFile.prototype.isCompressed=function(){var a=null!=this.ui.fileNode?this.ui.fileNode.getAttribute("compressed"):null;return null!=a?"false"!=a:this.isCompressedStorage()&&Editor.compressXml};DrawioFile.prototype.saveAs=function(a,b,f){};DrawioFile.prototype.saveFile=function(a,b,f,d){}; @@ -2787,7 +2787,7 @@ DrawioFile.prototype.saveDraft=function(){try{null==this.draftId&&(this.draftId= DrawioFile.prototype.removeDraft=function(){try{null!=this.draftId&&(this.ui.removeDatabaseItem(".draft_"+this.draftId),EditorUi.debug("draft deleted",".draft_"+this.draftId))}catch(a){}}; DrawioFile.prototype.addUnsavedStatus=function(a){if(!this.inConflictState&&null!=this.ui.statusContainer&&this.ui.getCurrentFile()==this)if(a instanceof Error&&null!=a.message&&""!=a.message){var b=mxUtils.htmlEntities(mxResources.get("unsavedChanges"));this.ui.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="overflow:hidden;">'+b+" ("+mxUtils.htmlEntities(a.message)+")</div>")}else{b=this.getErrorMessage(a);if(null==b&&null!=this.lastSaved){var f=this.ui.timeSince(new Date(this.lastSaved)); null!=f&&(b=mxResources.get("lastSaved",[f]))}null!=b&&60<b.length&&(b=b.substring(0,60)+"...");b=mxUtils.htmlEntities(mxResources.get("unsavedChangesClickHereToSave"))+(null!=b&&""!=b?" ("+mxUtils.htmlEntities(b)+")":"");this.ui.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="cursor:pointer;overflow:hidden;">'+b+"</div>");b=this.ui.statusContainer.getElementsByTagName("div");null!=b&&0<b.length?mxEvent.addListener(b[0],"click",mxUtils.bind(this,function(){this.ui.actions.get(null!= -this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(b=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="overflow:hidden;">'+b+" ("+mxUtils.htmlEntities(a.message)+")</div>"));EditorUi.enableDrafts&&this.saveDraft()}}; +this.ui.mode&&this.isEditable()?"save":"saveAs").funct()})):(b=mxUtils.htmlEntities(mxResources.get("unsavedChanges")),this.ui.editor.setStatus('<div title="'+b+'" class="geStatusAlert" style="overflow:hidden;">'+b+" ("+mxUtils.htmlEntities(a.message)+")</div>"));EditorUi.enableDrafts&&null==this.getMode()&&this.saveDraft()}}; DrawioFile.prototype.addConflictStatus=function(a,b){this.invalidChecksum&&null==b&&(b=mxResources.get("checksum"));this.setConflictStatus(mxUtils.htmlEntities(mxResources.get("fileChangedSync"))+(null!=b&&""!=b?" ("+mxUtils.htmlEntities(b)+")":""));this.ui.spinner.stop();this.clearAutosave();var f=null!=this.ui.statusContainer?this.ui.statusContainer.getElementsByTagName("div"):null;null!=f&&0<f.length?mxEvent.addListener(f[0],"click",mxUtils.bind(this,function(b){"IMG"!=mxEvent.getSource(b).nodeName&& a()})):this.ui.alert(mxUtils.htmlEntities(mxResources.get("fileChangedSync")),a)};DrawioFile.prototype.setConflictStatus=function(a){this.ui.editor.setStatus('<div title="'+a+'" class="geStatusAlert geBlink" style="cursor:pointer;overflow:hidden;">'+a+' <a href="https://desk.draw.io/support/solutions/articles/16000087947" target="_blank"><img border="0" style="margin-left:2px;cursor:help;opacity:0.5;width:16px;height:16px;" valign="bottom" src="'+Editor.helpImage+'" style=""/></a></div>')}; DrawioFile.prototype.showRefreshDialog=function(a,b,f){null==f&&(f=mxResources.get("checksum"));this.ui.editor.isChromelessView()&&!this.ui.editor.editable?this.ui.alert(mxResources.get("fileChangedSync"),mxUtils.bind(this,function(){this.reloadFile(a,b)})):(this.addConflictStatus(mxUtils.bind(this,function(){this.showRefreshDialog(a,b)}),f),this.ui.showError(mxResources.get("error")+" ("+f+")",mxResources.get("fileChangedSyncDialog"),mxResources.get("makeCopy"),mxUtils.bind(this,function(){this.copyFile(a, @@ -2834,15 +2834,16 @@ type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal enumList:[{val:"visible",dispName:"Visible"},{val:"hidden",dispName:"Hidden"},{val:"fill",dispName:"Fill"},{val:"width",dispName:"Width"}]},{name:"noLabel",dispName:"Hide Label",type:"bool",defVal:!1},{name:"labelPadding",dispName:"Label Padding",type:"float",defVal:0},{name:"direction",dispName:"Direction",type:"enum",defVal:"east",enumList:[{val:"north",dispName:"North"},{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraint",dispName:"Constraint", type:"enum",defVal:"none",enumList:[{val:"none",dispName:"None"},{val:"north",dispName:"North"},{val:"east",dispName:"East"},{val:"south",dispName:"South"},{val:"west",dispName:"West"}]},{name:"portConstraintRotation",dispName:"Rotate Constraint",type:"bool",defVal:!1},{name:"connectable",dispName:"Connectable",type:"bool",defVal:!0},{name:"allowArrows",dispName:"Allow Arrows",type:"bool",defVal:!0},{name:"snapToPoint",dispName:"Snap to Point",type:"bool",defVal:!1},{name:"perimeter",dispName:"Perimeter", defVal:"none",type:"enum",enumList:[{val:"none",dispName:"None"},{val:"rectanglePerimeter",dispName:"Rectangle"},{val:"ellipsePerimeter",dispName:"Ellipse"},{val:"rhombusPerimeter",dispName:"Rhombus"},{val:"trianglePerimeter",dispName:"Triangle"},{val:"hexagonPerimeter2",dispName:"Hexagon"},{val:"lifelinePerimeter",dispName:"Lifeline"},{val:"orthogonalPerimeter",dispName:"Orthogonal"},{val:"backbonePerimeter",dispName:"Backbone"},{val:"calloutPerimeter",dispName:"Callout"},{val:"parallelogramPerimeter", -dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1.5,isVisible:function(a){return"1"==mxUtils.getValue(a.style,"comic","0")}},{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"collapsible",dispName:"Collapsible",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1},{name:"recursiveResize", -dispName:"Resize Children",type:"bool",defVal:!0},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label",type:"bool",defVal:!1,isVisible:function(a,c){var b=0<a.vertices.length?c.editorUi.editor.graph.getCellGeometry(a.vertices[0]): -null;return null!=b&&!b.relative}},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable",dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving", -dispName:"Tree Moving",type:"bool",defVal:!1},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(a,c){return 0<a.vertices.length&&c.editorUi.editor.graph.isContainer(a.vertices[0])}}];Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## The label is concatenated in the form fromlabel + label + tolabel if all are defined.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle or a JSON string as used in Layout, Apply.\n## Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nEvan Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nRon Donovan,System Admin,rdo,Office 3,Evan Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nTessa Valet,HR Director,tva,Office 4,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\n'; +dispName:"Parallelogram"},{val:"trapezoidPerimeter",dispName:"Trapezoid"},{val:"stepPerimeter",dispName:"Step"}]},{name:"fixDash",dispName:"Fixed Dash",type:"bool",defVal:!1},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1.5,isVisible:function(a,c){return"1"==mxUtils.getValue(a.style,"comic","0")}},{name:"autosize",dispName:"Autosize",type:"bool",defVal:!1},{name:"container",dispName:"Container",type:"bool",defVal:!1,isVisible:function(a,c){return 1==a.vertices.length&&0==a.edges.length&& +0==c.editorUi.editor.graph.model.getChildCount(a.vertices[0])}},{name:"collapsible",dispName:"Collapsible",type:"bool",getDefaultValue:function(a,c){var b=1==a.vertices.length&&0==a.edges.length?a.vertices[0]:null,e=c.editorUi.editor.graph;return null!=b&&(e.isContainer(b)&&"0"!=a.style.collapsible||!e.isContainer(b)&&"1"==a.style.collapsible)},isVisible:function(a,c){return 1==a.vertices.length&&0==a.edges.length}},{name:"recursiveResize",dispName:"Resize Children",type:"bool",defVal:!0,isVisible:function(a, +c){return 1==a.vertices.length&&0==a.edges.length&&!c.editorUi.editor.graph.isSwimlane(a.vertices[0])&&null==mxUtils.getValue(a.style,"childLayout",null)}},{name:"expand",dispName:"Expand",type:"bool",defVal:!0},{name:"part",dispName:"Part",type:"bool",defVal:!1},{name:"editable",dispName:"Editable",type:"bool",defVal:!0},{name:"backgroundOutline",dispName:"Background Outline",type:"bool",defVal:!1},{name:"movable",dispName:"Movable",type:"bool",defVal:!0},{name:"movableLabel",dispName:"Movable Label", +type:"bool",defVal:!1,isVisible:function(a,c){var b=0<a.vertices.length?c.editorUi.editor.graph.getCellGeometry(a.vertices[0]):null;return null!=b&&!b.relative}},{name:"resizable",dispName:"Resizable",type:"bool",defVal:!0},{name:"resizeWidth",dispName:"Resize Width",type:"bool",defVal:!1},{name:"resizeHeight",dispName:"Resize Height",type:"bool",defVal:!1},{name:"rotatable",dispName:"Rotatable",type:"bool",defVal:!0},{name:"cloneable",dispName:"Cloneable",type:"bool",defVal:!0},{name:"deletable", +dispName:"Deletable",type:"bool",defVal:!0},{name:"treeFolding",dispName:"Tree Folding",type:"bool",defVal:!1},{name:"treeMoving",dispName:"Tree Moving",type:"bool",defVal:!1},{name:"moveCells",dispName:"Move Cells on Fold",type:"bool",defVal:!1,isVisible:function(a,c){return 0<a.vertices.length&&c.editorUi.editor.graph.isContainer(a.vertices[0])}}];Editor.defaultCsvValue='##\n## Example CSV import. Use ## for comments and # for configuration. Paste CSV below.\n## The following names are reserved and should not be used (or ignored):\n## id, tooltip, placeholder(s), link and label (see below)\n##\n#\n## Node label with placeholders and HTML.\n## Default is \'%name_of_first_column%\'.\n#\n# label: %name%<br><i style="color:gray;">%position%</i><br><a href="mailto:%email%">Email</a>\n#\n## Node style (placeholders are replaced once).\n## Default is the current style for nodes.\n#\n# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n#\n## Parent style for nodes with child nodes (placeholders are replaced once).\n#\n# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n#\n## Optional column name that contains a reference to a named style in styles.\n## Default is the current style for nodes.\n#\n# stylename: -\n#\n## JSON for named styles of the form {"name": "style", "name": "style"} where style is a cell style with\n## placeholders that are replaced once.\n#\n# styles: -\n#\n## Optional column name that contains a reference to a named label in labels.\n## Default is the current label.\n#\n# labelname: -\n#\n## JSON for named labels of the form {"name": "label", "name": "label"} where label is a cell label with\n## placeholders.\n#\n# labels: -\n#\n## Uses the given column name as the identity for cells (updates existing cells).\n## Default is no identity (empty value or -).\n#\n# identity: -\n#\n## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n## The identity above is used for resolving the reference so it must be specified.\n#\n# parent: -\n#\n## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n## Default is csvimport-.\n#\n# namespace: csvimport-\n#\n## Connections between rows ("from": source colum, "to": target column).\n## Label, style and invert are optional. Defaults are \'\', current style and false.\n## If placeholders are used in the style, they are replaced with data from the source.\n## An optional placeholders can be set to target to use data from the target instead.\n## In addition to label, an optional fromlabel and tolabel can be used to name the column\n## that contains the text for the label in the edges source or target (invert ignored).\n## The label is concatenated in the form fromlabel + label + tolabel if all are defined.\n## The target column may contain a comma-separated list of values.\n## Multiple connect entries are allowed.\n#\n# connect: {"from": "manager", "to": "name", "invert": true, "label": "manages", \\\n# "style": "curved=1;endArrow=blockThin;endFill=1;fontSize=11;"}\n# connect: {"from": "refs", "to": "id", "style": "curved=1;fontSize=11;"}\n#\n## Node x-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# left: \n#\n## Node y-coordinate. Possible value is a column name. Default is empty. Layouts will\n## override this value.\n#\n# top: \n#\n## Node width. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the width. Default is auto.\n#\n# width: auto\n#\n## Node height. Possible value is a number (in px), auto or an @ sign followed by a column\n## name that contains the value for the height. Default is auto.\n#\n# height: auto\n#\n## Padding for autosize. Default is 0.\n#\n# padding: -12\n#\n## Comma-separated list of ignored columns for metadata. (These can be\n## used for connections and styles but will not be added as metadata.)\n#\n# ignore: id,image,fill,stroke,refs,manager\n#\n## Column to be renamed to link attribute (used as link).\n#\n# link: url\n#\n## Spacing between nodes. Default is 40.\n#\n# nodespacing: 40\n#\n## Spacing between levels of hierarchical layouts. Default is 100.\n#\n# levelspacing: 100\n#\n## Spacing between parallel edges. Default is 40. Use 0 to disable.\n#\n# edgespacing: 40\n#\n## Name or JSON of layout. Possible values are auto, none, verticaltree, horizontaltree,\n## verticalflow, horizontalflow, organic, circle or a JSON string as used in Layout, Apply.\n## Default is auto.\n#\n# layout: auto\n#\n## ---- CSV below this line. First line are column names. ----\nname,position,id,location,manager,email,fill,stroke,refs,url,image\nEvan Miller,CFO,emi,Office 1,,me@example.com,#dae8fc,#6c8ebf,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-9-2-128.png\nEdward Morrison,Brand Manager,emo,Office 2,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-10-3-128.png\nRon Donovan,System Admin,rdo,Office 3,Evan Miller,me@example.com,#d5e8d4,#82b366,"emo,tva",https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-2-128.png\nTessa Valet,HR Director,tva,Office 4,Evan Miller,me@example.com,#d5e8d4,#82b366,,https://www.draw.io,https://cdn3.iconfinder.com/data/icons/user-avatars-1/512/users-3-128.png\n'; Editor.fastCompress=function(a){return null==a||0==a.length||"undefined"===typeof pako?a:pako.deflateRaw(a,{to:"string"})};Editor.fastDecompress=function(a){return null==a||0==a.length||"undefined"===typeof pako?a:pako.inflateRaw(a,{to:"string"})};Editor.extractGraphModel=function(a,c){if(null!=a&&"undefined"!==typeof pako){var b=a.ownerDocument.getElementsByTagName("div"),e=[];if(null!=b&&0<b.length)for(var d=0;d<b.length;d++)if("mxgraph"==b[d].getAttribute("class")){e.push(b[d]);break}0<e.length&& (b=e[0].getAttribute("data-mxgraph"),null!=b?(e=JSON.parse(b),null!=e&&null!=e.xml&&(e=mxUtils.parseXml(e.xml),a=e.documentElement)):(e=e[0].getElementsByTagName("div"),0<e.length&&(b=mxUtils.getTextContent(e[0]),b=Graph.decompress(b),0<b.length&&(e=mxUtils.parseXml(b),a=e.documentElement))))}if(null!=a&&"svg"==a.nodeName)if(b=a.getAttribute("content"),null!=b&&"<"!=b.charAt(0)&&"%"!=b.charAt(0)&&(b=unescape(window.atob?atob(b):Base64.decode(cont,b))),null!=b&&"%"==b.charAt(0)&&(b=decodeURIComponent(b)), null!=b&&0<b.length)a=mxUtils.parseXml(b).documentElement;else throw{message:mxResources.get("notADiagramFile")};null==a||c||(e=null,"diagram"==a.nodeName?e=a:"mxfile"==a.nodeName&&(b=a.getElementsByTagName("diagram"),0<b.length&&(e=b[Math.max(0,Math.min(b.length-1,urlParams.page||0))])),null!=e&&(a=Editor.parseDiagramNode(e)));null==a||"mxGraphModel"==a.nodeName||c&&"mxfile"==a.nodeName||(a=null);return a};Editor.parseDiagramNode=function(a){var c=mxUtils.trim(mxUtils.getTextContent(a)),b=null;0< c.length?(a=Graph.decompress(c),null!=a&&0<a.length&&(b=mxUtils.parseXml(a).documentElement)):(a=mxUtils.getChildNodes(a),0<a.length&&(b=mxUtils.createXmlDocument(),b.appendChild(b.importNode(a[0],!0)),b=b.documentElement));return b};Editor.getDiagramNodeXml=function(a){var c=mxUtils.getTextContent(a),b=null;0<c.length?b=Graph.decompress(c):null!=a.firstChild&&(b=mxUtils.getXml(a.firstChild));return b};Editor.extractGraphModelFromPdf=function(a){a=a.substring(a.indexOf(",")+1);a=window.atob&&!mxClient.IS_SF? -atob(a):Base64.decode(a,!0);for(var c=null,b="",e=0,d=0,k=[],g=null;d<a.length;){var f=a.charCodeAt(d),d=d+1;10!=f&&(b+=String.fromCharCode(f));f=="\n/Subject (".charCodeAt(e)?e++:e=0;if(11==e){var n=a.indexOf(")\n",d);if(n>d){c=a.substring(d,n);break}}10==f&&("endobj"==b?g=null:"obj"==b.substring(b.length-3,b.length)||"xref"==b||"trailer"==b?(g=[],k[b.split(" ")[0]]=g):null!=g&&g.push(b),b="")}null==c&&(c=Editor.extractGraphModelFromXref(k));null!=c&&(c=decodeURIComponent(c.replace(/\\\(/g,"(").replace(/\\\)/g, +atob(a):Base64.decode(a,!0);for(var c=null,b="",e=0,d=0,g=[],k=null;d<a.length;){var f=a.charCodeAt(d),d=d+1;10!=f&&(b+=String.fromCharCode(f));f=="\n/Subject (".charCodeAt(e)?e++:e=0;if(11==e){var t=a.indexOf(")\n",d);if(t>d){c=a.substring(d,t);break}}10==f&&("endobj"==b?k=null:"obj"==b.substring(b.length-3,b.length)||"xref"==b||"trailer"==b?(k=[],g[b.split(" ")[0]]=k):null!=k&&k.push(b),b="")}null==c&&(c=Editor.extractGraphModelFromXref(g));null!=c&&(c=decodeURIComponent(c.replace(/\\\(/g,"(").replace(/\\\)/g, ")")));return c};Editor.extractGraphModelFromXref=function(a){var c=a.trailer,b=null;null!=c&&(c=/.* \/Info (\d+) (\d+) R/g.exec(c.join("\n")),null!=c&&0<c.length&&(c=a[c[1]],null!=c&&(c=/.* \/Subject (\d+) (\d+) R/g.exec(c.join("\n")),null!=c&&0<c.length&&(a=a[c[1]],null!=a&&(a=a.join("\n"),b=a.substring(1,a.length-1))))));return b};Editor.extractGraphModelFromPng=function(a){var c=null;try{var b=a.substring(a.indexOf(",")+1),e=window.atob&&!mxClient.IS_SF?atob(b):Base64.decode(b,!0);EditorUi.parsePng(e, mxUtils.bind(this,function(a,b,d){a=e.substring(a+8,a+8+d);"zTXt"==b?(d=a.indexOf(String.fromCharCode(0)),"mxGraphModel"==a.substring(0,d)&&(a=pako.inflateRaw(a.substring(d+2),{to:"string"}).replace(/\+/g," "),null!=a&&0<a.length&&(c=a))):"tEXt"==b&&(a=a.split(String.fromCharCode(0)),1<a.length&&("mxGraphModel"==a[0]||"mxfile"==a[0])&&(c=a[1]));if(null!=c||"IDAT"==b)return!0}))}catch(P){}null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c));return c}; Editor.extractParserError=function(a,c){var b=null,e=null!=a?a.getElementsByTagName("parsererror"):null;null!=e&&0<e.length&&(b=c||mxResources.get("invalidChars"),e=e[0].getElementsByTagName("div"),0<e.length&&(b=mxUtils.getTextContent(e[0])));return b};Editor.configure=function(a,c){if(null!=a){Editor.config=a;Editor.configVersion=a.version;Menus.prototype.defaultFonts=a.defaultFonts||Menus.prototype.defaultFonts;ColorDialog.prototype.presetColors=a.presetColors||ColorDialog.prototype.presetColors; @@ -2858,7 +2859,7 @@ Editor.prototype.setGraphXml=function(c){c=null!=c&&"mxlibrary"!=c.nodeName?this b.width,b.height))):this.graph.setBackgroundImage(null);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();this.graph.setShadowVisible("1"==c.getAttribute("shadow"),!1);if(b=c.getAttribute("extFonts"))try{for(b=b.split("|").map(function(a){a=a.split("^");return{name:a[0],url:a[1]}}),e=0;e<b.length;e++)this.graph.addExtFont(b[e].name, b[e].url)}catch(P){console.log("ExtFonts format error: "+P.message)}}a.apply(this,arguments)}else throw{message:mxResources.get("notADiagramFile")||"Invalid data",toString:function(){return this.message}};};var b=Editor.prototype.getGraphXml;Editor.prototype.getGraphXml=function(a){a=null!=a?a:!0;var c=b.apply(this,arguments);null!=this.graph.currentStyle&&"default-style2"!=this.graph.currentStyle&&c.setAttribute("style",this.graph.currentStyle);null!=this.graph.backgroundImage&&c.setAttribute("backgroundImage", JSON.stringify(this.graph.backgroundImage));c.setAttribute("math",this.graph.mathEnabled?"1":"0");c.setAttribute("shadow",this.graph.shadowVisible?"1":"0");if(null!=this.graph.extFonts&&0<this.graph.extFonts.length){var e=this.graph.extFonts.map(function(a){return a.name+"^"+a.url});c.setAttribute("extFonts",e.join("|"))}return c};Editor.prototype.isDataSvg=function(a){try{var c=mxUtils.parseXml(a).documentElement.getAttribute("content");if(null!=c&&(null!=c&&"<"!=c.charAt(0)&&"%"!=c.charAt(0)&&(c= -unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c)),null!=c&&0<c.length)){var b=mxUtils.parseXml(c).documentElement;return"mxfile"==b.nodeName||"mxGraphModel"==b.nodeName}}catch(I){}return!1};Editor.prototype.extractGraphModel=function(a,c){return Editor.extractGraphModel.apply(this,arguments)};var f=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0= +unescape(window.atob?atob(c):Base64.decode(cont,c))),null!=c&&"%"==c.charAt(0)&&(c=decodeURIComponent(c)),null!=c&&0<c.length)){var b=mxUtils.parseXml(c).documentElement;return"mxfile"==b.nodeName||"mxGraphModel"==b.nodeName}}catch(G){}return!1};Editor.prototype.extractGraphModel=function(a,c){return Editor.extractGraphModel.apply(this,arguments)};var f=Editor.prototype.resetGraph;Editor.prototype.resetGraph=function(){this.graph.mathEnabled="1"==urlParams.math;this.graph.view.x0=null;this.graph.view.y0= null;mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath?!0:this.originalNoForeignObject;this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform();f.apply(this,arguments)};var d=Editor.prototype.updateGraphComponents;Editor.prototype.updateGraphComponents=function(){d.apply(this,arguments);mxClient.NO_FO=this.graph.mathEnabled&&!this.useForeignObjectForMath&&null!=Editor.MathJaxRender?!0:this.originalNoForeignObject; this.graph.useCssTransforms=!mxClient.NO_FO&&this.isChromelessView()&&this.graph.isCssTransformsSupported();this.graph.updateCssTransform()};Editor.initMath=function(a,c){a=null!=a?a:DRAW_MATH_URL+"/MathJax.js?config=TeX-MML-AM_HTMLorMML";Editor.mathJaxQueue=[];Editor.doMathJaxRender=function(a){window.setTimeout(function(){"hidden"!=a.style.visibility&&MathJax.Hub.Queue(["Typeset",MathJax.Hub,a])},0)};window.MathJax={skipStartupTypeset:!0,showMathMenu:!1,messageStyle:"none",AuthorInit:function(){MathJax.Hub.Config(c|| {jax:["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS"],extensions:["tex2jax.js","mml2jax.js","asciimath2jax.js"],"HTML-CSS":{imageFont:null},TeX:{extensions:["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]},tex2jax:{ignoreClass:"mxCellEditor"},asciimath2jax:{ignoreClass:"mxCellEditor"}});MathJax.Hub.Register.StartupHook("Begin",function(){for(var a=0;a<Editor.mathJaxQueue.length;a++)Editor.doMathJaxRender(Editor.mathJaxQueue[a])})}};Editor.MathJaxRender=function(a){"undefined"!== @@ -2867,28 +2868,28 @@ document.createElement("script");d.type="text/javascript";d.src=a;e[0].parentNod function(a,b,e,d){void 0!==b?c.push(b.replace(/\\'/g,"'")):void 0!==e?c.push(e.replace(/\\"/g,'"')):void 0!==d&&c.push(d);return""});/,\s*$/.test(a)&&c.push("");return c};Editor.prototype.isCorsEnabledForUrl=function(a){if(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp)return!0;null!=urlParams.cors&&null==this.corsRegExp&&(this.corsRegExp=new RegExp(decodeURIComponent(urlParams.cors)));return null!=this.corsRegExp&&this.corsRegExp.test(a)||"https://raw.githubusercontent.com/"===a.substring(0,34)|| "https://cdn.rawgit.com/"===a.substring(0,23)||"https://rawgit.com/"===a.substring(0,19)||/^https?:\/\/[^\/]*\.blob.core.windows.net\//.test(a)||/^https?:\/\/[^\/]*\.iconfinder.com\//.test(a)||/^https?:\/\/[^\/]*\.draw\.io\/proxy/.test(a)||/^https?:\/\/[^\/]*\.github\.io\//.test(a)};Editor.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var c=a.convert,b=this;a.convert=function(e){if(null!=e){var d="http://"==e.substring(0,7)||"https://"==e.substring(0,8);d&& !navigator.onLine?e=EditorUi.prototype.svgBrokenImage.src:!d||e.substring(0,a.baseUrl.length)==a.baseUrl||EditorUi.prototype.crossOriginImages&&b.isCorsEnabledForUrl(e)?"chrome-extension://"==e.substring(0,19)||mxClient.IS_CHROMEAPP||(e=c.apply(this,arguments)):e=PROXY_URL+"?url="+encodeURIComponent(e)}return e};return a};Editor.prototype.createSvgDataUri=function(a){return"data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(a)))};Editor.prototype.convertImageToDataUri=function(a,c){if(/(\.svg)$/i.test(a))mxUtils.get(a, -mxUtils.bind(this,function(a){c(this.createSvgDataUri(a.getText()))}),function(){c(EditorUi.prototype.svgBrokenImage.src)});else{var b=new Image;EditorUi.prototype.crossOriginImages&&(b.crossOrigin="anonymous");b.onload=function(){var a=document.createElement("canvas"),e=a.getContext("2d");a.height=b.height;a.width=b.width;e.drawImage(b,0,0);try{c(a.toDataURL())}catch(D){c(EditorUi.prototype.svgBrokenImage.src)}};b.onerror=function(){c(EditorUi.prototype.svgBrokenImage.src)};b.src=a}};Editor.prototype.convertImages= -function(a,c,b,e){null==e&&(e=this.createImageUrlConverter());var d=0,k=b||{};b=mxUtils.bind(this,function(b,g){for(var f=a.getElementsByTagName(b),n=0;n<f.length;n++)mxUtils.bind(this,function(b){var f=e.convert(b.getAttribute(g));if(null!=f&&"data:"!=f.substring(0,5)){var n=k[f];null==n?(d++,this.convertImageToDataUri(f,function(e){null!=e&&(k[f]=e,b.setAttribute(g,e));d--;0==d&&c(a)})):b.setAttribute(g,n)}else null!=f&&b.setAttribute(g,f)})(f[n])});b("image","xlink:href");b("img","src");0==d&& -c(a)};Editor.prototype.base64Encode=function(a){for(var c="",b=0,e=a.length,d,k,g;b<e;){d=a.charCodeAt(b++)&255;if(b==e){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4);c+="==";break}k=a.charCodeAt(b++);if(b==e){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<< -4|(k&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2);c+="=";break}g=a.charCodeAt(b++);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4|(k&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((k&15)<<2|(g&192)>>6);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(g&63)}return c}; -Editor.prototype.loadUrl=function(a,c,b,e,d,k){try{var g=e||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);d=null!=d?d:!0;var f=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=c){var e=a.getText();if(g){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var e=Array(a.length), -d=0;d<a.length;d++)e[d]=String.fromCharCode(a[d]);e=e.join("")}k=null!=k?k:"data:image/png;base64,";e=k+this.base64Encode(e)}c(e)}}else null!=b&&b({code:App.ERROR_UNKNOWN},a)}),function(){null!=b&&b({code:App.ERROR_UNKNOWN})},g,this.timeout,function(){d&&null!=b&&b({code:App.ERROR_TIMEOUT,retry:f})})});f()}catch(U){null!=b&&b(U)}};Editor.prototype.loadFonts=function(a){if(null!=this.fontCss&&null==this.resolvedFontCss){var c=function(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$", -"g"),"")},b=this.fontCss.split("url("),e=0,d={},k=mxUtils.bind(this,function(){if(0==e){for(var k=[b[0]],g=1;g<b.length;g++){var f=b[g].indexOf(")");k.push('url("');k.push(d[c(b[g].substring(0,f))]);k.push('"'+b[g].substring(f))}this.resolvedFontCss=k.join("");a()}});if(0<b.length)for(var g=1;g<b.length;g++){var f=b[g].indexOf(")"),n=null,q=b[g].indexOf("format(",f);0<q&&(n=c(b[g].substring(q+7,b[g].indexOf(")",q))));mxUtils.bind(this,function(a){if(null==d[a]){d[a]=a;e++;var c="application/x-font-ttf"; +mxUtils.bind(this,function(a){c(this.createSvgDataUri(a.getText()))}),function(){c(EditorUi.prototype.svgBrokenImage.src)});else{var b=new Image;EditorUi.prototype.crossOriginImages&&(b.crossOrigin="anonymous");b.onload=function(){var a=document.createElement("canvas"),e=a.getContext("2d");a.height=b.height;a.width=b.width;e.drawImage(b,0,0);try{c(a.toDataURL())}catch(E){c(EditorUi.prototype.svgBrokenImage.src)}};b.onerror=function(){c(EditorUi.prototype.svgBrokenImage.src)};b.src=a}};Editor.prototype.convertImages= +function(a,c,b,e){null==e&&(e=this.createImageUrlConverter());var d=0,g=b||{};b=mxUtils.bind(this,function(b,k){for(var f=a.getElementsByTagName(b),n=0;n<f.length;n++)mxUtils.bind(this,function(b){var f=e.convert(b.getAttribute(k));if(null!=f&&"data:"!=f.substring(0,5)){var n=g[f];null==n?(d++,this.convertImageToDataUri(f,function(e){null!=e&&(g[f]=e,b.setAttribute(k,e));d--;0==d&&c(a)})):b.setAttribute(k,n)}else null!=f&&b.setAttribute(k,f)})(f[n])});b("image","xlink:href");b("img","src");0==d&& +c(a)};Editor.prototype.base64Encode=function(a){for(var c="",b=0,e=a.length,d,g,k;b<e;){d=a.charCodeAt(b++)&255;if(b==e){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4);c+="==";break}g=a.charCodeAt(b++);if(b==e){c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<< +4|(g&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2);c+="=";break}k=a.charCodeAt(b++);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(d>>2);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((d&3)<<4|(g&240)>>4);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2|(k&192)>>6);c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k&63)}return c}; +Editor.prototype.loadUrl=function(a,c,b,e,d,g){try{var k=e||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a);d=null!=d?d:!0;var f=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=c){var e=a.getText();if(k){if((9==document.documentMode||10==document.documentMode)&&"undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var e=Array(a.length), +d=0;d<a.length;d++)e[d]=String.fromCharCode(a[d]);e=e.join("")}g=null!=g?g:"data:image/png;base64,";e=g+this.base64Encode(e)}c(e)}}else null!=b&&b({code:App.ERROR_UNKNOWN},a)}),function(){null!=b&&b({code:App.ERROR_UNKNOWN})},k,this.timeout,function(){d&&null!=b&&b({code:App.ERROR_TIMEOUT,retry:f})})});f()}catch(U){null!=b&&b(U)}};Editor.prototype.loadFonts=function(a){if(null!=this.fontCss&&null==this.resolvedFontCss){var c=function(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$", +"g"),"")},b=this.fontCss.split("url("),e=0,d={},g=mxUtils.bind(this,function(){if(0==e){for(var g=[b[0]],k=1;k<b.length;k++){var f=b[k].indexOf(")");g.push('url("');g.push(d[c(b[k].substring(0,f))]);g.push('"'+b[k].substring(f))}this.resolvedFontCss=g.join("");a()}});if(0<b.length)for(var k=1;k<b.length;k++){var f=b[k].indexOf(")"),n=null,q=b[k].indexOf("format(",f);0<q&&(n=c(b[k].substring(q+7,b[k].indexOf(")",q))));mxUtils.bind(this,function(a){if(null==d[a]){d[a]=a;e++;var c="application/x-font-ttf"; if("svg"==n||/(\.svg)($|\?)/i.test(a))c="image/svg+xml";else if("otf"==n||"embedded-opentype"==n||/(\.otf)($|\?)/i.test(a))c="application/x-font-opentype";else if("woff"==n||/(\.woff)($|\?)/i.test(a))c="application/font-woff";else if("woff2"==n||/(\.woff2)($|\?)/i.test(a))c="application/font-woff2";else if("eot"==n||/(\.eot)($|\?)/i.test(a))c="application/vnd.ms-fontobject";else if("sfnt"==n||/(\.sfnt)($|\?)/i.test(a))c="application/font-sfnt";var b=a;/^https?:\/\//.test(b)&&!this.isCorsEnabledForUrl(b)&& -(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(c){d[a]=c;e--;k()}),mxUtils.bind(this,function(a){e--;k()}),!0,null,"data:"+c+";charset=utf-8;base64,")}})(c(b[g].substring(0,f)),n)}}else a()};Editor.prototype.addMathCss=function(a){a=a.getElementsByTagName("defs");if(null!=a&&0<a.length)for(var c=document.getElementsByTagName("style"),b=0;b<c.length;b++)0<mxUtils.getTextContent(c[b]).indexOf("MathJax")&&a[0].appendChild(c[b].cloneNode(!0))};Editor.prototype.addFontCss= +(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(c){d[a]=c;e--;g()}),mxUtils.bind(this,function(a){e--;g()}),!0,null,"data:"+c+";charset=utf-8;base64,")}})(c(b[k].substring(0,f)),n)}}else a()};Editor.prototype.addMathCss=function(a){a=a.getElementsByTagName("defs");if(null!=a&&0<a.length)for(var c=document.getElementsByTagName("style"),b=0;b<c.length;b++)0<mxUtils.getTextContent(c[b]).indexOf("MathJax")&&a[0].appendChild(c[b].cloneNode(!0))};Editor.prototype.addFontCss= function(a,c){c=null!=c?c:this.fontCss;if(null!=c){var b=a.getElementsByTagName("defs"),e=a.ownerDocument;0==b.length?(b=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=a.firstChild?a.insertBefore(b,a.firstChild):a.appendChild(b)):b=b[0];e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"style"):e.createElement("style");e.setAttribute("type","text/css");mxUtils.setTextContent(e,c);b.appendChild(e)}};Editor.prototype.isExportToCanvas= -function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport&&(!this.graph.mathEnabled||!mxClient.IS_SF&&!((mxClient.IS_GC||mxClient.IS_EDGE)&&!mxClient.IS_MAC))};Editor.prototype.exportToCanvas=function(a,c,b,e,d,k,g,f,n,q,t,l,x,y){k=null!=k?k:!0;l=null!=l?l:this.graph;x=null!=x?x:0;var v=n?null:l.background;v==mxConstants.NONE&&(v=null);null==v&&(v=e);null==v&&0==n&&(v=this.graph.defaultPageBackgroundColor);this.convertImages(l.getSvg(v,null,null,y,null,null!=g?g:!0,null,null,null,q),mxUtils.bind(this, -function(b){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var g=document.createElement("canvas"),n=parseInt(b.getAttribute("width")),q=parseInt(b.getAttribute("height"));f=null!=f?f:1;null!=c&&(f=k?Math.min(1,Math.min(3*c/(4*q),c/n)):c/n);n=Math.ceil(f*n)+2*x;q=Math.ceil(f*q)+2*x;g.setAttribute("width",n);g.setAttribute("height",q);var t=g.getContext("2d");null!=v&&(t.beginPath(),t.rect(0,0,n,q),t.fillStyle=v,t.fill());t.scale(f,f);mxClient.IS_SF?window.setTimeout(function(){t.drawImage(e, -x/f,x/f);a(g)},0):(t.drawImage(e,x/f,x/f),a(g))}catch(aa){null!=d&&d(aa)}});e.onerror=function(a){null!=d&&d(a)};try{q&&this.graph.addSvgShadow(b);var g=mxUtils.bind(this,function(){if(null!=this.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.resolvedFontCss;b.getElementsByTagName("defs")[0].appendChild(a)}l.mathEnabled&&this.addMathCss(b);e.src=this.createSvgDataUri(mxUtils.getXml(b))});this.loadFonts(g)}catch(T){null!=d&&d(T)}}),b,t)};Editor.prototype.writeGraphModelToPng= -function(a,c,b,e,d){function k(a,c){var b=n;n+=c;return a.substring(b,n)}function g(a){a=k(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function f(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var n=0;if(k(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(k(a,4),"IHDR"!=k(a,4))null!=d&&d();else{k(a,17);d=a.substring(0, -n);do{var q=g(a);if("IDAT"==k(a,4)){d=a.substring(0,n-8);b=b+String.fromCharCode(0)+("zTXt"==c?String.fromCharCode(0):"")+e;e=4294967295;e=EditorUi.prototype.updateCRC(e,c,0,4);e=EditorUi.prototype.updateCRC(e,b,0,b.length);d+=f(b.length)+c+b+f(e^4294967295);d+=a.substring(n-8,a.length);break}d+=a.substring(n-8,n-4+q);k(a,q);k(a,4)}while(q);return"data:image/png;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://desk.draw.io/support/solutions/articles/16000091426"; +function(){return mxClient.IS_CHROMEAPP||this.useCanvasForExport&&(!this.graph.mathEnabled||!mxClient.IS_SF&&!((mxClient.IS_GC||mxClient.IS_EDGE)&&!mxClient.IS_MAC))};Editor.prototype.exportToCanvas=function(a,c,b,e,d,g,k,f,n,q,v,l,x,y){g=null!=g?g:!0;l=null!=l?l:this.graph;x=null!=x?x:0;var t=n?null:l.background;t==mxConstants.NONE&&(t=null);null==t&&(t=e);null==t&&0==n&&(t=this.graph.defaultPageBackgroundColor);this.convertImages(l.getSvg(t,null,null,y,null,null!=k?k:!0,null,null,null,q),mxUtils.bind(this, +function(b){var e=new Image;e.onload=mxUtils.bind(this,function(){try{var k=document.createElement("canvas"),n=parseInt(b.getAttribute("width")),q=parseInt(b.getAttribute("height"));f=null!=f?f:1;null!=c&&(f=g?Math.min(1,Math.min(3*c/(4*q),c/n)):c/n);n=Math.ceil(f*n)+2*x;q=Math.ceil(f*q)+2*x;k.setAttribute("width",n);k.setAttribute("height",q);var v=k.getContext("2d");null!=t&&(v.beginPath(),v.rect(0,0,n,q),v.fillStyle=t,v.fill());v.scale(f,f);mxClient.IS_SF?window.setTimeout(function(){v.drawImage(e, +x/f,x/f);a(k)},0):(v.drawImage(e,x/f,x/f),a(k))}catch(aa){null!=d&&d(aa)}});e.onerror=function(a){null!=d&&d(a)};try{q&&this.graph.addSvgShadow(b);var k=mxUtils.bind(this,function(){if(null!=this.resolvedFontCss){var a=document.createElement("style");a.setAttribute("type","text/css");a.innerHTML=this.resolvedFontCss;b.getElementsByTagName("defs")[0].appendChild(a)}l.mathEnabled&&this.addMathCss(b);e.src=this.createSvgDataUri(mxUtils.getXml(b))});this.loadFonts(k)}catch(T){null!=d&&d(T)}}),b,v)};Editor.prototype.writeGraphModelToPng= +function(a,c,b,e,d){function g(a,c){var b=n;n+=c;return a.substring(b,n)}function k(a){a=g(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function f(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+1);a=window.atob?atob(a):Base64.decode(a,!0);var n=0;if(g(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(g(a,4),"IHDR"!=g(a,4))null!=d&&d();else{g(a,17);d=a.substring(0, +n);do{var q=k(a);if("IDAT"==g(a,4)){d=a.substring(0,n-8);b=b+String.fromCharCode(0)+("zTXt"==c?String.fromCharCode(0):"")+e;e=4294967295;e=EditorUi.prototype.updateCRC(e,c,0,4);e=EditorUi.prototype.updateCRC(e,b,0,b.length);d+=f(b.length)+c+b+f(e^4294967295);d+=a.substring(n-8,a.length);break}d+=a.substring(n-8,n-4+q);g(a,q);g(a,4)}while(q);return"data:image/png;base64,"+(window.btoa?btoa(d):Base64.encode(d,!0))}};if(window.ColorDialog){FilenameDialog.filenameHelpLink="https://desk.draw.io/support/solutions/articles/16000091426"; var l=ColorDialog.addRecentColor;ColorDialog.addRecentColor=function(a,c){l.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()};var m=ColorDialog.resetRecentColors;ColorDialog.resetRecentColors=function(){m.apply(this,arguments);mxSettings.setRecentColors(ColorDialog.recentColors);mxSettings.save()}}window.EditDataDialog&&(EditDataDialog.getDisplayIdForCell=function(a,c){var b=null;null!=a.editor.graph.getModel().getParent(c)?b=c.getId():null!=a.currentPage&& (b=a.currentPage.getId());return b});if(null!=window.StyleFormatPanel){var p=Format.prototype.init;Format.prototype.init=function(){p.apply(this,arguments);this.editorUi.editor.addListener("fileLoaded",this.update)};var u=Format.prototype.refresh;Format.prototype.refresh=function(){null!=this.editorUi.getCurrentFile()||"1"==urlParams.embed||this.editorUi.editor.chromeless?u.apply(this,arguments):this.clear()};DiagramFormatPanel.prototype.isShadowOptionVisible=function(){var a=this.editorUi.getCurrentFile(); -return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var z=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(a){a=z.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var c=this.editorUi,b=c.editor.graph,e=this.createOption(mxResources.get("shadow"),function(){return b.shadowVisible},function(a){var e=new ChangePageSetup(c);e.ignoreColor=!0;e.ignoreImage= +return"1"==urlParams.embed||null!=a&&a.isEditable()};DiagramFormatPanel.prototype.isMathOptionVisible=function(a){return!1};var A=DiagramFormatPanel.prototype.addView;DiagramFormatPanel.prototype.addView=function(a){a=A.apply(this,arguments);this.editorUi.getCurrentFile();if(mxClient.IS_SVG&&this.isShadowOptionVisible()){var c=this.editorUi,b=c.editor.graph,e=this.createOption(mxResources.get("shadow"),function(){return b.shadowVisible},function(a){var e=new ChangePageSetup(c);e.ignoreColor=!0;e.ignoreImage= !0;e.shadowVisible=a;b.model.execute(e)},{install:function(a){this.listener=function(){a(b.shadowVisible)};c.addListener("shadowVisibleChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});Editor.shadowOptionEnabled||(e.getElementsByTagName("input")[0].setAttribute("disabled","disabled"),mxUtils.setOpacity(e,60));a.appendChild(e)}return a};var B=DiagramFormatPanel.prototype.addOptions;DiagramFormatPanel.prototype.addOptions=function(a){a=B.apply(this,arguments);var c=this.editorUi, b=c.editor.graph;if(b.isEnabled()){var e=c.getCurrentFile();if(null!=e&&e.isAutosaveOptional()){var d=this.createOption(mxResources.get("autosave"),function(){return c.editor.autosave},function(a){c.editor.setAutosave(a);c.editor.autosave&&e.isModified()&&e.fileChanged()},{install:function(a){this.listener=function(){a(c.editor.autosave)};c.editor.addListener("autosaveChanged",this.listener)},destroy:function(){c.editor.removeListener(this.listener)}});a.appendChild(d)}}if(this.isMathOptionVisible()&& -b.isEnabled()&&"undefined"!==typeof MathJax){d=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return b.mathEnabled},function(a){c.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(b.mathEnabled)};c.addListener("mathEnabledChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});d.style.paddingTop="5px";a.appendChild(d);var k=c.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875"); -k.style.position="relative";k.style.marginLeft="6px";k.style.top="2px";d.appendChild(k)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties= +b.isEnabled()&&"undefined"!==typeof MathJax){d=this.createOption(mxResources.get("mathematicalTypesetting"),function(){return b.mathEnabled},function(a){c.actions.get("mathematicalTypesetting").funct()},{install:function(a){this.listener=function(){a(b.mathEnabled)};c.addListener("mathEnabledChanged",this.listener)},destroy:function(){c.removeListener(this.listener)}});d.style.paddingTop="5px";a.appendChild(d);var g=c.menus.createHelpLink("https://desk.draw.io/support/solutions/articles/16000032875"); +g.style.position="relative";g.style.marginLeft="6px";g.style.top="2px";d.appendChild(g)}return a};mxCellRenderer.prototype.defaultVertexShape.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"absoluteArcSize",dispName:"Abs. Arc Size",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.link.prototype.customProperties=[{name:"width",dispName:"Width",type:"float",min:0,defVal:4}];mxCellRenderer.defaultShapes.flexArrow.prototype.customProperties= [{name:"width",dispName:"Width",type:"float",min:0,defVal:10},{name:"startWidth",dispName:"Start Width",type:"float",min:0,defVal:20},{name:"endWidth",dispName:"End Width",type:"float",min:0,defVal:20}];mxCellRenderer.defaultShapes.process.prototype.customProperties=[{name:"size",dispName:"Indent",type:"float",min:0,max:.5,defVal:.1}];mxCellRenderer.defaultShapes.rhombus.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,max:50,defVal:mxConstants.LINE_ARCSIZE},{name:"double", dispName:"Double",type:"bool",defVal:!1}];mxCellRenderer.defaultShapes.partialRectangle.prototype.customProperties=[{name:"top",dispName:"Top Line",type:"bool",defVal:!0},{name:"bottom",dispName:"Bottom Line",type:"bool",defVal:!0},{name:"left",dispName:"Left Line",type:"bool",defVal:!0},{name:"right",dispName:"Right Line",type:"bool",defVal:!0}];mxCellRenderer.defaultShapes.parallelogram.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}, {name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.2}];mxCellRenderer.defaultShapes.hexagon.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE},{name:"size",dispName:"Slope Angle",type:"float",min:0,max:1,defVal:.25}];mxCellRenderer.defaultShapes.triangle.prototype.customProperties=[{name:"arcSize",dispName:"Arc Size",type:"float",min:0,defVal:mxConstants.LINE_ARCSIZE}];mxCellRenderer.defaultShapes.document.prototype.customProperties= @@ -2909,61 +2910,61 @@ defVal:"none",enumList:[{val:"none",dispName:"Default"},{val:"umlActor",dispName font:"#ffffff"},{fill:"#aa00ff",stroke:"#7700CC",font:"#ffffff"},{fill:"#d80073",stroke:"#A50040",font:"#ffffff"},{fill:"#a20025",stroke:"#6F0000",font:"#ffffff"}],[{fill:"#e51400",stroke:"#B20000",font:"#ffffff"},{fill:"#fa6800",stroke:"#C73500",font:"#ffffff"},{fill:"#f0a30a",stroke:"#BD7000",font:"#ffffff"},{fill:"#e3c800",stroke:"#B09500",font:"#ffffff"},{fill:"#6d8764",stroke:"#3A5431",font:"#ffffff"},{fill:"#647687",stroke:"#314354",font:"#ffffff"},{fill:"#76608a",stroke:"#432D57",font:"#ffffff"}, {fill:"#a0522d",stroke:"#6D1F00",font:"#ffffff"}],[{fill:"",stroke:""},{fill:mxConstants.NONE,stroke:""},{fill:"#fad7ac",stroke:"#b46504"},{fill:"#fad9d5",stroke:"#ae4132"},{fill:"#b0e3e6",stroke:"#0e8088"},{fill:"#b1ddf0",stroke:"#10739e"},{fill:"#d0cee2",stroke:"#56517e"},{fill:"#bac8d3",stroke:"#23445d"}],[{fill:"",stroke:""},{fill:"#f5f5f5",stroke:"#666666",gradient:"#b3b3b3"},{fill:"#dae8fc",stroke:"#6c8ebf",gradient:"#7ea6e0"},{fill:"#d5e8d4",stroke:"#82b366",gradient:"#97d077"},{fill:"#ffcd28", stroke:"#d79b00",gradient:"#ffa500"},{fill:"#fff2cc",stroke:"#d6b656",gradient:"#ffd966"},{fill:"#f8cecc",stroke:"#b85450",gradient:"#ea6b66"},{fill:"#e6d0de",stroke:"#996185",gradient:"#d5739d"}],[{fill:"",stroke:""},{fill:"#eeeeee",stroke:"#36393d"},{fill:"#f9f7ed",stroke:"#36393d"},{fill:"#ffcc99",stroke:"#36393d"},{fill:"#cce5ff",stroke:"#36393d"},{fill:"#ffff88",stroke:"#36393d"},{fill:"#cdeb8b",stroke:"#36393d"},{fill:"#ffcccc",stroke:"#36393d"}]];StyleFormatPanel.prototype.customColorSchemes= -null;StyleFormatPanel.prototype.findCommonProperties=function(a,c,b){if(null!=c){var e=function(a){if(null!=a)if(b)for(var e=0;e<a.length;e++)c[a[e].name]=a[e];else for(var d in c){for(var k=!1,e=0;e<a.length;e++)if(a[e].name==d&&a[e].type==c[d].type){k=!0;break}k||delete c[d]}},d=this.editorUi.editor.graph.view.getState(a);null!=d&&null!=d.shape&&(d.shape.commonCustomPropAdded||(d.shape.commonCustomPropAdded=!0,d.shape.customProperties=d.shape.customProperties||[],d.cell.vertex?Array.prototype.push.apply(d.shape.customProperties, -Editor.commonVertexProperties):Array.prototype.push.apply(d.shape.customProperties,Editor.commonEdgeProperties)),e(d.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{e(JSON.parse(a))}catch(D){}}};var c=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"==a.style.shape||a.containsLabel||this.container.appendChild(this.addStyles(this.createPanel()));c.apply(this,arguments);if(Editor.enableCustomProperties){for(var b= -{},e=a.vertices,d=a.edges,k=0;k<e.length;k++)this.findCommonProperties(e[k],b,0==k);for(k=0;k<d.length;k++)this.findCommonProperties(d[k],b,0==e.length&&0==k);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var e=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var c=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("copyStyle").funct()})); +null;StyleFormatPanel.prototype.findCommonProperties=function(a,c,b){if(null!=c){var e=function(a){if(null!=a)if(b)for(var e=0;e<a.length;e++)c[a[e].name]=a[e];else for(var d in c){for(var g=!1,e=0;e<a.length;e++)if(a[e].name==d&&a[e].type==c[d].type){g=!0;break}g||delete c[d]}},d=this.editorUi.editor.graph.view.getState(a);null!=d&&null!=d.shape&&(d.shape.commonCustomPropAdded||(d.shape.commonCustomPropAdded=!0,d.shape.customProperties=d.shape.customProperties||[],d.cell.vertex?Array.prototype.push.apply(d.shape.customProperties, +Editor.commonVertexProperties):Array.prototype.push.apply(d.shape.customProperties,Editor.commonEdgeProperties)),e(d.shape.customProperties));a=a.getAttribute("customProperties");if(null!=a)try{e(JSON.parse(a))}catch(E){}}};var c=StyleFormatPanel.prototype.init;StyleFormatPanel.prototype.init=function(){var a=this.format.createSelectionState();"image"==a.style.shape||a.containsLabel||this.container.appendChild(this.addStyles(this.createPanel()));c.apply(this,arguments);if(Editor.enableCustomProperties){for(var b= +{},e=a.vertices,d=a.edges,g=0;g<e.length;g++)this.findCommonProperties(e[g],b,0==g);for(g=0;g<d.length;g++)this.findCommonProperties(d[g],b,0==e.length&&0==g);null!=Object.getOwnPropertyNames&&0<Object.getOwnPropertyNames(b).length&&this.container.appendChild(this.addProperties(this.createPanel(),b,a))}};var e=StyleFormatPanel.prototype.addStyleOps;StyleFormatPanel.prototype.addStyleOps=function(a){var c=mxUtils.button(mxResources.get("copyStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("copyStyle").funct()})); c.setAttribute("title",mxResources.get("copyStyle")+" ("+this.editorUi.actions.get("copyStyle").shortcut+")");c.style.marginBottom="2px";c.style.width="100px";c.style.marginRight="2px";a.appendChild(c);c=mxUtils.button(mxResources.get("pasteStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("pasteStyle").funct()}));c.setAttribute("title",mxResources.get("pasteStyle")+" ("+this.editorUi.actions.get("pasteStyle").shortcut+")");c.style.marginBottom="2px";c.style.width="100px";a.appendChild(c); -mxUtils.br(a);return e.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,c,b){function e(a,c,b,e){l.getModel().beginUpdate();try{var d=[],k=[];if(null!=b.index){for(var g=[],f=b.parentRow.nextSibling;f&&f.getAttribute("data-pName")==a;)g.push(f.getAttribute("data-pValue")),f=f.nextSibling;b.index<g.length?null!=e?g.splice(e,1):g[b.index]=c:g.push(c);null!=b.size&&g.length>b.size&&(g=g.slice(0,b.size));c=g.join(",");null!=b.countProperty&& -(l.setCellStyles(b.countProperty,g.length,l.getSelectionCells()),d.push(b.countProperty),k.push(g.length))}l.setCellStyles(a,c,l.getSelectionCells());d.push(a);k.push(c);if(null!=b.dependentProps)for(a=0;a<b.dependentProps.length;a++){var n=b.dependentPropsDefVal[a],q=b.dependentPropsVals[a];if(q.length>c)q=q.slice(0,c);else for(var x=q.length;x<c;x++)q.push(n);q=q.join(",");l.setCellStyles(b.dependentProps[a],q,l.getSelectionCells());d.push(b.dependentProps[a]);k.push(q)}if("function"==typeof b.onChange)b.onChange(l, -c);t.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",k,"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}}function d(c,b,e){var d=mxUtils.getOffset(a,!0),k=mxUtils.getOffset(c,!0);b.style.position="absolute";b.style.left=k.x-d.x+"px";b.style.top=k.y-d.y+"px";b.style.width=c.offsetWidth+"px";b.style.height=c.offsetHeight-(e?4:0)+"px";b.style.zIndex=5}function k(a,c,b){var d=document.createElement("div");d.style.width="32px";d.style.height="4px";d.style.margin="2px"; -d.style.border="1px solid black";d.style.background=c&&"none"!=c?c:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(t,function(k){this.editorUi.pickColor(c,function(c){d.style.background="none"==c?"url('"+Dialog.prototype.noColorImage+"')":c;e(a,c,b)});mxEvent.consume(k)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function g(a,c,b,d,k,g,f){null!=c&&(c=c.split(","),x.push({name:a,values:c,type:b,defVal:d,countProperty:k, -parentRow:g,isDeletable:!0,flipBkg:f}));btn=mxUtils.button("+",mxUtils.bind(t,function(c){for(var n=g,t=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==a)n=n.nextSibling,t++;else break;var l={type:b,parentRow:g,index:t,isDeletable:!0,defVal:d,countProperty:k},t=q(a,"",l,0==t%2,f);e(a,d,l);n.parentNode.insertBefore(t,n.nextSibling);mxEvent.consume(c)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function f(a,c,b,e,d,k,g){if(0<d){var f=Array(d); -c=null!=c?c.split(","):[];for(var n=0;n<d;n++)f[n]=null!=c[n]?c[n]:null!=e?e:"";x.push({name:a,values:f,type:b,defVal:e,parentRow:k,flipBkg:g,size:d})}return document.createElement("div")}function n(a,c,b){var d=document.createElement("input");d.type="checkbox";d.checked="1"==c;mxEvent.addListener(d,"change",function(){e(a,d.checked?"1":"0",b)});return d}function q(c,b,q,l,x){var v=q.dispName,y=q.type,A=document.createElement("tr");A.className="gePropRow"+(x?"Dark":"")+(l?"Alt":"")+" gePropNonHeaderRow"; -A.setAttribute("data-pName",c);A.setAttribute("data-pValue",b);l=!1;null!=q.index&&(A.setAttribute("data-index",q.index),v=(null!=v?v:"")+"["+q.index+"]",l=!0);var m=document.createElement("td");m.className="gePropRowCell";m.innerHTML=mxUtils.htmlEntities(mxResources.get(v,null,v));l&&(m.style.textAlign="right");A.appendChild(m);m=document.createElement("td");m.className="gePropRowCell";if("color"==y)m.appendChild(k(c,b,q));else if("bool"==y||"boolean"==y)m.appendChild(n(c,b,q));else if("enum"==y){var E= -q.enumList;for(x=0;x<E.length;x++)if(v=E[x],v.val==b){m.innerHTML=mxUtils.htmlEntities(mxResources.get(v.dispName,null,v.dispName));break}mxEvent.addListener(m,"click",mxUtils.bind(t,function(){var k=document.createElement("select");d(m,k);for(var g=0;g<E.length;g++){var f=E[g],n=document.createElement("option");n.value=mxUtils.htmlEntities(f.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(f.dispName,null,f.dispName));k.appendChild(n)}k.value=b;a.appendChild(k);mxEvent.addListener(k,"change", -function(){var a=mxUtils.htmlEntities(k.value);e(c,a,q)});k.focus();mxEvent.addListener(k,"blur",function(){a.removeChild(k)})}))}else"dynamicArr"==y?m.appendChild(g(c,b,q.subType,q.subDefVal,q.countProperty,A,x)):"staticArr"==y?m.appendChild(f(c,b,q.subType,q.subDefVal,q.size,A,x)):(m.innerHTML=b,mxEvent.addListener(m,"click",mxUtils.bind(t,function(){function k(){var a=g.value,a=0==a.length&&"string"!=y?0:a;q.allowAuto&&(null!=a.trim&&"auto"==a.trim().toLowerCase()?(a="auto",y="string"):(a=parseFloat(a), -a=isNaN(a)?0:a));null!=q.min&&a<q.min?a=q.min:null!=q.max&&a>q.max&&(a=q.max);a=mxUtils.htmlEntities(("int"==y?parseInt(a):a)+"");e(c,a,q)}var g=document.createElement("input");d(m,g,!0);g.value=b;g.className="gePropEditor";"int"!=y&&"float"!=y||q.allowAuto||(g.type="number",g.step="int"==y?"1":"any",null!=q.min&&(g.min=parseFloat(q.min)),null!=q.max&&(g.max=parseFloat(q.max)));a.appendChild(g);mxEvent.addListener(g,"keypress",function(a){13==a.keyCode&&k()});g.focus();mxEvent.addListener(g,"blur", -function(){k()})})));q.isDeletable&&(x=mxUtils.button("-",mxUtils.bind(t,function(a){e(c,"",q,q.index);mxEvent.consume(a)})),x.style.height="16px",x.style.width="25px",x.style["float"]="right",x.className="geColorBtn",m.appendChild(x));A.appendChild(m);return A}var t=this,l=this.editorUi.editor.graph,x=[];a.style.position="relative";a.style.padding="0";var y=document.createElement("table");y.style.whiteSpace="nowrap";y.style.width="100%";var v=document.createElement("tr");v.className="gePropHeader"; -var A=document.createElement("th");A.className="gePropHeaderCell";var m=document.createElement("img");m.src=Sidebar.prototype.expandedImage;A.appendChild(m);mxUtils.write(A,mxResources.get("property"));v.style.cursor="pointer";var C=function(){var c=y.querySelectorAll(".gePropNonHeaderRow"),b;if(t.editorUi.propertiesCollapsed){m.src=Sidebar.prototype.collapsedImage;b="none";for(var e=a.childNodes.length-1;0<=e;e--)try{var d=a.childNodes[e],k=d.nodeName.toUpperCase();"INPUT"!=k&&"SELECT"!=k||a.removeChild(d)}catch(la){}}else m.src= -Sidebar.prototype.expandedImage,b="";for(e=0;e<c.length;e++)c[e].style.display=b};mxEvent.addListener(v,"click",function(){t.editorUi.propertiesCollapsed=!t.editorUi.propertiesCollapsed;C()});v.appendChild(A);A=document.createElement("th");A.className="gePropHeaderCell";A.innerHTML=mxResources.get("value");v.appendChild(A);y.appendChild(v);var p=!1,F=!1,J;for(J in c)if(v=c[J],"function"!=typeof v.isVisible||v.isVisible(b,this)){var H=null!=b.style[J]?mxUtils.htmlEntities(b.style[J]+""):v.defVal;if("separator"== -v.type)F=!F;else{if("staticArr"==v.type)v.size=parseInt(b.style[v.sizeProperty]||c[v.sizeProperty].defVal)||0;else if(null!=v.dependentProps){for(var u=v.dependentProps,M=[],z=[],A=0;A<u.length;A++){var B=b.style[u[A]];z.push(c[u[A]].subDefVal);M.push(null!=B?B.split(","):[])}v.dependentPropsDefVal=z;v.dependentPropsVals=M}y.appendChild(q(J,H,v,p,F));p=!p}}for(A=0;A<x.length;A++)for(v=x[A],c=v.parentRow,b=0;b<v.values.length;b++)J=q(v.name,v.values[b],{type:v.type,parentRow:v.parentRow,isDeletable:v.isDeletable, -index:b,defVal:v.defVal,countProperty:v.countProperty,size:v.size},0==b%2,v.flipBkg),c.parentNode.insertBefore(J,c.nextSibling),c=J;a.appendChild(y);C();return a};StyleFormatPanel.prototype.addStyles=function(a){function c(a){function c(a){var c=mxUtils.button("",function(c){e.getModel().beginUpdate();try{var b=e.getSelectionCells();for(c=0;c<b.length;c++){for(var d=e.getModel().getStyle(b[c]),g=0;g<k.length;g++)d=mxUtils.removeStylename(d,k[g]);var f=e.getModel().isVertex(b[c])?e.defaultVertexStyle: -e.defaultEdgeStyle;null!=a?(d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(f,mxConstants.STYLE_GRADIENTCOLOR,null)),d=""==a.fill?mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(f,mxConstants.STYLE_FILLCOLOR,null)),d=""==a.stroke?mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,a.stroke||mxUtils.getValue(f,mxConstants.STYLE_STROKECOLOR, -null)),e.getModel().isVertex(b[c])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(f,mxConstants.STYLE_FONTCOLOR,null)))):(d=mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(f,mxConstants.STYLE_FILLCOLOR,"#ffffff")),d=mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(f,mxConstants.STYLE_STROKECOLOR,"#000000")),d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(f,mxConstants.STYLE_GRADIENTCOLOR,null)),e.getModel().isVertex(b[c])&& -(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(f,mxConstants.STYLE_FONTCOLOR,null))));e.getModel().setStyle(b[c],d)}}finally{e.getModel().endUpdate()}});c.className="geStyleButton";c.style.width="36px";c.style.height="30px";c.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?c.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)": -c.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?c.style.background="url('"+Dialog.prototype.noColorImage+"')":c.style.backgroundColor=""==a.fill?mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"):a.fill||mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"),c.style.border=a.stroke==mxConstants.NONE?"1px solid transparent":""==a.stroke?"1px solid "+ -mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"):"1px solid "+(a.stroke||mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"));else{var b=mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),g=mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");c.style.backgroundColor=b;c.style.border="1px solid "+g}d.appendChild(c)}d.innerHTML="";for(var b= -0;b<a.length;b++)0<b&&0==mxUtils.mod(b,4)&&mxUtils.br(d),c(a[b])}function b(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var e=this.editorUi.editor.graph,d=document.createElement("div");d.style.whiteSpace="nowrap";d.style.paddingLeft="24px";d.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(d);var k="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" "); -null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var g=document.createElement("div");g.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; -mxEvent.addListener(g,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));var f=document.createElement("div");f.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);"; -1<this.defaultColorSchemes.length&&(a.appendChild(g),a.appendChild(f));mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));b(g);b(f);c(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var c=this.format.getSelectionState(),b=null;1==this.editorUi.editor.graph.getSelectionCount()&& +mxUtils.br(a);return e.apply(this,arguments)};EditorUi.prototype.propertiesCollapsed=!0;StyleFormatPanel.prototype.addProperties=function(a,c,b){function e(a,c,b,e){l.getModel().beginUpdate();try{var d=[],g=[];if(null!=b.index){for(var k=[],f=b.parentRow.nextSibling;f&&f.getAttribute("data-pName")==a;)k.push(f.getAttribute("data-pValue")),f=f.nextSibling;b.index<k.length?null!=e?k.splice(e,1):k[b.index]=c:k.push(c);null!=b.size&&k.length>b.size&&(k=k.slice(0,b.size));c=k.join(",");null!=b.countProperty&& +(l.setCellStyles(b.countProperty,k.length,l.getSelectionCells()),d.push(b.countProperty),g.push(k.length))}l.setCellStyles(a,c,l.getSelectionCells());d.push(a);g.push(c);if(null!=b.dependentProps)for(a=0;a<b.dependentProps.length;a++){var n=b.dependentPropsDefVal[a],q=b.dependentPropsVals[a];if(q.length>c)q=q.slice(0,c);else for(var t=q.length;t<c;t++)q.push(n);q=q.join(",");l.setCellStyles(b.dependentProps[a],q,l.getSelectionCells());d.push(b.dependentProps[a]);g.push(q)}if("function"==typeof b.onChange)b.onChange(l, +c);v.editorUi.fireEvent(new mxEventObject("styleChanged","keys",d,"values",g,"cells",l.getSelectionCells()))}finally{l.getModel().endUpdate()}}function d(c,b,e){var d=mxUtils.getOffset(a,!0),g=mxUtils.getOffset(c,!0);b.style.position="absolute";b.style.left=g.x-d.x+"px";b.style.top=g.y-d.y+"px";b.style.width=c.offsetWidth+"px";b.style.height=c.offsetHeight-(e?4:0)+"px";b.style.zIndex=5}function g(a,c,b){var d=document.createElement("div");d.style.width="32px";d.style.height="4px";d.style.margin="2px"; +d.style.border="1px solid black";d.style.background=c&&"none"!=c?c:"url('"+Dialog.prototype.noColorImage+"')";btn=mxUtils.button("",mxUtils.bind(v,function(g){this.editorUi.pickColor(c,function(c){d.style.background="none"==c?"url('"+Dialog.prototype.noColorImage+"')":c;e(a,c,b)});mxEvent.consume(g)}));btn.style.height="12px";btn.style.width="40px";btn.className="geColorBtn";btn.appendChild(d);return btn}function k(a,c,b,d,g,k,f){null!=c&&(c=c.split(","),t.push({name:a,values:c,type:b,defVal:d,countProperty:g, +parentRow:k,isDeletable:!0,flipBkg:f}));btn=mxUtils.button("+",mxUtils.bind(v,function(c){for(var n=k,v=0;null!=n.nextSibling;)if(n.nextSibling.getAttribute("data-pName")==a)n=n.nextSibling,v++;else break;var l={type:b,parentRow:k,index:v,isDeletable:!0,defVal:d,countProperty:g},v=q(a,"",l,0==v%2,f);e(a,d,l);n.parentNode.insertBefore(v,n.nextSibling);mxEvent.consume(c)}));btn.style.height="16px";btn.style.width="25px";btn.className="geColorBtn";return btn}function f(a,c,b,e,d,g,k){if(0<d){var f=Array(d); +c=null!=c?c.split(","):[];for(var n=0;n<d;n++)f[n]=null!=c[n]?c[n]:null!=e?e:"";t.push({name:a,values:f,type:b,defVal:e,parentRow:g,flipBkg:k,size:d})}return document.createElement("div")}function n(a,c,b){var d=document.createElement("input");d.type="checkbox";d.checked="1"==c;mxEvent.addListener(d,"change",function(){e(a,d.checked?"1":"0",b)});return d}function q(c,b,q,l,t){var x=q.dispName,y=q.type,z=document.createElement("tr");z.className="gePropRow"+(t?"Dark":"")+(l?"Alt":"")+" gePropNonHeaderRow"; +z.setAttribute("data-pName",c);z.setAttribute("data-pValue",b);l=!1;null!=q.index&&(z.setAttribute("data-index",q.index),x=(null!=x?x:"")+"["+q.index+"]",l=!0);var m=document.createElement("td");m.className="gePropRowCell";m.innerHTML=mxUtils.htmlEntities(mxResources.get(x,null,x));l&&(m.style.textAlign="right");z.appendChild(m);m=document.createElement("td");m.className="gePropRowCell";if("color"==y)m.appendChild(g(c,b,q));else if("bool"==y||"boolean"==y)m.appendChild(n(c,b,q));else if("enum"==y){var D= +q.enumList;for(t=0;t<D.length;t++)if(x=D[t],x.val==b){m.innerHTML=mxUtils.htmlEntities(mxResources.get(x.dispName,null,x.dispName));break}mxEvent.addListener(m,"click",mxUtils.bind(v,function(){var g=document.createElement("select");d(m,g);for(var k=0;k<D.length;k++){var f=D[k],n=document.createElement("option");n.value=mxUtils.htmlEntities(f.val);n.innerHTML=mxUtils.htmlEntities(mxResources.get(f.dispName,null,f.dispName));g.appendChild(n)}g.value=b;a.appendChild(g);mxEvent.addListener(g,"change", +function(){var a=mxUtils.htmlEntities(g.value);e(c,a,q)});g.focus();mxEvent.addListener(g,"blur",function(){a.removeChild(g)})}))}else"dynamicArr"==y?m.appendChild(k(c,b,q.subType,q.subDefVal,q.countProperty,z,t)):"staticArr"==y?m.appendChild(f(c,b,q.subType,q.subDefVal,q.size,z,t)):(m.innerHTML=b,mxEvent.addListener(m,"click",mxUtils.bind(v,function(){function g(){var a=k.value,a=0==a.length&&"string"!=y?0:a;q.allowAuto&&(null!=a.trim&&"auto"==a.trim().toLowerCase()?(a="auto",y="string"):(a=parseFloat(a), +a=isNaN(a)?0:a));null!=q.min&&a<q.min?a=q.min:null!=q.max&&a>q.max&&(a=q.max);a=mxUtils.htmlEntities(("int"==y?parseInt(a):a)+"");e(c,a,q)}var k=document.createElement("input");d(m,k,!0);k.value=b;k.className="gePropEditor";"int"!=y&&"float"!=y||q.allowAuto||(k.type="number",k.step="int"==y?"1":"any",null!=q.min&&(k.min=parseFloat(q.min)),null!=q.max&&(k.max=parseFloat(q.max)));a.appendChild(k);mxEvent.addListener(k,"keypress",function(a){13==a.keyCode&&g()});k.focus();mxEvent.addListener(k,"blur", +function(){g()})})));q.isDeletable&&(t=mxUtils.button("-",mxUtils.bind(v,function(a){e(c,"",q,q.index);mxEvent.consume(a)})),t.style.height="16px",t.style.width="25px",t.style["float"]="right",t.className="geColorBtn",m.appendChild(t));z.appendChild(m);return z}var v=this,l=this.editorUi.editor.graph,t=[];a.style.position="relative";a.style.padding="0";var x=document.createElement("table");x.style.whiteSpace="nowrap";x.style.width="100%";var y=document.createElement("tr");y.className="gePropHeader"; +var z=document.createElement("th");z.className="gePropHeaderCell";var m=document.createElement("img");m.src=Sidebar.prototype.expandedImage;z.appendChild(m);mxUtils.write(z,mxResources.get("property"));y.style.cursor="pointer";var C=function(){var c=x.querySelectorAll(".gePropNonHeaderRow"),b;if(v.editorUi.propertiesCollapsed){m.src=Sidebar.prototype.collapsedImage;b="none";for(var e=a.childNodes.length-1;0<=e;e--)try{var d=a.childNodes[e],g=d.nodeName.toUpperCase();"INPUT"!=g&&"SELECT"!=g||a.removeChild(d)}catch(la){}}else m.src= +Sidebar.prototype.expandedImage,b="";for(e=0;e<c.length;e++)c[e].style.display=b};mxEvent.addListener(y,"click",function(){v.editorUi.propertiesCollapsed=!v.editorUi.propertiesCollapsed;C()});y.appendChild(z);z=document.createElement("th");z.className="gePropHeaderCell";z.innerHTML=mxResources.get("value");y.appendChild(z);x.appendChild(y);var p=!1,F=!1,J;for(J in c)if(y=c[J],"function"!=typeof y.isVisible||y.isVisible(b,this)){var I=null!=b.style[J]?mxUtils.htmlEntities(b.style[J]+""):null!=y.getDefaultValue? +y.getDefaultValue(b,this):y.defVal;if("separator"==y.type)F=!F;else{if("staticArr"==y.type)y.size=parseInt(b.style[y.sizeProperty]||c[y.sizeProperty].defVal)||0;else if(null!=y.dependentProps){for(var u=y.dependentProps,M=[],A=[],z=0;z<u.length;z++){var B=b.style[u[z]];A.push(c[u[z]].subDefVal);M.push(null!=B?B.split(","):[])}y.dependentPropsDefVal=A;y.dependentPropsVals=M}x.appendChild(q(J,I,y,p,F));p=!p}}for(z=0;z<t.length;z++)for(y=t[z],c=y.parentRow,b=0;b<y.values.length;b++)J=q(y.name,y.values[b], +{type:y.type,parentRow:y.parentRow,isDeletable:y.isDeletable,index:b,defVal:y.defVal,countProperty:y.countProperty,size:y.size},0==b%2,y.flipBkg),c.parentNode.insertBefore(J,c.nextSibling),c=J;a.appendChild(x);C();return a};StyleFormatPanel.prototype.addStyles=function(a){function c(a){function c(a){var c=mxUtils.button("",function(c){e.getModel().beginUpdate();try{var b=e.getSelectionCells();for(c=0;c<b.length;c++){for(var d=e.getModel().getStyle(b[c]),k=0;k<g.length;k++)d=mxUtils.removeStylename(d, +g[k]);var f=e.getModel().isVertex(b[c])?e.defaultVertexStyle:e.defaultEdgeStyle;null!=a?(d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,a.gradient||mxUtils.getValue(f,mxConstants.STYLE_GRADIENTCOLOR,null)),d=""==a.fill?mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,null):mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,a.fill||mxUtils.getValue(f,mxConstants.STYLE_FILLCOLOR,null)),d=""==a.stroke?mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,null):mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR, +a.stroke||mxUtils.getValue(f,mxConstants.STYLE_STROKECOLOR,null)),e.getModel().isVertex(b[c])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,a.font||mxUtils.getValue(f,mxConstants.STYLE_FONTCOLOR,null)))):(d=mxUtils.setStyle(d,mxConstants.STYLE_FILLCOLOR,mxUtils.getValue(f,mxConstants.STYLE_FILLCOLOR,"#ffffff")),d=mxUtils.setStyle(d,mxConstants.STYLE_STROKECOLOR,mxUtils.getValue(f,mxConstants.STYLE_STROKECOLOR,"#000000")),d=mxUtils.setStyle(d,mxConstants.STYLE_GRADIENTCOLOR,mxUtils.getValue(f, +mxConstants.STYLE_GRADIENTCOLOR,null)),e.getModel().isVertex(b[c])&&(d=mxUtils.setStyle(d,mxConstants.STYLE_FONTCOLOR,mxUtils.getValue(f,mxConstants.STYLE_FONTCOLOR,null))));e.getModel().setStyle(b[c],d)}}finally{e.getModel().endUpdate()}});c.className="geStyleButton";c.style.width="36px";c.style.height="30px";c.style.margin="0px 6px 6px 0px";if(null!=a)null!=a.gradient?mxClient.IS_IE&&(mxClient.IS_QUIRKS||10>document.documentMode)?c.style.filter="progid:DXImageTransform.Microsoft.Gradient(StartColorStr='"+ +a.fill+"', EndColorStr='"+a.gradient+"', GradientType=0)":c.style.backgroundImage="linear-gradient("+a.fill+" 0px,"+a.gradient+" 100%)":a.fill==mxConstants.NONE?c.style.background="url('"+Dialog.prototype.noColorImage+"')":c.style.backgroundColor=""==a.fill?mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"):a.fill||mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"dark"==uiTheme?"#2a2a2a":"#ffffff"),c.style.border=a.stroke==mxConstants.NONE? +"1px solid transparent":""==a.stroke?"1px solid "+mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"):"1px solid "+(a.stroke||mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"dark"!=uiTheme?"#2a2a2a":"#ffffff"));else{var b=mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_FILLCOLOR,"#ffffff"),k=mxUtils.getValue(e.defaultVertexStyle,mxConstants.STYLE_STROKECOLOR,"#000000");c.style.backgroundColor=b;c.style.border="1px solid "+ +k}d.appendChild(c)}d.innerHTML="";for(var b=0;b<a.length;b++)0<b&&0==mxUtils.mod(b,4)&&mxUtils.br(d),c(a[b])}function b(a){mxEvent.addListener(a,"mouseenter",function(){a.style.opacity="1"});mxEvent.addListener(a,"mouseleave",function(){a.style.opacity="0.5"})}var e=this.editorUi.editor.graph,d=document.createElement("div");d.style.whiteSpace="nowrap";d.style.paddingLeft="24px";d.style.paddingRight="20px";a.style.paddingLeft="16px";a.style.paddingBottom="6px";a.style.position="relative";a.appendChild(d); +var g="plain-gray plain-blue plain-green plain-turquoise plain-orange plain-yellow plain-red plain-pink plain-purple gray blue green turquoise orange yellow red pink purple".split(" ");null==this.editorUi.currentScheme&&(this.editorUi.currentScheme=0);var k=document.createElement("div");k.style.cssText="position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ4eHh3d3d1dXVxcXF2dnZ2dnZ2dnZxcXF2dnYmb3w1AAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADRJREFUCNdjwACMAmBKaiGYs2oJmLPKAZ3DabU8AMRTXpUKopislqFyVzCAuUZgikkBZjoAcMYLnp53P/UAAAAASUVORK5CYII=);"; +mxEvent.addListener(k,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme-1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));var f=document.createElement("div");f.style.cssText="position:absolute;left:202px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;background-repeat:no-repeat;background-position:center center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnYBuwCcAAAACnRSTlMAfCTkhhvb7cQSPH2JPgAAADZJREFUCNdjQAOMAmBKaiGY8loF5rKswsZlrVo8AUiFrTICcbIWK8A5DF1gDoMymMPApIAwHwCS0Qx/U7qCBQAAAABJRU5ErkJggg==);"; +1<this.defaultColorSchemes.length&&(a.appendChild(k),a.appendChild(f));mxEvent.addListener(f,"click",mxUtils.bind(this,function(){this.editorUi.currentScheme=mxUtils.mod(this.editorUi.currentScheme+1,this.defaultColorSchemes.length);c(this.defaultColorSchemes[this.editorUi.currentScheme])}));b(k);b(f);c(this.defaultColorSchemes[this.editorUi.currentScheme]);return a};StyleFormatPanel.prototype.addEditOps=function(a){var c=this.format.getSelectionState(),b=null;1==this.editorUi.editor.graph.getSelectionCount()&& (b=mxUtils.button(mxResources.get("editStyle"),mxUtils.bind(this,function(a){this.editorUi.actions.get("editStyle").funct()})),b.setAttribute("title",mxResources.get("editStyle")+" ("+this.editorUi.actions.get("editStyle").shortcut+")"),b.style.width="202px",b.style.marginBottom="2px",a.appendChild(b));var e=this.editorUi.editor.graph,d=e.view.getState(e.getSelectionCell());1==e.getSelectionCount()&&null!=d&&null!=d.shape&&null!=d.shape.stencil?(c=mxUtils.button(mxResources.get("editShape"),mxUtils.bind(this, function(a){this.editorUi.actions.get("editShape").funct()})),c.setAttribute("title",mxResources.get("editShape")),c.style.marginBottom="2px",null==b?c.style.width="202px":(b.style.width="100px",c.style.width="100px",c.style.marginLeft="2px"),a.appendChild(c)):c.image&&(c=mxUtils.button(mxResources.get("editImage"),mxUtils.bind(this,function(a){this.editorUi.actions.get("image").funct()})),c.setAttribute("title",mxResources.get("editImage")),c.style.marginBottom="2px",null==b?c.style.width="202px": (b.style.width="100px",c.style.width="100px",c.style.marginLeft="2px"),a.appendChild(c));return a}}Graph.prototype.defaultThemeName="default-style2";Graph.prototype.lastPasteXml=null;Graph.prototype.pasteCounter=0;Graph.prototype.defaultScrollbars="0"!=urlParams.sb;Graph.prototype.defaultPageVisible="0"!=urlParams.pv;Graph.prototype.shadowId="dropShadow";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowBlur="1.7";Graph.prototype.svgShadowSize= "3";Graph.prototype.edgeMode="move"!=urlParams.edge;var k=Graph.prototype.init;Graph.prototype.init=function(){function a(a){c=a;try{if(mxClient.IS_QUIRKS||7==document.documentMode||8==document.documentMode)c=document.createEventObject(a),c.type=a.type,c.canBubble=a.canBubble,c.cancelable=a.cancelable,c.view=a.view,c.detail=a.detail,c.screenX=a.screenX,c.screenY=a.screenY,c.clientX=a.clientX,c.clientY=a.clientY,c.ctrlKey=a.ctrlKey,c.altKey=a.altKey,c.shiftKey=a.shiftKey,c.metaKey=a.metaKey,c.button= -a.button,c.relatedTarget=a.relatedTarget}catch(D){}}k.apply(this,arguments);window.mxFreehand&&(this.freehand=new mxFreehand(this));var c=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){c=null});this.isMouseInsertPoint=function(){return null!=c};var b=this.getInsertPoint;this.getInsertPoint=function(){return null!=c?this.getPointForEvent(c):b.apply(this,arguments)};var e=this.layoutManager.getLayout; +a.button,c.relatedTarget=a.relatedTarget}catch(E){}}k.apply(this,arguments);window.mxFreehand&&(this.freehand=new mxFreehand(this));var c=null;mxEvent.addListener(this.container,"mouseenter",a);mxEvent.addListener(this.container,"mousemove",a);mxEvent.addListener(this.container,"mouseleave",function(a){c=null});this.isMouseInsertPoint=function(){return null!=c};var b=this.getInsertPoint;this.getInsertPoint=function(){return null!=c?this.getPointForEvent(c):b.apply(this,arguments)};var e=this.layoutManager.getLayout; this.layoutManager.getLayout=function(a){var c=this.graph.getCellStyle(a);if(null!=c){if("rack"==c.childLayout){var b=new mxStackLayout(this.graph,!1);b.gridSize=null!=c.rackUnitSize?parseFloat(c.rackUnitSize):"undefined"!==typeof mxRackContainer?mxRackContainer.unitSize:20;b.fill=!0;b.marginLeft=c.marginLeft||0;b.marginRight=c.marginRight||0;b.marginTop=c.marginTop||0;b.marginBottom=c.marginBottom||0;b.allowGaps=c.allowGaps||0;b.resizeParent=!1;return b}if("undefined"!==typeof mxTableLayout&&"tableLayout"== c.childLayout)return b=new mxTableLayout(this.graph),b.rows=c.tableRows||2,b.columns=c.tableColumns||2,b.colPercentages=c.colPercentages,b.rowPercentages=c.rowPercentages,b.equalColumns="1"==mxUtils.getValue(c,"equalColumns",b.colPercentages?"0":"1"),b.equalRows="1"==mxUtils.getValue(c,"equalRows",b.rowPercentages?"0":"1"),b.resizeParent="1"==mxUtils.getValue(c,"resizeParent","1"),b.border=c.tableBorder||b.border,b.marginLeft=c.marginLeft||0,b.marginRight=c.marginRight||0,b.marginTop=c.marginTop|| 0,b.marginBottom=c.marginBottom||0,b.autoAddCol="1"==mxUtils.getValue(c,"autoAddCol","0"),b.autoAddRow="1"==mxUtils.getValue(c,"autoAddRow",b.autoAddCol?"0":"1"),b.colWidths=c.colWidths||"100",b.rowHeights=c.rowHeights||"50",b}return e.apply(this,arguments)};this.updateGlobalUrlVariables()};var q=Graph.prototype.isFastZoomEnabled;Graph.prototype.isFastZoomEnabled=function(){return q.apply(this,arguments)&&(!this.shadowVisible||!mxClient.IS_SF)};Graph.prototype.updateGlobalUrlVariables=function(){this.globalVars= Editor.globalVars;if(null!=urlParams.vars)try{this.globalVars=null!=this.globalVars?mxUtils.clone(this.globalVars):{};var a=JSON.parse(decodeURIComponent(urlParams.vars));if(null!=a)for(var c in a)this.globalVars[c]=a[c]}catch(M){null!=window.console&&console.log("Error in vars URL parameter: "+M)}};Graph.prototype.getExportVariables=function(){return null!=this.globalVars?mxUtils.clone(this.globalVars):{}};var n=Graph.prototype.getGlobalVariable;Graph.prototype.getGlobalVariable=function(a){var c= -n.apply(this,arguments);null==c&&null!=this.globalVars&&(c=this.globalVars[a]);return c};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var g=Graph.prototype.getSvg;Graph.prototype.getSvg=function(a,c,b,e,d,k,f,n,q,t,l){var x=null;null!=this.themes&&"darkTheme"==this.defaultThemeName&& -(x=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var y=g.apply(this,arguments);if(l&&null!=this.extFonts&&0<this.extFonts.length){var v=y.ownerDocument,A=null!=v.createElementNS?v.createElementNS(mxConstants.NS_SVG,"style"):v.createElement("style");null!=v.setAttributeNS?A.setAttributeNS("type","text/css"):A.setAttribute("type","text/css");for(var m="",C="",E=0;E<this.extFonts.length;E++){var p=this.extFonts[E].name,F=this.extFonts[E].url;0==F.indexOf(Editor.GOOGLE_FONTS)? -m+="@import url("+F+");\n":C+='@font-face {\nfont-family: "'+p+'";\nsrc: url("'+F+'");\n}\n'}A.appendChild(v.createTextNode(m+C));y.getElementsByTagName("defs")[0].appendChild(A)}null!=x&&(this.stylesheet=x,this.refresh());return y};var A=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var a=A.apply(this,arguments);if(this.mathEnabled){this.container.getBoundingClientRect();var c=a.drawText;a.drawText=function(a,b){if(null!=a.text&&null!=a.text.value&&a.text.checkBounds()&& +n.apply(this,arguments);null==c&&null!=this.globalVars&&(c=this.globalVars[a]);return c};Graph.prototype.getDefaultStylesheet=function(){if(null==this.defaultStylesheet){var a=this.themes["default-style2"];this.defaultStylesheet=(new mxCodec(a.ownerDocument)).decode(a)}return this.defaultStylesheet};Graph.prototype.isViewer=function(){return urlParams.viewer};var g=Graph.prototype.getSvg;Graph.prototype.getSvg=function(a,c,b,e,d,k,f,n,q,v,l){var x=null;null!=this.themes&&"darkTheme"==this.defaultThemeName&& +(x=this.stylesheet,this.stylesheet=this.getDefaultStylesheet(),this.refresh());var t=g.apply(this,arguments);if(l&&null!=this.extFonts&&0<this.extFonts.length){var y=t.ownerDocument,z=null!=y.createElementNS?y.createElementNS(mxConstants.NS_SVG,"style"):y.createElement("style");null!=y.setAttributeNS?z.setAttributeNS("type","text/css"):z.setAttribute("type","text/css");for(var m="",D="",C=0;C<this.extFonts.length;C++){var p=this.extFonts[C].name,F=this.extFonts[C].url;0==F.indexOf(Editor.GOOGLE_FONTS)? +m+="@import url("+F+");\n":D+='@font-face {\nfont-family: "'+p+'";\nsrc: url("'+F+'");\n}\n'}z.appendChild(y.createTextNode(m+D));t.getElementsByTagName("defs")[0].appendChild(z)}null!=x&&(this.stylesheet=x,this.refresh());return t};var z=Graph.prototype.createSvgImageExport;Graph.prototype.createSvgImageExport=function(){var a=z.apply(this,arguments);if(this.mathEnabled){this.container.getBoundingClientRect();var c=a.drawText;a.drawText=function(a,b){if(null!=a.text&&null!=a.text.value&&a.text.checkBounds()&& (mxUtils.isNode(a.text.value)||a.text.dialect==mxConstants.DIALECT_STRICTHTML)){var e=a.text.getContentNode();if(null!=e){e=e.cloneNode(!0);if(e.getElementsByTagNameNS)for(var d=e.getElementsByTagNameNS("http://www.w3.org/1998/Math/MathML","math");0<d.length;)d[0].parentNode.removeChild(d[0]);null!=e.innerHTML&&(d=a.text.value,a.text.value=e.innerHTML,c.apply(this,arguments),a.text.value=d)}}else c.apply(this,arguments)}}return a};var x=mxGraphView.prototype.validateBackgroundPage;mxGraphView.prototype.validateBackgroundPage= function(){x.apply(this,arguments);if(mxClient.IS_GC&&null!=this.getDrawPane()){var a=this.getDrawPane().parentNode;!this.graph.mathEnabled||mxClient.NO_FO||null!=this.webKitForceRepaintNode&&null!=this.webKitForceRepaintNode.parentNode||"svg"!=this.graph.container.firstChild.nodeName?null==this.webKitForceRepaintNode||this.graph.mathEnabled&&("svg"==this.graph.container.firstChild.nodeName||this.graph.container.firstChild==this.webKitForceRepaintNode)||(null!=this.webKitForceRepaintNode.parentNode&& -this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var t=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){t.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"== +this.webKitForceRepaintNode.parentNode.removeChild(this.webKitForceRepaintNode),this.webKitForceRepaintNode=null):(this.webKitForceRepaintNode=document.createElement("div"),this.webKitForceRepaintNode.style.cssText="position:absolute;",a.ownerSVGElement.parentNode.insertBefore(this.webKitForceRepaintNode,a.ownerSVGElement))}};var v=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){v.apply(this,arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(a){if("data:action/json,"== a.substring(0,17)&&(a=JSON.parse(a.substring(17)),null!=a.actions)){for(var c=0;c<a.actions.length;c++){var b=a.actions[c];if(null!=b.open)if(this.isCustomLink(b.open)){if(!this.customLinkClicked(b.open))return}else this.openLink(b.open)}this.model.beginUpdate();try{for(c=0;c<a.actions.length;c++)b=a.actions[c],null!=b.toggle&&this.toggleCells(this.getCellsForAction(b.toggle,!0)),null!=b.show&&this.setCellsVisible(this.getCellsForAction(b.show,!0),!0),null!=b.hide&&this.setCellsVisible(this.getCellsForAction(b.hide, !0),!1)}finally{this.model.endUpdate()}for(c=0;c<a.actions.length;c++){var b=a.actions[c],e=[];null!=b.select&&this.isEnabled()&&(e=this.getCellsForAction(b.select),this.setSelectionCells(e));null!=b.highlight&&(e=this.getCellsForAction(b.highlight),this.highlightCells(e,b.highlight.color,b.highlight.duration,b.highlight.opacity));null!=b.scroll&&(e=this.getCellsForAction(b.scroll));0<e.length&&this.scrollCellToVisible(e[0])}}};Graph.prototype.updateCustomLinksForCell=function(a,c){var b=this.getLinkForCell(c); -null!=b&&"data:action/json,"==b.substring(0,17)&&this.setLinkForCell(c,this.updateCustomLink(a,b));if(this.isHtmlLabel(c)){var e=document.createElement("div");e.innerHTML=this.getLabel(c);for(var d=e.getElementsByTagName("a"),k=!1,g=0;g<d.length;g++)b=d[g].getAttribute("href"),null!=b&&"data:action/json,"==b.substring(0,17)&&(d[g].setAttribute("href",this.updateCustomLink(a,b)),k=!0);k&&this.labelChanged(c,e.innerHTML)}};Graph.prototype.updateCustomLink=function(a,c){if("data:action/json,"==c.substring(0, -17))try{var b=JSON.parse(c.substring(17));null!=b.actions&&(this.updateCustomLinkActions(a,b.actions),c="data:action/json,"+JSON.stringify(b))}catch(I){}return c};Graph.prototype.updateCustomLinkActions=function(a,c){for(var b=0;b<c.length;b++){var e=c[b];this.updateCustomLinkAction(a,e.toggle);this.updateCustomLinkAction(a,e.show);this.updateCustomLinkAction(a,e.hide);this.updateCustomLinkAction(a,e.select);this.updateCustomLinkAction(a,e.highlight);this.updateCustomLinkAction(a,e.scroll)}};Graph.prototype.updateCustomLinkAction= +null!=b&&"data:action/json,"==b.substring(0,17)&&this.setLinkForCell(c,this.updateCustomLink(a,b));if(this.isHtmlLabel(c)){var e=document.createElement("div");e.innerHTML=this.getLabel(c);for(var d=e.getElementsByTagName("a"),g=!1,k=0;k<d.length;k++)b=d[k].getAttribute("href"),null!=b&&"data:action/json,"==b.substring(0,17)&&(d[k].setAttribute("href",this.updateCustomLink(a,b)),g=!0);g&&this.labelChanged(c,e.innerHTML)}};Graph.prototype.updateCustomLink=function(a,c){if("data:action/json,"==c.substring(0, +17))try{var b=JSON.parse(c.substring(17));null!=b.actions&&(this.updateCustomLinkActions(a,b.actions),c="data:action/json,"+JSON.stringify(b))}catch(G){}return c};Graph.prototype.updateCustomLinkActions=function(a,c){for(var b=0;b<c.length;b++){var e=c[b];this.updateCustomLinkAction(a,e.toggle);this.updateCustomLinkAction(a,e.show);this.updateCustomLinkAction(a,e.hide);this.updateCustomLinkAction(a,e.select);this.updateCustomLinkAction(a,e.highlight);this.updateCustomLinkAction(a,e.scroll)}};Graph.prototype.updateCustomLinkAction= function(a,c){if(null!=c&&null!=c.cells){for(var b=[],e=0;e<c.cells.length;e++)if("*"==c.cells[e])b.push(c.cells[e]);else{var d=a[c.cells[e]];null!=d?""!=d&&b.push(d):b.push(c.cells[e])}c.cells=b}};Graph.prototype.getCellsForAction=function(a,c){return this.getCellsById(a.cells).concat(this.getCellsForTags(a.tags,null,null,c))};Graph.prototype.getCellsById=function(a){var c=[];if(null!=a)for(var b=0;b<a.length;b++)if("*"==a[b])var e=this.getDefaultParent(),c=c.concat(this.model.filterDescendants(function(a){return a!= -e},e));else{var d=this.model.getCell(a[b]);null!=d&&c.push(d)}return c};Graph.prototype.getCellsForTags=function(a,c,b,e){var d=[];if(null!=a){c=null!=c?c:this.model.getDescendants(this.model.getRoot());b=null!=b?b:"tags";for(var k=0,g={},f=0;f<a.length;f++)0<a[f].length&&(g[a[f].toLowerCase()]=!0,k++);for(f=0;f<c.length;f++)if(e&&this.model.getParent(c[f])==this.model.root||this.model.isVertex(c[f])||this.model.isEdge(c[f])){var n=null!=c[f].value&&"object"==typeof c[f].value?mxUtils.trim(c[f].value.getAttribute(b)|| -""):"",q=!1;if(0<n.length){if(n=n.toLowerCase().split(" "),n.length>=a.length){for(var t=q=0;t<n.length&&q<k;t++)null!=g[n[t]]&&q++;q=q==k}}else q=0==a.length;q&&d.push(c[f])}}return d};Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],!this.model.isVisible(a[c]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,c){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],c)}finally{this.model.endUpdate()}}; -Graph.prototype.highlightCells=function(a,c,b,e){for(var d=0;d<a.length;d++)this.highlightCell(a[d],c,b,e)};Graph.prototype.highlightCell=function(a,c,b,e){c=null!=c?c:mxConstants.DEFAULT_VALID_COLOR;b=null!=b?b:1E3;a=this.view.getState(a);if(null!=a){var d=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),k=new mxCellHighlight(this,c,d,!1);null!=e&&(k.opacity=e);k.highlight(a);window.setTimeout(function(){null!=k.shape&&(mxUtils.setPrefixedStyle(k.shape.node.style,"transition", -"all 1200ms ease-in-out"),k.shape.node.style.opacity=0);window.setTimeout(function(){k.destroy()},1200)},b)}};Graph.prototype.addSvgShadow=function(a,c,b){b=null!=b?b:!1;var e=a.ownerDocument,d=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");d.setAttribute("id",this.shadowId);var k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");k.setAttribute("in","SourceAlpha");k.setAttribute("stdDeviation", -this.svgShadowBlur);k.setAttribute("result","blur");d.appendChild(k);k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");k.setAttribute("in","blur");k.setAttribute("dx",this.svgShadowSize);k.setAttribute("dy",this.svgShadowSize);k.setAttribute("result","offsetBlur");d.appendChild(k);k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");k.setAttribute("flood-color",this.svgShadowColor);k.setAttribute("flood-opacity", -this.svgShadowOpacity);k.setAttribute("result","offsetColor");d.appendChild(k);k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");k.setAttribute("in","offsetColor");k.setAttribute("in2","offsetBlur");k.setAttribute("operator","in");k.setAttribute("result","offsetBlur");d.appendChild(k);k=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");k.setAttribute("in","SourceGraphic");k.setAttribute("in2", -"offsetBlur");d.appendChild(k);k=a.getElementsByTagName("defs");0==k.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=a.firstChild?a.insertBefore(e,a.firstChild):a.appendChild(e)):e=k[0];e.appendChild(d);b||(c=null!=c?c:a.getElementsByTagName("g")[0],null!=c&&(c.setAttribute("filter","url(#"+this.shadowId+")"),isNaN(parseInt(a.getAttribute("width")))||(a.setAttribute("width",parseInt(a.getAttribute("width"))+6),a.setAttribute("height",parseInt(a.getAttribute("height"))+ +e},e));else{var d=this.model.getCell(a[b]);null!=d&&c.push(d)}return c};Graph.prototype.getCellsForTags=function(a,c,b,e){var d=[];if(null!=a){c=null!=c?c:this.model.getDescendants(this.model.getRoot());b=null!=b?b:"tags";for(var g=0,k={},f=0;f<a.length;f++)0<a[f].length&&(k[a[f].toLowerCase()]=!0,g++);for(f=0;f<c.length;f++)if(e&&this.model.getParent(c[f])==this.model.root||this.model.isVertex(c[f])||this.model.isEdge(c[f])){var n=null!=c[f].value&&"object"==typeof c[f].value?mxUtils.trim(c[f].value.getAttribute(b)|| +""):"",q=!1;if(0<n.length){if(n=n.toLowerCase().split(" "),n.length>=a.length){for(var v=q=0;v<n.length&&q<g;v++)null!=k[n[v]]&&q++;q=q==g}}else q=0==a.length;q&&d.push(c[f])}}return d};Graph.prototype.toggleCells=function(a){this.model.beginUpdate();try{for(var c=0;c<a.length;c++)this.model.setVisible(a[c],!this.model.isVisible(a[c]))}finally{this.model.endUpdate()}};Graph.prototype.setCellsVisible=function(a,c){this.model.beginUpdate();try{for(var b=0;b<a.length;b++)this.model.setVisible(a[b],c)}finally{this.model.endUpdate()}}; +Graph.prototype.highlightCells=function(a,c,b,e){for(var d=0;d<a.length;d++)this.highlightCell(a[d],c,b,e)};Graph.prototype.highlightCell=function(a,c,b,e){c=null!=c?c:mxConstants.DEFAULT_VALID_COLOR;b=null!=b?b:1E3;a=this.view.getState(a);if(null!=a){var d=Math.max(5,mxUtils.getValue(a.style,mxConstants.STYLE_STROKEWIDTH,1)+4),g=new mxCellHighlight(this,c,d,!1);null!=e&&(g.opacity=e);g.highlight(a);window.setTimeout(function(){null!=g.shape&&(mxUtils.setPrefixedStyle(g.shape.node.style,"transition", +"all 1200ms ease-in-out"),g.shape.node.style.opacity=0);window.setTimeout(function(){g.destroy()},1200)},b)}};Graph.prototype.addSvgShadow=function(a,c,b){b=null!=b?b:!1;var e=a.ownerDocument,d=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"filter"):e.createElement("filter");d.setAttribute("id",this.shadowId);var g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feGaussianBlur"):e.createElement("feGaussianBlur");g.setAttribute("in","SourceAlpha");g.setAttribute("stdDeviation", +this.svgShadowBlur);g.setAttribute("result","blur");d.appendChild(g);g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feOffset"):e.createElement("feOffset");g.setAttribute("in","blur");g.setAttribute("dx",this.svgShadowSize);g.setAttribute("dy",this.svgShadowSize);g.setAttribute("result","offsetBlur");d.appendChild(g);g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feFlood"):e.createElement("feFlood");g.setAttribute("flood-color",this.svgShadowColor);g.setAttribute("flood-opacity", +this.svgShadowOpacity);g.setAttribute("result","offsetColor");d.appendChild(g);g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feComposite"):e.createElement("feComposite");g.setAttribute("in","offsetColor");g.setAttribute("in2","offsetBlur");g.setAttribute("operator","in");g.setAttribute("result","offsetBlur");d.appendChild(g);g=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"feBlend"):e.createElement("feBlend");g.setAttribute("in","SourceGraphic");g.setAttribute("in2", +"offsetBlur");d.appendChild(g);g=a.getElementsByTagName("defs");0==g.length?(e=null!=e.createElementNS?e.createElementNS(mxConstants.NS_SVG,"defs"):e.createElement("defs"),null!=a.firstChild?a.insertBefore(e,a.firstChild):a.appendChild(e)):e=g[0];e.appendChild(d);b||(c=null!=c?c:a.getElementsByTagName("g")[0],null!=c&&(c.setAttribute("filter","url(#"+this.shadowId+")"),isNaN(parseInt(a.getAttribute("width")))||(a.setAttribute("width",parseInt(a.getAttribute("width"))+6),a.setAttribute("height",parseInt(a.getAttribute("height"))+ 6),c=a.getAttribute("viewBox"),null!=c&&0<c.length&&(c=c.split(" "),3<c.length&&(w=parseFloat(c[2])+6,h=parseFloat(c[3])+6,a.setAttribute("viewBox",c[0]+" "+c[1]+" "+w+" "+h))))));return d};Graph.prototype.setShadowVisible=function(a,c){mxClient.IS_SVG&&(c=null!=c?c:!0,(this.shadowVisible=a)?this.view.getDrawPane().setAttribute("filter","url(#"+this.shadowId+")"):this.view.getDrawPane().removeAttribute("filter"),c&&this.fireEvent(new mxEventObject("shadowVisibleChanged")))};Graph.prototype.selectUnlockedLayer= function(){if(null==this.defaultParent){var a=this.model.getChildCount(this.model.root),c,b=0;do c=this.model.getChildAt(this.model.root,b);while(b++<a&&"1"==mxUtils.getValue(this.getCellStyle(c),"locked","0"));null!=c&&this.setDefaultParent(c)}};mxStencilRegistry.libraries.mockup=[SHAPES_PATH+"/mockup/mxMockupButtons.js"];mxStencilRegistry.libraries.arrows2=[SHAPES_PATH+"/mxArrows.js"];mxStencilRegistry.libraries.atlassian=[STENCIL_PATH+"/atlassian.xml",SHAPES_PATH+"/mxAtlassian.js"];mxStencilRegistry.libraries.bpmn= [SHAPES_PATH+"/bpmn/mxBpmnShape2.js",STENCIL_PATH+"/bpmn.xml"];mxStencilRegistry.libraries.c4=[SHAPES_PATH+"/mxC4.js"];mxStencilRegistry.libraries.cisco19=[SHAPES_PATH+"/mxCisco19.js",STENCIL_PATH+"/cisco19.xml"];mxStencilRegistry.libraries.dfd=[SHAPES_PATH+"/mxDFD.js"];mxStencilRegistry.libraries.er=[SHAPES_PATH+"/er/mxER.js"];mxStencilRegistry.libraries.kubernetes=[SHAPES_PATH+"/mxKubernetes.js",STENCIL_PATH+"/kubernetes.xml"];mxStencilRegistry.libraries.flowchart=[SHAPES_PATH+"/mxFlowchart.js", @@ -2974,56 +2975,56 @@ STENCIL_PATH+"/flowchart.xml"];mxStencilRegistry.libraries.ios=[SHAPES_PATH+"/mo [SHAPES_PATH+"/mockup/mxMockupText.js"];mxStencilRegistry.libraries.floorplan=[SHAPES_PATH+"/mxFloorplan.js",STENCIL_PATH+"/floorplan.xml"];mxStencilRegistry.libraries.bootstrap=[SHAPES_PATH+"/mxBootstrap.js",STENCIL_PATH+"/bootstrap.xml"];mxStencilRegistry.libraries.gmdl=[SHAPES_PATH+"/mxGmdl.js",STENCIL_PATH+"/gmdl.xml"];mxStencilRegistry.libraries.gcp2=[SHAPES_PATH+"/mxGCP2.js",STENCIL_PATH+"/gcp2.xml"];mxStencilRegistry.libraries.ibm=[SHAPES_PATH+"/mxIBM.js",STENCIL_PATH+"/ibm.xml"];mxStencilRegistry.libraries.cabinets= [SHAPES_PATH+"/mxCabinets.js",STENCIL_PATH+"/cabinets.xml"];mxStencilRegistry.libraries.archimate=[SHAPES_PATH+"/mxArchiMate.js"];mxStencilRegistry.libraries.archimate3=[SHAPES_PATH+"/mxArchiMate3.js"];mxStencilRegistry.libraries.sysml=[SHAPES_PATH+"/mxSysML.js"];mxStencilRegistry.libraries.eip=[SHAPES_PATH+"/mxEip.js",STENCIL_PATH+"/eip.xml"];mxStencilRegistry.libraries.networks=[SHAPES_PATH+"/mxNetworks.js",STENCIL_PATH+"/networks.xml"];mxStencilRegistry.libraries.aws3d=[SHAPES_PATH+"/mxAWS3D.js", STENCIL_PATH+"/aws3d.xml"];mxStencilRegistry.libraries.aws4=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.aws4b=[SHAPES_PATH+"/mxAWS4.js",STENCIL_PATH+"/aws4.xml"];mxStencilRegistry.libraries.veeam=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam.xml"];mxStencilRegistry.libraries.veeam2=[STENCIL_PATH+"/veeam/2d.xml",STENCIL_PATH+"/veeam/3d.xml",STENCIL_PATH+"/veeam/veeam2.xml"];mxStencilRegistry.libraries.pid2inst=[SHAPES_PATH+ -"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(a){var c=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?c="mxgraph.er":"sysML"==a.substring(0,5)&&(c="mxgraph.sysml"));return c};var H=mxMarker.createMarker;mxMarker.createMarker= -function(a,c,b,e,d,k,g,f,n,q){if(null!=b&&null==mxMarker.markers[b]){var t=this.getPackageForType(b);null!=t&&mxStencilRegistry.getStencil(t)}return H.apply(this,arguments)};PrintDialog.prototype.create=function(a,c){function b(){y.value=Math.max(1,Math.min(f,Math.max(parseInt(y.value),parseInt(x.value))));x.value=Math.max(1,Math.min(f,Math.min(parseInt(y.value),parseInt(x.value))))}function e(c){function b(c,b,k){var g=c.useCssTransforms,f=c.currentTranslate,n=c.currentScale,q=c.view.translate,t= -c.view.scale;c.useCssTransforms&&(c.useCssTransforms=!1,c.currentTranslate=new mxPoint(0,0),c.currentScale=1,c.view.translate=new mxPoint(0,0),c.view.scale=1);var l=c.getGraphBounds(),x=0,y=0,A=ta.get(),m=1/c.pageScale,p=C.checked;if(p)var m=parseInt(S.value),F=parseInt(ca.value),m=Math.min(A.height*F/(l.height/c.view.scale),A.width*m/(l.width/c.view.scale));else m=parseInt(v.value)/(100*c.pageScale),isNaN(m)&&(e=1/c.pageScale,v.value="100 %");A=mxRectangle.fromRectangle(A);A.width=Math.ceil(A.width* -e);A.height=Math.ceil(A.height*e);m*=e;!p&&c.pageVisible?(l=c.getPageLayout(),x-=l.x*A.width,y-=l.y*A.height):p=!0;if(null==b){b=PrintDialog.createPrintPreview(c,m,A,0,x,y,p);b.pageSelector=!1;b.mathEnabled=!1;x=a.getCurrentFile();null!=x&&(b.title=x.getTitle());var E=b.writeHead;b.writeHead=function(b){E.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"));if(null!=c.extFonts)for(var e=0;e<c.extFonts.length;e++){var d= -c.extFonts[e].name,k=c.extFonts[e].url;0==k.indexOf(Editor.GOOGLE_FONTS)?b.writeln('<link rel="stylesheet" href="'+k+'" charset="UTF-8" type="text/css">'):(b.writeln('<style type="text/css">'),b.writeln('@font-face {\n\tfont-family: "'+d+'";\n\tsrc: url("'+k+'");\n}'),b.writeln("</style>"))}};if("undefined"!==typeof MathJax){var H=b.renderPage;b.renderPage=function(c,b,e,d,k,g){var f=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!a.editor.useForeignObjectForMath?!0:a.editor.originalNoForeignObject; -var n=H.apply(this,arguments);mxClient.NO_FO=f;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:n.className="geDisableMathJax";return n}}x=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(x=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());b.open(null,null,k,!0);null!=x&&(d.stylesheet=x,d.refresh())}else{A=c.background;if(null==A||""==A||A==mxConstants.NONE)A="#ffffff";b.backgroundColor=A;b.autoOrigin=p;b.appendGraph(c,m,x,y,k,!0);if(null!=c.extFonts&&null!=b.wnd)for(k= -0;k<c.extFonts.length;k++)x=c.extFonts[k].name,y=c.extFonts[k].url,0==y.indexOf(Editor.GOOGLE_FONTS)?b.wnd.document.writeln('<link rel="stylesheet" href="'+y+'" charset="UTF-8" type="text/css">'):(b.wnd.document.writeln('<style type="text/css">'),b.wnd.document.writeln('@font-face {\n\tfont-family: "'+x+'";\n\tsrc: url("'+y+'");\n}'),b.wnd.document.writeln("</style>"))}g&&(c.useCssTransforms=g,c.currentTranslate=f,c.currentScale=n,c.view.translate=q,c.view.scale=t);return b}var e=parseInt(K.value)/ -100;isNaN(e)&&(e=1,K.value="100 %");var e=.75*e,k=x.value,g=y.value,f=!t.checked,q=null;f&&(f=k==n&&g==n);if(!f&&null!=a.pages&&a.pages.length){var l=0,f=a.pages.length-1;t.checked||(l=parseInt(k)-1,f=parseInt(g)-1);for(var A=l;A<=f;A++){var m=a.pages[A],k=m==a.currentPage?d:null;if(null==k){var k=a.createTemporaryGraph(d.getStylesheet()),g=!0,l=!1,p=null,F=null;null==m.viewState&&null==m.root&&a.updatePageRoot(m);null!=m.viewState&&(g=m.viewState.pageVisible,l=m.viewState.mathEnabled,p=m.viewState.background, -F=m.viewState.backgroundImage,k.extFonts=m.viewState.extFonts);k.background=p;k.backgroundImage=null!=F?new mxImage(F.src,F.width,F.height):null;k.pageVisible=g;k.mathEnabled=l;var E=k.getGlobalVariable;k.getGlobalVariable=function(c){return"page"==c?m.getName():"pagenumber"==c?A+1:"pagecount"==c?null!=a.pages?a.pages.length:1:E.apply(this,arguments)};document.body.appendChild(k.container);a.updatePageRoot(m);k.model.setRoot(m.root)}q=b(k,q,A!=f);k!=d&&k.container.parentNode.removeChild(k.container)}}else q= +"/pid2/mxPidInstruments.js"];mxStencilRegistry.libraries.pid2misc=[SHAPES_PATH+"/pid2/mxPidMisc.js",STENCIL_PATH+"/pid/misc.xml"];mxStencilRegistry.libraries.pid2valves=[SHAPES_PATH+"/pid2/mxPidValves.js"];mxStencilRegistry.libraries.pidFlowSensors=[STENCIL_PATH+"/pid/flow_sensors.xml"];mxMarker.getPackageForType=function(a){var c=null;null!=a&&0<a.length&&("ER"==a.substring(0,2)?c="mxgraph.er":"sysML"==a.substring(0,5)&&(c="mxgraph.sysml"));return c};var I=mxMarker.createMarker;mxMarker.createMarker= +function(a,c,b,e,d,g,k,f,n,q){if(null!=b&&null==mxMarker.markers[b]){var v=this.getPackageForType(b);null!=v&&mxStencilRegistry.getStencil(v)}return I.apply(this,arguments)};PrintDialog.prototype.create=function(a,c){function b(){y.value=Math.max(1,Math.min(f,Math.max(parseInt(y.value),parseInt(x.value))));x.value=Math.max(1,Math.min(f,Math.min(parseInt(y.value),parseInt(x.value))))}function e(c){function b(c,b,g){var k=c.useCssTransforms,f=c.currentTranslate,n=c.currentScale,q=c.view.translate,v= +c.view.scale;c.useCssTransforms&&(c.useCssTransforms=!1,c.currentTranslate=new mxPoint(0,0),c.currentScale=1,c.view.translate=new mxPoint(0,0),c.view.scale=1);var l=c.getGraphBounds(),x=0,y=0,z=ta.get(),t=1/c.pageScale,p=C.checked;if(p)var t=parseInt(S.value),F=parseInt(ca.value),t=Math.min(z.height*F/(l.height/c.view.scale),z.width*t/(l.width/c.view.scale));else t=parseInt(m.value)/(100*c.pageScale),isNaN(t)&&(e=1/c.pageScale,m.value="100 %");z=mxRectangle.fromRectangle(z);z.width=Math.ceil(z.width* +e);z.height=Math.ceil(z.height*e);t*=e;!p&&c.pageVisible?(l=c.getPageLayout(),x-=l.x*z.width,y-=l.y*z.height):p=!0;if(null==b){b=PrintDialog.createPrintPreview(c,t,z,0,x,y,p);b.pageSelector=!1;b.mathEnabled=!1;x=a.getCurrentFile();null!=x&&(b.title=x.getTitle());var D=b.writeHead;b.writeHead=function(b){D.apply(this,arguments);null!=a.editor.fontCss&&(b.writeln('<style type="text/css">'),b.writeln(a.editor.fontCss),b.writeln("</style>"));if(null!=c.extFonts)for(var e=0;e<c.extFonts.length;e++){var d= +c.extFonts[e].name,g=c.extFonts[e].url;0==g.indexOf(Editor.GOOGLE_FONTS)?b.writeln('<link rel="stylesheet" href="'+g+'" charset="UTF-8" type="text/css">'):(b.writeln('<style type="text/css">'),b.writeln('@font-face {\n\tfont-family: "'+d+'";\n\tsrc: url("'+g+'");\n}'),b.writeln("</style>"))}};if("undefined"!==typeof MathJax){var I=b.renderPage;b.renderPage=function(c,b,e,d,g,k){var f=mxClient.NO_FO;mxClient.NO_FO=this.graph.mathEnabled&&!a.editor.useForeignObjectForMath?!0:a.editor.originalNoForeignObject; +var n=I.apply(this,arguments);mxClient.NO_FO=f;this.graph.mathEnabled?this.mathEnabled=this.mathEnabled||!0:n.className="geDisableMathJax";return n}}x=null;null!=d.themes&&"darkTheme"==d.defaultThemeName&&(x=d.stylesheet,d.stylesheet=d.getDefaultStylesheet(),d.refresh());b.open(null,null,g,!0);null!=x&&(d.stylesheet=x,d.refresh())}else{z=c.background;if(null==z||""==z||z==mxConstants.NONE)z="#ffffff";b.backgroundColor=z;b.autoOrigin=p;b.appendGraph(c,t,x,y,g,!0);if(null!=c.extFonts&&null!=b.wnd)for(g= +0;g<c.extFonts.length;g++)x=c.extFonts[g].name,y=c.extFonts[g].url,0==y.indexOf(Editor.GOOGLE_FONTS)?b.wnd.document.writeln('<link rel="stylesheet" href="'+y+'" charset="UTF-8" type="text/css">'):(b.wnd.document.writeln('<style type="text/css">'),b.wnd.document.writeln('@font-face {\n\tfont-family: "'+x+'";\n\tsrc: url("'+y+'");\n}'),b.wnd.document.writeln("</style>"))}k&&(c.useCssTransforms=k,c.currentTranslate=f,c.currentScale=n,c.view.translate=q,c.view.scale=v);return b}var e=parseInt(K.value)/ +100;isNaN(e)&&(e=1,K.value="100 %");var e=.75*e,g=x.value,k=y.value,f=!v.checked,q=null;f&&(f=g==n&&k==n);if(!f&&null!=a.pages&&a.pages.length){var l=0,f=a.pages.length-1;v.checked||(l=parseInt(g)-1,f=parseInt(k)-1);for(var z=l;z<=f;z++){var t=a.pages[z],g=t==a.currentPage?d:null;if(null==g){var g=a.createTemporaryGraph(d.getStylesheet()),k=!0,l=!1,p=null,F=null;null==t.viewState&&null==t.root&&a.updatePageRoot(t);null!=t.viewState&&(k=t.viewState.pageVisible,l=t.viewState.mathEnabled,p=t.viewState.background, +F=t.viewState.backgroundImage,g.extFonts=t.viewState.extFonts);g.background=p;g.backgroundImage=null!=F?new mxImage(F.src,F.width,F.height):null;g.pageVisible=k;g.mathEnabled=l;var D=g.getGlobalVariable;g.getGlobalVariable=function(c){return"page"==c?t.getName():"pagenumber"==c?z+1:"pagecount"==c?null!=a.pages?a.pages.length:1:D.apply(this,arguments)};document.body.appendChild(g.container);a.updatePageRoot(t);g.model.setRoot(t.root)}q=b(g,q,z!=f);g!=d&&g.container.parentNode.removeChild(g.container)}}else q= b(d);null==q?a.handleError({message:mxResources.get("errorUpdatingPreview")}):(q.mathEnabled&&(f=q.wnd.document,f.writeln('<script type="text/x-mathjax-config">'),f.writeln("MathJax.Hub.Config({"),f.writeln("showMathMenu: false,"),f.writeln('messageStyle: "none",'),f.writeln('jax: ["input/TeX", "input/MathML", "input/AsciiMath", "output/HTML-CSS"],'),f.writeln('extensions: ["tex2jax.js", "mml2jax.js", "asciimath2jax.js"],'),f.writeln('"HTML-CSS": {'),f.writeln("imageFont: null"),f.writeln("},"),f.writeln("TeX: {"), f.writeln('extensions: ["AMSmath.js", "AMSsymbols.js", "noErrors.js", "noUndefined.js"]'),f.writeln("},"),f.writeln("tex2jax: {"),f.writeln('\tignoreClass: "geDisableMathJax"'),f.writeln("},"),f.writeln("asciimath2jax: {"),f.writeln('\tignoreClass: "geDisableMathJax"'),f.writeln("}"),f.writeln("});"),c&&(f.writeln("MathJax.Hub.Queue(function () {"),f.writeln("window.print();"),f.writeln("});")),f.writeln("\x3c/script>"),f.writeln('<script type="text/javascript" src="'+DRAW_MATH_URL+'/MathJax.js">\x3c/script>')), -q.closeDocument(),!q.mathEnabled&&c&&PrintDialog.printPreview(q))}var d=a.editor.graph,k=document.createElement("div"),g=document.createElement("h3");g.style.width="100%";g.style.textAlign="center";g.style.marginTop="0px";mxUtils.write(g,c||mxResources.get("print"));k.appendChild(g);var f=1,n=1,q=document.createElement("div");q.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var t=document.createElement("input");t.style.cssText="margin-right:8px;margin-bottom:8px;"; -t.setAttribute("value","all");t.setAttribute("type","radio");t.setAttribute("name","pages-printdialog");q.appendChild(t);g=document.createElement("span");mxUtils.write(g,mxResources.get("printAllPages"));q.appendChild(g);mxUtils.br(q);var l=t.cloneNode(!0);t.setAttribute("checked","checked");l.setAttribute("value","range");q.appendChild(l);g=document.createElement("span");mxUtils.write(g,mxResources.get("pages")+":");q.appendChild(g);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;"; -x.setAttribute("value","1");x.setAttribute("type","number");x.setAttribute("min","1");x.style.width="50px";q.appendChild(x);g=document.createElement("span");mxUtils.write(g,mxResources.get("to"));q.appendChild(g);var y=x.cloneNode(!0);q.appendChild(y);mxEvent.addListener(x,"focus",function(){l.checked=!0});mxEvent.addListener(y,"focus",function(){l.checked=!0});mxEvent.addListener(x,"change",b);mxEvent.addListener(y,"change",b);if(null!=a.pages&&(f=a.pages.length,null!=a.currentPage))for(g=0;g<a.pages.length;g++)if(a.currentPage== -a.pages[g]){n=g+1;x.value=n;y.value=n;break}x.setAttribute("max",f);y.setAttribute("max",f);1<f&&k.appendChild(q);var A=document.createElement("div");A.style.marginBottom="10px";var m=document.createElement("input");m.style.marginRight="8px";m.setAttribute("value","adjust");m.setAttribute("type","radio");m.setAttribute("name","printZoom");A.appendChild(m);g=document.createElement("span");mxUtils.write(g,mxResources.get("adjustTo"));A.appendChild(g);var v=document.createElement("input");v.style.cssText= -"margin:0 8px 0 8px;";v.setAttribute("value","100 %");v.style.width="50px";A.appendChild(v);mxEvent.addListener(v,"focus",function(){m.checked=!0});k.appendChild(A);var q=q.cloneNode(!1),C=m.cloneNode(!0);C.setAttribute("value","fit");m.setAttribute("checked","checked");g=document.createElement("div");g.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";g.appendChild(C);q.appendChild(g);A=document.createElement("table");A.style.display="inline-block";var p=document.createElement("tbody"), -F=document.createElement("tr"),H=F.cloneNode(!0),u=document.createElement("td"),z=u.cloneNode(!0),J=u.cloneNode(!0),B=u.cloneNode(!0),ka=u.cloneNode(!0),Q=u.cloneNode(!0);u.style.textAlign="right";B.style.textAlign="right";mxUtils.write(u,mxResources.get("fitTo"));var S=document.createElement("input");S.style.cssText="margin:0 8px 0 8px;";S.setAttribute("value","1");S.setAttribute("min","1");S.setAttribute("type","number");S.style.width="40px";z.appendChild(S);g=document.createElement("span");mxUtils.write(g, -mxResources.get("fitToSheetsAcross"));J.appendChild(g);mxUtils.write(B,mxResources.get("fitToBy"));var ca=S.cloneNode(!0);ka.appendChild(ca);mxEvent.addListener(S,"focus",function(){C.checked=!0});mxEvent.addListener(ca,"focus",function(){C.checked=!0});g=document.createElement("span");mxUtils.write(g,mxResources.get("fitToSheetsDown"));Q.appendChild(g);F.appendChild(u);F.appendChild(z);F.appendChild(J);H.appendChild(B);H.appendChild(ka);H.appendChild(Q);p.appendChild(F);p.appendChild(H);A.appendChild(p); -q.appendChild(A);k.appendChild(q);q=document.createElement("div");g=document.createElement("div");g.style.fontWeight="bold";g.style.marginBottom="12px";mxUtils.write(g,mxResources.get("paperSize"));q.appendChild(g);g=document.createElement("div");g.style.marginBottom="12px";var ta=PageSetupDialog.addPageFormatPanel(g,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);q.appendChild(g);g=document.createElement("span");mxUtils.write(g,mxResources.get("pageScale"));q.appendChild(g); -var K=document.createElement("input");K.style.cssText="margin:0 8px 0 8px;";K.setAttribute("value","100 %");K.style.width="60px";q.appendChild(K);k.appendChild(q);g=document.createElement("div");g.style.cssText="text-align:right;margin:48px 0 0 0;";q=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});q.className="geBtn";a.editor.cancelFirst&&g.appendChild(q);a.isOffline()||(A=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}), -A.className="geBtn",g.appendChild(A));PrintDialog.previewEnabled&&(A=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();e(!1)}),A.className="geBtn",g.appendChild(A));A=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();e(!0)});A.className="geBtn gePrimaryBtn";g.appendChild(A);a.editor.cancelFirst||g.appendChild(q);k.appendChild(g);this.container=k};var y=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null== +q.closeDocument(),!q.mathEnabled&&c&&PrintDialog.printPreview(q))}var d=a.editor.graph,g=document.createElement("div"),k=document.createElement("h3");k.style.width="100%";k.style.textAlign="center";k.style.marginTop="0px";mxUtils.write(k,c||mxResources.get("print"));g.appendChild(k);var f=1,n=1,q=document.createElement("div");q.style.cssText="border-bottom:1px solid lightGray;padding-bottom:12px;margin-bottom:12px;";var v=document.createElement("input");v.style.cssText="margin-right:8px;margin-bottom:8px;"; +v.setAttribute("value","all");v.setAttribute("type","radio");v.setAttribute("name","pages-printdialog");q.appendChild(v);k=document.createElement("span");mxUtils.write(k,mxResources.get("printAllPages"));q.appendChild(k);mxUtils.br(q);var l=v.cloneNode(!0);v.setAttribute("checked","checked");l.setAttribute("value","range");q.appendChild(l);k=document.createElement("span");mxUtils.write(k,mxResources.get("pages")+":");q.appendChild(k);var x=document.createElement("input");x.style.cssText="margin:0 8px 0 8px;"; +x.setAttribute("value","1");x.setAttribute("type","number");x.setAttribute("min","1");x.style.width="50px";q.appendChild(x);k=document.createElement("span");mxUtils.write(k,mxResources.get("to"));q.appendChild(k);var y=x.cloneNode(!0);q.appendChild(y);mxEvent.addListener(x,"focus",function(){l.checked=!0});mxEvent.addListener(y,"focus",function(){l.checked=!0});mxEvent.addListener(x,"change",b);mxEvent.addListener(y,"change",b);if(null!=a.pages&&(f=a.pages.length,null!=a.currentPage))for(k=0;k<a.pages.length;k++)if(a.currentPage== +a.pages[k]){n=k+1;x.value=n;y.value=n;break}x.setAttribute("max",f);y.setAttribute("max",f);1<f&&g.appendChild(q);var z=document.createElement("div");z.style.marginBottom="10px";var t=document.createElement("input");t.style.marginRight="8px";t.setAttribute("value","adjust");t.setAttribute("type","radio");t.setAttribute("name","printZoom");z.appendChild(t);k=document.createElement("span");mxUtils.write(k,mxResources.get("adjustTo"));z.appendChild(k);var m=document.createElement("input");m.style.cssText= +"margin:0 8px 0 8px;";m.setAttribute("value","100 %");m.style.width="50px";z.appendChild(m);mxEvent.addListener(m,"focus",function(){t.checked=!0});g.appendChild(z);var q=q.cloneNode(!1),C=t.cloneNode(!0);C.setAttribute("value","fit");t.setAttribute("checked","checked");k=document.createElement("div");k.style.cssText="display:inline-block;height:100%;vertical-align:top;padding-top:2px;";k.appendChild(C);q.appendChild(k);z=document.createElement("table");z.style.display="inline-block";var p=document.createElement("tbody"), +F=document.createElement("tr"),I=F.cloneNode(!0),u=document.createElement("td"),A=u.cloneNode(!0),J=u.cloneNode(!0),B=u.cloneNode(!0),ka=u.cloneNode(!0),Q=u.cloneNode(!0);u.style.textAlign="right";B.style.textAlign="right";mxUtils.write(u,mxResources.get("fitTo"));var S=document.createElement("input");S.style.cssText="margin:0 8px 0 8px;";S.setAttribute("value","1");S.setAttribute("min","1");S.setAttribute("type","number");S.style.width="40px";A.appendChild(S);k=document.createElement("span");mxUtils.write(k, +mxResources.get("fitToSheetsAcross"));J.appendChild(k);mxUtils.write(B,mxResources.get("fitToBy"));var ca=S.cloneNode(!0);ka.appendChild(ca);mxEvent.addListener(S,"focus",function(){C.checked=!0});mxEvent.addListener(ca,"focus",function(){C.checked=!0});k=document.createElement("span");mxUtils.write(k,mxResources.get("fitToSheetsDown"));Q.appendChild(k);F.appendChild(u);F.appendChild(A);F.appendChild(J);I.appendChild(B);I.appendChild(ka);I.appendChild(Q);p.appendChild(F);p.appendChild(I);z.appendChild(p); +q.appendChild(z);g.appendChild(q);q=document.createElement("div");k=document.createElement("div");k.style.fontWeight="bold";k.style.marginBottom="12px";mxUtils.write(k,mxResources.get("paperSize"));q.appendChild(k);k=document.createElement("div");k.style.marginBottom="12px";var ta=PageSetupDialog.addPageFormatPanel(k,"printdialog",a.editor.graph.pageFormat||mxConstants.PAGE_FORMAT_A4_PORTRAIT);q.appendChild(k);k=document.createElement("span");mxUtils.write(k,mxResources.get("pageScale"));q.appendChild(k); +var K=document.createElement("input");K.style.cssText="margin:0 8px 0 8px;";K.setAttribute("value","100 %");K.style.width="60px";q.appendChild(K);g.appendChild(q);k=document.createElement("div");k.style.cssText="text-align:right;margin:48px 0 0 0;";q=mxUtils.button(mxResources.get("cancel"),function(){a.hideDialog()});q.className="geBtn";a.editor.cancelFirst&&k.appendChild(q);a.isOffline()||(z=mxUtils.button(mxResources.get("help"),function(){d.openLink("https://desk.draw.io/support/solutions/articles/16000048947")}), +z.className="geBtn",k.appendChild(z));PrintDialog.previewEnabled&&(z=mxUtils.button(mxResources.get("preview"),function(){a.hideDialog();e(!1)}),z.className="geBtn",k.appendChild(z));z=mxUtils.button(mxResources.get(PrintDialog.previewEnabled?"print":"ok"),function(){a.hideDialog();e(!0)});z.className="geBtn gePrimaryBtn";k.appendChild(z);a.editor.cancelFirst||k.appendChild(q);g.appendChild(k);this.container=g};var y=ChangePageSetup.prototype.execute;ChangePageSetup.prototype.execute=function(){null== this.page&&(this.page=this.ui.currentPage);this.page!=this.ui.currentPage?null!=this.page.viewState&&(this.ignoreColor||(this.page.viewState.background=this.color),this.ignoreImage||(this.page.viewState.backgroundImage=this.image),null!=this.format&&(this.page.viewState.pageFormat=this.format),null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled),null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)):(y.apply(this,arguments),null!=this.mathEnabled&& this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled),null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible))};Editor.prototype.useCanvasForExport=!1;try{var F=document.createElement("canvas"),C=new Image;C.onload=function(){try{F.getContext("2d").drawImage(C,0,0);var a=F.toDataURL("image/png");Editor.prototype.useCanvasForExport= -null!=a&&6<a.length}catch(J){}};C.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(v){}})(); -(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="@DRAWIO-VERSION@";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost="https://www.draw.io";EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t"; +null!=a&&6<a.length}catch(J){}};C.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(t){}})(); +(function(){var a=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);a.beforeDecode=function(a,f,d){d.ui=a.ui;return f};a.afterDecode=function(a,f,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(a)})();(function(){EditorUi.VERSION="@DRAWIO-VERSION@";EditorUi.compactUi="atlas"!=uiTheme;mxGraphView.prototype.defaultDarkGridColor="#6e6e6e";"dark"==uiTheme&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&/.*\.draw\.io$/.test(window.location.hostname)&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost=window.DRAWIO_BASE_URL;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t"; EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl="1"==urlParams.dev?"/cache":window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&&null!=window.process.versions.electron;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&!EditorUi.isElectronApp&&"0"!=urlParams.drafts; EditorUi.scratchpadHelpLink="https://desk.draw.io/support/solutions/articles/16000042367";EditorUi.logError=function(a,b,d,f,n){if("1"==urlParams.dev)EditorUi.debug("logError",a,b,d,f,n);else if(EditorUi.enableLogging)try{if(a!=EditorUi.lastErrorMessage&&(null==a||null==b||-1==a.indexOf("Script error")&&-1==a.indexOf("extension"))&&null!=a&&0>a.indexOf("DocumentClosedError")){EditorUi.lastErrorMessage=a;var c=0<=a.indexOf("NetworkError")||0<=a.indexOf("SecurityError")||0<=a.indexOf("NS_ERROR_FAILURE")|| 0<=a.indexOf("out of memory")?"CONFIG":"SEVERE",e=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";n=null!=n?n:Error(a);(new Image).src=e+"/log?severity="+c+"&v="+encodeURIComponent(EditorUi.VERSION)+"&msg=clientError:"+encodeURIComponent(a)+":url:"+encodeURIComponent(window.location.href)+":lnum:"+encodeURIComponent(d)+(null!=f?":colno:"+encodeURIComponent(f):"")+(null!=n&&null!=n.stack?"&stack="+encodeURIComponent(n.stack):"")}}catch(x){}};EditorUi.logEvent=function(a){if("1"==urlParams.dev)EditorUi.debug("logEvent", a);else if(EditorUi.enableLogging)try{var c=null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"";(new Image).src=c+"/images/1x1.png?v="+encodeURIComponent(EditorUi.VERSION)+(null!=a?"&data="+encodeURIComponent(JSON.stringify(a)):"")}catch(k){}};EditorUi.sendReport=function(a,b){if("1"==urlParams.dev)EditorUi.debug("sendReport",a);else if(EditorUi.enableLogging)try{b=null!=b?b:5E4,a.length>b&&(a=a.substring(0,b)+"\n...[SHORTENED]"),mxUtils.post("/email","version="+encodeURIComponent(EditorUi.VERSION)+ -"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(k){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);console.log.apply(console,a)}}catch(k){}};EditorUi.parsePng=function(a,b,d){function c(a,c){var b=k;k+=c;return a.substring(b,k)}function e(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var k=0; -if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(c(a,4),"IHDR"!=c(a,4))null!=d&&d();else{c(a,17);do{d=e(a);var f=c(a,4);if(null!=b&&b(k-8,f,d))break;value=c(a,d);c(a,4);if("IEND"==f)break}while(d)}};EditorUi.removeChildNodes=function(a){for(;null!=a.firstChild;)a.removeChild(a.firstChild)};EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>"; +"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(a))}catch(k){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var a=[(new Date).toISOString()],b=0;b<arguments.length;b++)a.push(arguments[b]);console.log.apply(console,a)}}catch(k){}};EditorUi.parsePng=function(a,b,d){function c(a,c){var b=g;g+=c;return a.substring(b,g)}function e(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}var g=0; +if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=d&&d();else if(c(a,4),"IHDR"!=c(a,4))null!=d&&d();else{c(a,17);do{d=e(a);var k=c(a,4);if(null!=b&&b(g-8,k,d))break;value=c(a,d);c(a,4);if("IEND"==k)break}while(d)}};EditorUi.removeChildNodes=function(a){for(;null!=a.firstChild;)a.removeChild(a.firstChild)};EditorUi.prototype.emptyDiagramXml='<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/></root></mxGraphModel>';EditorUi.prototype.emptyLibraryXml="<mxlibrary>[]</mxlibrary>"; EditorUi.prototype.mode=null;EditorUi.prototype.timeout=Editor.prototype.timeout;EditorUi.prototype.sidebarFooterHeight=38;EditorUi.prototype.defaultCustomShapeStyle="shape=stencil(tZRtTsQgEEBPw1+DJR7AoN6DbWftpAgE0Ortd/jYRGq72R+YNE2YgTePloEJGWblgA18ZuKFDcMj5/Sm8boZq+BgjCX4pTyqk6ZlKROitwusOMXKQDODx5iy4pXxZ5qTHiFHawxB0JrQZH7lCabQ0Fr+XWC1/E8zcsT/gAi+Subo2/3Mh6d/oJb5nU1b5tW7r2knautaa3T+U32o7f7vZwpJkaNDLORJjcu7t59m2jXxqX9un+tt022acsfmoKaQZ+vhhswZtS6Ne/ThQGt0IV0N3Yyv6P3CeT9/tHO0XFI5cAE=);whiteSpace=wrap;html=1;"; EditorUi.prototype.svgBrokenImage=Graph.createSvgImage(10,10,'<rect x="0" y="0" width="10" height="10" stroke="#000" fill="transparent"/><path d="m 0 0 L 10 10 L 0 10 L 10 0" stroke="#000" fill="transparent"/>');EditorUi.prototype.crossOriginImages=!mxClient.IS_IE;EditorUi.prototype.maxBackgroundSize=1600;EditorUi.prototype.maxImageSize=520;EditorUi.prototype.resampleThreshold=1E5;EditorUi.prototype.maxImageBytes=1E6;EditorUi.prototype.maxBackgroundBytes=25E5;EditorUi.prototype.maxTextBytes=5E5;EditorUi.prototype.currentFile= null;EditorUi.prototype.printPdfExport=!1;EditorUi.prototype.pdfPageExport=!0;EditorUi.prototype.formatEnabled="0"!=urlParams.format;EditorUi.prototype.insertTemplateEnabled=!0;EditorUi.prototype.closableScratchpad=!0;(function(){EditorUi.prototype.useCanvasForExport=!1;EditorUi.prototype.jpgSupported=!1;try{var a=document.createElement("canvas");EditorUi.prototype.canvasSupported=!(!a.getContext||!a.getContext("2d"))}catch(n){}try{var b=document.createElement("canvas"),d=new Image;d.onload=function(){try{b.getContext("2d").drawImage(d, 0,0);var a=b.toDataURL("image/png");EditorUi.prototype.useCanvasForExport=null!=a&&6<a.length}catch(g){}};d.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1px" height="1px" version="1.1"><foreignObject pointer-events="all" width="1" height="1"><div xmlns="http://www.w3.org/1999/xhtml"></div></foreignObject></svg>')))}catch(n){}try{b=document.createElement("canvas");b.width=b.height=1;var f= b.toDataURL("image/jpeg");EditorUi.prototype.jpgSupported=null!==f.match("image/jpeg")}catch(n){}})();EditorUi.prototype.openLink=function(a,b,d){return this.editor.graph.openLink(a,b,d)};EditorUi.prototype.showSplash=function(a){};EditorUi.prototype.getLocalData=function(a,b){b(localStorage.getItem(a))};EditorUi.prototype.setLocalData=function(a,b,d){localStorage.setItem(a,b);null!=d&&d()};EditorUi.prototype.removeLocalData=function(a,b){localStorage.removeItem(a);b()};EditorUi.prototype.setMathEnabled= function(a){this.editor.graph.mathEnabled=a;this.editor.updateGraphComponents();this.editor.graph.refresh();this.fireEvent(new mxEventObject("mathEnabledChanged"))};EditorUi.prototype.isMathEnabled=function(a){return this.editor.graph.mathEnabled};EditorUi.prototype.isAppCache=function(){return("1"==urlParams.appcache||this.isOfflineApp())&&!("serviceWorker"in navigator)};EditorUi.prototype.isOfflineApp=function(){return"1"==urlParams.offline};EditorUi.prototype.isOffline=function(a){return this.isOfflineApp()|| -!navigator.onLine||!a&&"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,d){d=null!=d?d:24;var c=new Spinner({lines:12,length:d,width:Math.round(d/3),radius:Math.round(d/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),e=c.spin;c.spin=function(d,k){var g=!1;this.active||(e.call(this,d),this.active=!0,null!=k&&(g=document.createElement("div"),g.style.position="absolute",g.style.whiteSpace="nowrap",g.style.background="#4B4243", -g.style.color="white",g.style.fontFamily="Helvetica, Arial",g.style.fontSize="9pt",g.style.padding="6px",g.style.paddingLeft="10px",g.style.paddingRight="10px",g.style.zIndex=2E9,g.style.left=Math.max(0,a)+"px",g.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(g.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(g.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(g.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=k.substring(k.length-3,k.length)&&"!"!= -k.charAt(k.length-1)&&(k+="..."),g.innerHTML=k,d.appendChild(g),c.status=g,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(g.style.left=Math.round(Math.max(0,a-g.offsetWidth/2))+"px",g.style.top=Math.round(Math.max(0,b+70-g.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(d,k)}));this.stop();return a}),g=!0);return g};var k=c.stop;c.stop=function(){k.call(this);this.active=!1;null!= +!navigator.onLine||!a&&"1"==urlParams.stealth};EditorUi.prototype.createSpinner=function(a,b,d){d=null!=d?d:24;var c=new Spinner({lines:12,length:d,width:Math.round(d/3),radius:Math.round(d/2),rotate:0,color:"dark"==uiTheme?"#c0c0c0":"#000",speed:1.5,trail:60,shadow:!1,hwaccel:!1,zIndex:2E9}),e=c.spin;c.spin=function(d,g){var k=!1;this.active||(e.call(this,d),this.active=!0,null!=g&&(k=document.createElement("div"),k.style.position="absolute",k.style.whiteSpace="nowrap",k.style.background="#4B4243", +k.style.color="white",k.style.fontFamily="Helvetica, Arial",k.style.fontSize="9pt",k.style.padding="6px",k.style.paddingLeft="10px",k.style.paddingRight="10px",k.style.zIndex=2E9,k.style.left=Math.max(0,a)+"px",k.style.top=Math.max(0,b+70)+"px",mxUtils.setPrefixedStyle(k.style,"borderRadius","6px"),mxUtils.setPrefixedStyle(k.style,"transform","translate(-50%,-50%)"),"dark"!=uiTheme&&mxUtils.setPrefixedStyle(k.style,"boxShadow","2px 2px 3px 0px #ddd"),"..."!=g.substring(g.length-3,g.length)&&"!"!= +g.charAt(g.length-1)&&(g+="..."),k.innerHTML=g,d.appendChild(k),c.status=k,mxClient.IS_VML&&(null==document.documentMode||8>=document.documentMode)&&(k.style.left=Math.round(Math.max(0,a-k.offsetWidth/2))+"px",k.style.top=Math.round(Math.max(0,b+70-k.offsetHeight/2))+"px")),this.pause=mxUtils.bind(this,function(){var a=function(){};this.active&&(a=mxUtils.bind(this,function(){this.spin(d,g)}));this.stop();return a}),k=!0);return k};var g=c.stop;c.stop=function(){g.call(this);this.active=!1;null!= c.status&&null!=c.status.parentNode&&c.status.parentNode.removeChild(c.status);c.status=null};c.pause=function(){return function(){}};return c};EditorUi.prototype.isCompatibleString=function(a){try{var c=mxUtils.parseXml(a),b=this.editor.extractGraphModel(c.documentElement,!0);return null!=b&&0==b.getElementsByTagName("parsererror").length}catch(q){}return!1};EditorUi.prototype.isVisioData=function(a){return 8<a.length&&208==a.charCodeAt(0)&&207==a.charCodeAt(1)&&17==a.charCodeAt(2)&&224==a.charCodeAt(3)&& 161==a.charCodeAt(4)&&177==a.charCodeAt(5)&&26==a.charCodeAt(6)&&225==a.charCodeAt(7)||80==a.charCodeAt(0)&&75==a.charCodeAt(1)&&3==a.charCodeAt(2)&&4==a.charCodeAt(3)||80==a.charCodeAt(0)&&75==a.charCodeAt(1)&&3==a.charCodeAt(2)&&6==a.charCodeAt(3)};EditorUi.prototype.isPngData=function(a){return 8<a.length&&137==a.charCodeAt(0)&&80==a.charCodeAt(1)&&78==a.charCodeAt(2)&&71==a.charCodeAt(3)&&13==a.charCodeAt(4)&&10==a.charCodeAt(5)&&26==a.charCodeAt(6)&&10==a.charCodeAt(7)};var a=EditorUi.prototype.extractGraphModelFromHtml; -EditorUi.prototype.extractGraphModelFromHtml=function(c){var b=a.apply(this,arguments);if(null==b)try{var d=c.indexOf("<mxfile ");if(0<=d){var f=c.lastIndexOf("</mxfile>");f>d&&(b=c.substring(d,f+15).replace(/>/g,">").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}else var n=mxUtils.parseXml(c),g=this.editor.extractGraphModel(n.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=g?mxUtils.getXml(g):""}catch(A){}return b};EditorUi.prototype.validateFileData= +EditorUi.prototype.extractGraphModelFromHtml=function(c){var b=a.apply(this,arguments);if(null==b)try{var d=c.indexOf("<mxfile ");if(0<=d){var f=c.lastIndexOf("</mxfile>");f>d&&(b=c.substring(d,f+15).replace(/>/g,">").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}else var n=mxUtils.parseXml(c),g=this.editor.extractGraphModel(n.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility),b=null!=g?mxUtils.getXml(g):""}catch(z){}return b};EditorUi.prototype.validateFileData= function(a){if(null!=a&&0<a.length){var c=a.indexOf('<meta charset="utf-8">');0<=c&&(a=a.slice(0,c)+'<meta charset="utf-8"/>'+a.slice(c+23-1,a.length));a=Graph.zapGremlins(a)}return a};EditorUi.prototype.replaceFileData=function(a){a=this.validateFileData(a);a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var c=null!=a?this.editor.extractGraphModel(a,!0):null;null!=c&&(a=c);if(null!=a){c=this.editor.graph;c.model.beginUpdate();try{var b=null!=this.pages?this.pages.slice():null,d=a.getElementsByTagName("diagram"); if("0"!=urlParams.pages||1<d.length||1==d.length&&d[0].hasAttribute("name")){this.fileNode=a;this.pages=null!=this.pages?this.pages:[];for(var f=d.length-1;0<=f;f--){var g=this.updatePageRoot(new DiagramPage(d[f]));null==g.getName()&&g.setName(mxResources.get("pageWithNumber",[f+1]));c.model.execute(new ChangePage(this,g,0==f?g:null,0))}}else"0"!=urlParams.pages&&null==this.fileNode&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")), -this.currentPage.setName(mxResources.get("pageWithNumber",[1])),c.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=b)for(f=0;f<b.length;f++)c.model.execute(new ChangePage(this,b[f],null))}finally{c.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,d,f,n,g,l,x,t,m,y){b=null!=b?b:this.editor.graph;n=null!=n?n:!1;t=null!=t?t:!0;var c,e=null;null== +this.currentPage.setName(mxResources.get("pageWithNumber",[1])),c.model.execute(new ChangePage(this,this.currentPage,this.currentPage,0))),this.editor.setGraphXml(a),null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=b)for(f=0;f<b.length;f++)c.model.execute(new ChangePage(this,b[f],null))}finally{c.model.endUpdate()}}};EditorUi.prototype.createFileData=function(a,b,d,f,n,g,l,x,v,m,y){b=null!=b?b:this.editor.graph;n=null!=n?n:!1;v=null!=v?v:!0;var c,e=null;null== d||d.getMode()==App.MODE_DEVICE||d.getMode()==App.MODE_BROWSER?c="_blank":e=c=f;if(null==a)return"";var k=a;if("mxfile"!=k.nodeName.toLowerCase()){if(y){var q=a.ownerDocument.createElement("diagram");q.setAttribute("id",Editor.guid());q.appendChild(a)}else{q=Graph.zapGremlins(mxUtils.getXml(a));k=Graph.compress(q);if(Graph.decompress(k)!=q)return q;q=a.ownerDocument.createElement("diagram");q.setAttribute("id",Editor.guid());mxUtils.setTextContent(q,k)}k=a.ownerDocument.createElement("mxfile");k.appendChild(q)}m? (k=k.cloneNode(!0),k.removeAttribute("modified"),k.removeAttribute("host"),k.removeAttribute("agent"),k.removeAttribute("etag"),k.removeAttribute("userAgent"),k.removeAttribute("version"),k.removeAttribute("editor"),k.removeAttribute("type")):(k.removeAttribute("userAgent"),k.removeAttribute("version"),k.removeAttribute("editor"),k.removeAttribute("pages"),k.removeAttribute("type"),mxClient.IS_CHROMEAPP?k.setAttribute("host","Chrome"):EditorUi.isElectronApp?k.setAttribute("host","Electron"):k.setAttribute("host", window.location.hostname),k.setAttribute("modified",(new Date).toISOString()),k.setAttribute("agent",navigator.userAgent),k.setAttribute("version",EditorUi.VERSION),k.setAttribute("etag",Editor.guid()),a=null!=d?d.getMode():this.mode,null!=a&&k.setAttribute("type",a),1<k.getElementsByTagName("diagram").length&&null!=this.pages&&k.setAttribute("pages",this.pages.length));y=y?mxUtils.getPrettyXml(k):mxUtils.getXml(k);if(!g&&!n&&(l||null!=d&&/(\.html)$/i.test(d.getTitle())))y=this.getHtml2(mxUtils.getXml(k), -b,null!=d?d.getTitle():null,c,e);else if(g||!n&&null!=d&&/(\.svg)$/i.test(d.getTitle()))null==d||d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER||(f=null),y=this.getEmbeddedSvg(y,b,f,null,x,t,e);return y};EditorUi.prototype.getXmlFileData=function(a,b,d){a=null!=a?a:!0;b=null!=b?b:!1;d=null!=d?d:!Editor.compressXml;var c=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(a=function(a){var b=a.getElementsByTagName("mxGraphModel"),b=0<b.length?b[0]:null;null== +b,null!=d?d.getTitle():null,c,e);else if(g||!n&&null!=d&&/(\.svg)$/i.test(d.getTitle()))null==d||d.getMode()!=App.MODE_DEVICE&&d.getMode()!=App.MODE_BROWSER||(f=null),y=this.getEmbeddedSvg(y,b,f,null,x,v,e);return y};EditorUi.prototype.getXmlFileData=function(a,b,d){a=null!=a?a:!0;b=null!=b?b:!1;d=null!=d?d:!Editor.compressXml;var c=this.editor.getGraphXml(a);if(a&&null!=this.fileNode&&null!=this.currentPage)if(a=function(a){var b=a.getElementsByTagName("mxGraphModel"),b=0<b.length?b[0]:null;null== b&&d?(b=mxUtils.trim(mxUtils.getTextContent(a)),a=a.cloneNode(!1),0<b.length&&(b=Graph.decompress(b),null!=b&&0<b.length&&a.appendChild(mxUtils.parseXml(b).documentElement))):null==b||d?a=a.cloneNode(!0):(a=a.cloneNode(!1),mxUtils.setTextContent(a,Graph.compressNode(b)));c.appendChild(a)},EditorUi.removeChildNodes(this.currentPage.node),mxUtils.setTextContent(this.currentPage.node,Graph.compressNode(c)),c=this.fileNode.cloneNode(!1),b)a(this.currentPage.node);else for(b=0;b<this.pages.length;b++){if(this.currentPage!= this.pages[b]&&this.pages[b].needsUpdate){var e=(new mxCodec(mxUtils.createXmlDocument())).encode(new mxGraphModel(this.pages[b].root));this.editor.graph.saveViewState(this.pages[b].viewState,e);EditorUi.removeChildNodes(this.pages[b].node);mxUtils.setTextContent(this.pages[b].node,Graph.compressNode(e));delete this.pages[b].needsUpdate}a(this.pages[b].node)}return c};EditorUi.prototype.anonymizeString=function(a,b){for(var c=[],e=0;e<a.length;e++){var d=a.charAt(e);0<=EditorUi.ignoredAnonymizedChars.indexOf(d)? c.push(d):isNaN(parseInt(d))?d.toLowerCase()!=d?c.push(String.fromCharCode(65+Math.round(25*Math.random()))):d.toUpperCase()!=d?c.push(String.fromCharCode(97+Math.round(25*Math.random()))):/\s/.test(d)?c.push(" "):c.push("?"):c.push(b?"0":Math.round(9*Math.random()))}return c.join("")};EditorUi.prototype.anonymizePatch=function(a){if(null!=a[EditorUi.DIFF_INSERT])for(var c=0;c<a[EditorUi.DIFF_INSERT].length;c++)try{var b=mxUtils.parseXml(a[EditorUi.DIFF_INSERT][c].data).documentElement.cloneNode(!1); @@ -3032,39 +3033,39 @@ null!=c[b].xmlValue&&(c[b].xmlValue="["+c[b].xmlValue.length+"]"),null!=c[b].sty b){if(null!=a.attributes)for(var c=0;c<a.attributes.length;c++)"as"!=a.attributes[c].name&&a.setAttribute(a.attributes[c].name,this.anonymizeString(a.attributes[c].value,b));if(null!=a.childNodes)for(c=0;c<a.childNodes.length;c++)this.anonymizeAttributes(a.childNodes[c],b)};EditorUi.prototype.anonymizeNode=function(a,b){for(var c=a.getElementsByTagName("mxCell"),e=0;e<c.length;e++)null!=c[e].getAttribute("value")&&c[e].setAttribute("value","["+c[e].getAttribute("value").length+"]"),null!=c[e].getAttribute("xmlValue")&& c[e].setAttribute("xmlValue","["+c[e].getAttribute("xmlValue").length+"]"),null!=c[e].getAttribute("style")&&c[e].setAttribute("style","["+c[e].getAttribute("style").length+"]"),null!=c[e].parentNode&&"root"!=c[e].parentNode.nodeName&&null!=c[e].parentNode.parentNode&&(c[e].setAttribute("id",c[e].parentNode.getAttribute("id")),c[e].parentNode.parentNode.replaceChild(c[e],c[e].parentNode));return a};EditorUi.prototype.synchronizeCurrentFile=function(a){var c=this.getCurrentFile();null!=c&&(c.savingFile? this.handleError({message:mxResources.get("busy")}):!a&&c.invalidChecksum?c.handleFileError(null,!0):this.spinner.spin(document.body,mxResources.get("updatingDocument"))&&(c.clearAutosave(),this.editor.setStatus(""),a?c.reloadFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){c.handleFileError(a,!0)})):c.synchronizeFile(mxUtils.bind(this,function(){c.handleFileSuccess("manual"==DrawioFile.SYNC)}),mxUtils.bind(this,function(a){c.handleFileError(a, -!0)}))))};EditorUi.prototype.getFileData=function(a,b,d,f,n,g,l,x,t,m){n=null!=n?n:!0;g=null!=g?g:!1;var c=this.editor.graph;if(b||!a&&null!=t&&/(\.svg)$/i.test(t.getTitle()))if(m=!1,null!=this.pages&&this.currentPage!=this.pages[0]){var e=c.getGlobalVariable,c=this.createTemporaryGraph(c.getStylesheet()),k=this.pages[0];c.getGlobalVariable=function(a){return"page"==a?k.getName():"pagenumber"==a?1:e.apply(this,arguments)};document.body.appendChild(c.container);c.model.setRoot(k.root)}l=null!=l?l: -this.getXmlFileData(n,g,m);t=null!=t?t:this.getCurrentFile();a=this.createFileData(l,c,t,window.location.href,a,b,d,f,n,x,m);c!=this.editor.graph&&c.container.parentNode.removeChild(c.container);return a};EditorUi.prototype.getHtml=function(a,b,d,f,n,g){g=null!=g?g:!0;var c=null,e=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var c=g?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),k=b.view.scale;g=Math.floor(c.x/k-b.view.translate.x);k=Math.floor(c.y/k-b.view.translate.y);c=b.background; +!0)}))))};EditorUi.prototype.getFileData=function(a,b,d,f,n,g,l,x,v,m){n=null!=n?n:!0;g=null!=g?g:!1;var c=this.editor.graph;if(b||!a&&null!=v&&/(\.svg)$/i.test(v.getTitle()))if(m=!1,null!=this.pages&&this.currentPage!=this.pages[0]){var e=c.getGlobalVariable,c=this.createTemporaryGraph(c.getStylesheet()),k=this.pages[0];c.getGlobalVariable=function(a){return"page"==a?k.getName():"pagenumber"==a?1:e.apply(this,arguments)};document.body.appendChild(c.container);c.model.setRoot(k.root)}l=null!=l?l: +this.getXmlFileData(n,g,m);v=null!=v?v:this.getCurrentFile();a=this.createFileData(l,c,v,window.location.href,a,b,d,f,n,x,m);c!=this.editor.graph&&c.container.parentNode.removeChild(c.container);return a};EditorUi.prototype.getHtml=function(a,b,d,f,n,g){g=null!=g?g:!0;var c=null,e=EditorUi.drawHost+"/js/embed-static.min.js";if(null!=b){var c=g?b.getGraphBounds():b.getBoundingBox(b.getSelectionCells()),k=b.view.scale;g=Math.floor(c.x/k-b.view.translate.x);k=Math.floor(c.y/k-b.view.translate.y);c=b.background; null==n&&(b=this.getBasenames().join(";"),0<b.length&&(e=EditorUi.drawHost+"/embed.js?s="+b));a.setAttribute("x0",g);a.setAttribute("y0",k)}null!=a&&(a.setAttribute("pan","1"),a.setAttribute("zoom","1"),a.setAttribute("resize","0"),a.setAttribute("fit","0"),a.setAttribute("border","20"),a.setAttribute("links","1"),null!=f&&a.setAttribute("edit",f));null!=n&&(n=n.replace(/&/g,"&"));a=null!=a?Graph.zapGremlins(mxUtils.getXml(a)):"";f=Graph.compress(a);Graph.decompress(f)!=a&&(f=encodeURIComponent(a)); return(null==n?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=n?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==n?null!=d?"<title>"+mxUtils.htmlEntities(d)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=n?'<meta http-equiv="refresh" content="0;URL=\''+n+"'\"/>\n":"")+"</head>\n<body"+(null==n&&null!=c&&c!=mxConstants.NONE?' style="background-color:'+c+';">':">")+'\n<div class="mxgraph" style="position:relative;overflow:auto;width:100%;">\n<div style="width:1px;height:1px;overflow:hidden;">'+ -f+"</div>\n</div>\n"+(null==n?'<script type="text/javascript" src="'+e+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+n+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,d,f,n){b=EditorUi.drawHost+"/js/viewer.min.js";null!=n&&(n=n.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled,resize:!0,xml:Graph.zapGremlins(a), -toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==n?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=n?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==n?null!=d?"<title>"+mxUtils.htmlEntities(d)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=n?'<meta http-equiv="refresh" content="0;URL=\''+n+"'\"/>\n": -"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==n?'<script type="text/javascript" src="'+b+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+n+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData=function(a){a= -this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var c=Editor.extractParserError(a,mxResources.get("invalidOrMissingFile"));if(c)throw Error(c);c=null!=a?this.editor.extractGraphModel(a,!0):null;null!=c&&(a=c);if(null!=a&&"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name"))){var b=null;this.fileNode=a;this.pages=[];for(var d=0;d<c.length;d++)null== -c[d].getAttribute("id")&&c[d].setAttribute("id",d),a=new DiagramPage(c[d]),null==a.getName()&&a.setName(mxResources.get("pageWithNumber",[d+1])),this.pages.push(a),null!=urlParams["page-id"]&&a.getId()==urlParams["page-id"]&&(b=a);this.currentPage=null!=b?b:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage=new DiagramPage(a.ownerDocument.createElement("diagram")), -this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");a={};for(d=0;d<f.length;d++)a[f[d]]=!0;for(var g=this.editor.graph.getModel(),l=g.getChildren(g.root),d=0;d<l.length;d++){var x=l[d];g.setVisible(x,a[x.id]||!1)}}catch(t){}};EditorUi.prototype.getBaseFilename=function(a){var c= -this.getCurrentFile(),c=null!=c&&null!=c.getTitle()?c.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(c)||/(\.html)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.png)$/i.test(c)||/(\.drawio)$/i.test(c))c=c.substring(0,c.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(c=c+"-"+this.currentPage.getName());return c};EditorUi.prototype.downloadFile=function(a,b,d,f,n,g,l,x,t,m,y){try{f= -null!=f?f:this.editor.graph.isSelectionEmpty();var c=this.getBaseFilename(!n),e=c+"."+a;if("xml"==a){var k='<?xml version="1.0" encoding="UTF-8"?>\n'+this.getFileData(!0,null,null,null,f,n,null,null,null,b);this.saveData(e,a,k,"text/xml")}else if("html"==a)k=this.getHtml2(this.getFileData(!0),this.editor.graph,c),this.saveData(e,a,k,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?e=c+".png":"jpeg"==a&&(e=c+".jpg"),this.saveRequest(e, -a,mxUtils.bind(this,function(c,b){try{var e=this.editor.graph.pageVisible;null!=g&&(this.editor.graph.pageVisible=g);var d=this.createDownloadRequest(c,a,f,b,l,n,x,t,m,y);this.editor.graph.pageVisible=e;return d}catch(ba){this.handleError(ba)}}));else{var q=null,A=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(e,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(q)}))}); -if("svg"==a){var p=this.editor.graph.background;if(l||p==mxConstants.NONE)p=null;var H=this.editor.graph.getSvg(p,null,null,null,null,f);d&&this.editor.graph.addSvgShadow(H);this.convertImages(H,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();A('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else e=c+".svg",q=this.getFileData(!1,!0,null,mxUtils.bind(this,function(a){this.spinner.stop(); -A(a)}),f)}}catch(D){this.handleError(D)}};EditorUi.prototype.createDownloadRequest=function(a,b,d,f,n,g,l,x,t,m){var c=this.editor.graph,e=c.getGraphBounds();d=this.getFileData(!0,null,null,null,d,0==g?!1:"xmlpng"!=b);var k="",q="";if(e.width*e.height>MAX_AREA||d.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};m=m?"1":"0";"pdf"==b&&0==g&&(q="&allPages=1");if("xmlpng"==b&&(m="1",b="png",null!=this.pages&&null!=this.currentPage))for(g=0;g<this.pages.length;g++)if(this.pages[g]== -this.currentPage){k="&from="+g;break}g=c.background;"png"==b&&n?g=mxConstants.NONE:n||null!=g&&g!=mxConstants.NONE||(g="#ffffff");n={globalVars:c.getExportVariables()};t&&(n.grid={size:c.gridSize,steps:c.view.gridSteps,color:c.view.gridColor});return new mxXmlRequest(EXPORT_URL,"format="+b+k+q+"&bg="+(null!=g?g:mxConstants.NONE)+"&base64="+f+"&embedXml="+m+"&xml="+encodeURIComponent(d)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(n))+(null!=l?"&scale="+ -l:"")+(null!=x?"&border="+x:""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,b,d){var c=window.location.hash,e=mxUtils.bind(this,function(e){var d=null!=a.data?a.data:"";null!=e&&0<e.length&&(0<d.length&&(d+="\n"),d+=e);e=new LocalFile(this,"csv"!=a.format&&0<d.length?d:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);e.getHash=function(){return c};this.fileLoaded(e);"csv"==a.format&&this.importCsv(d, -mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var k=null!=a.interval?parseInt(a.interval):6E4,g=null,f=mxUtils.bind(this,function(){var c=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){c===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),n()):this.handleError({message:mxResources.get("error")+ -" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),n=mxUtils.bind(this,function(){window.clearTimeout(g);g=window.setTimeout(f,k)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){n();f()}));n();f()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var k=a.url;/^https?:\/\//.test(k)&&!this.editor.isCorsEnabledForUrl(k)&&(k=PROXY_URL+"?url="+encodeURIComponent(k));this.loadUrl(k,mxUtils.bind(this,function(a){e(a)}),mxUtils.bind(this,function(a){null!=d&& +f+"</div>\n</div>\n"+(null==n?'<script type="text/javascript" src="'+e+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+n+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.getHtml2=function(a,b,d,f,n){b=window.DRAWIO_VIEWER_URL||EditorUi.drawHost+"/js/viewer.min.js";null!=n&&(n=n.replace(/&/g,"&"));a={highlight:"#0000ff",nav:this.editor.graph.foldingEnabled, +resize:!0,xml:Graph.zapGremlins(a),toolbar:"pages zoom layers lightbox"};null!=this.pages&&null!=this.currentPage&&(a.page=mxUtils.indexOf(this.pages,this.currentPage));return(null==n?'\x3c!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=5,IE=9" ><![endif]--\x3e\n':"")+"<!DOCTYPE html>\n<html"+(null!=n?' xmlns="http://www.w3.org/1999/xhtml">':">")+"\n<head>\n"+(null==n?null!=d?"<title>"+mxUtils.htmlEntities(d)+"</title>\n":"":"<title>Draw.io Diagram</title>\n")+(null!=n?'<meta http-equiv="refresh" content="0;URL=\''+ +n+"'\"/>\n":"")+'<meta charset="utf-8"/>\n</head>\n<body>\n<div class="mxgraph" style="max-width:100%;border:1px solid transparent;" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(a))+'"></div>\n'+(null==n?'<script type="text/javascript" src="'+b+'">\x3c/script>':'<a style="position:absolute;top:50%;left:50%;margin-top:-128px;margin-left:-64px;" href="'+n+'" target="_blank"><img border="0" src="'+EditorUi.drawHost+'/images/drawlogo128.png"/></a>')+"\n</body>\n</html>\n"};EditorUi.prototype.setFileData= +function(a){a=this.validateFileData(a);this.pages=this.fileNode=this.currentPage=null;a=null!=a&&0<a.length?mxUtils.parseXml(a).documentElement:null;var c=Editor.extractParserError(a,mxResources.get("invalidOrMissingFile"));if(c)throw Error(c);c=null!=a?this.editor.extractGraphModel(a,!0):null;null!=c&&(a=c);if(null!=a&&"mxfile"==a.nodeName&&(c=a.getElementsByTagName("diagram"),"0"!=urlParams.pages||1<c.length||1==c.length&&c[0].hasAttribute("name"))){var b=null;this.fileNode=a;this.pages=[];for(var d= +0;d<c.length;d++)null==c[d].getAttribute("id")&&c[d].setAttribute("id",d),a=new DiagramPage(c[d]),null==a.getName()&&a.setName(mxResources.get("pageWithNumber",[d+1])),this.pages.push(a),null!=urlParams["page-id"]&&a.getId()==urlParams["page-id"]&&(b=a);this.currentPage=null!=b?b:this.pages[Math.max(0,Math.min(this.pages.length-1,urlParams.page||0))];a=this.currentPage.node}"0"!=urlParams.pages&&null==this.fileNode&&null!=a&&(this.fileNode=a.ownerDocument.createElement("mxfile"),this.currentPage= +new DiagramPage(a.ownerDocument.createElement("diagram")),this.currentPage.setName(mxResources.get("pageWithNumber",[1])),this.pages=[this.currentPage]);this.editor.setGraphXml(a);null!=this.currentPage&&(this.currentPage.root=this.editor.graph.model.root);if(null!=urlParams["layer-ids"])try{var f=urlParams["layer-ids"].split(" ");a={};for(d=0;d<f.length;d++)a[f[d]]=!0;for(var g=this.editor.graph.getModel(),l=g.getChildren(g.root),d=0;d<l.length;d++){var x=l[d];g.setVisible(x,a[x.id]||!1)}}catch(v){}}; +EditorUi.prototype.getBaseFilename=function(a){var c=this.getCurrentFile(),c=null!=c&&null!=c.getTitle()?c.getTitle():this.defaultFilename;if(/(\.xml)$/i.test(c)||/(\.html)$/i.test(c)||/(\.svg)$/i.test(c)||/(\.png)$/i.test(c)||/(\.drawio)$/i.test(c))c=c.substring(0,c.lastIndexOf("."));!a&&null!=this.pages&&1<this.pages.length&&null!=this.currentPage&&null!=this.currentPage.node.getAttribute("name")&&0<this.currentPage.getName().length&&(c=c+"-"+this.currentPage.getName());return c};EditorUi.prototype.downloadFile= +function(a,b,d,f,n,g,l,x,v,m,y){try{f=null!=f?f:this.editor.graph.isSelectionEmpty();var c=this.getBaseFilename(!n),e=c+"."+a;if("xml"==a){var k='<?xml version="1.0" encoding="UTF-8"?>\n'+this.getFileData(!0,null,null,null,f,n,null,null,null,b);this.saveData(e,a,k,"text/xml")}else if("html"==a)k=this.getHtml2(this.getFileData(!0),this.editor.graph,c),this.saveData(e,a,k,"text/html");else if("svg"!=a&&"xmlsvg"!=a||!this.spinner.spin(document.body,mxResources.get("export")))"xmlpng"==a?e=c+".png":"jpeg"== +a&&(e=c+".jpg"),this.saveRequest(e,a,mxUtils.bind(this,function(c,b){try{var e=this.editor.graph.pageVisible;null!=g&&(this.editor.graph.pageVisible=g);var d=this.createDownloadRequest(c,a,f,b,l,n,x,v,m,y);this.editor.graph.pageVisible=e;return d}catch(ba){this.handleError(ba)}}));else{var q=null,z=mxUtils.bind(this,function(a){a.length<=MAX_REQUEST_SIZE?this.saveData(e,"svg",a,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this, +function(){mxUtils.popup(q)}))});if("svg"==a){var p=this.editor.graph.background;if(l||p==mxConstants.NONE)p=null;var I=this.editor.graph.getSvg(p,null,null,null,null,f);d&&this.editor.graph.addSvgShadow(I);this.convertImages(I,mxUtils.bind(this,mxUtils.bind(this,function(a){this.spinner.stop();z('<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a))})))}else e=c+".svg",q=this.getFileData(!1, +!0,null,mxUtils.bind(this,function(a){this.spinner.stop();z(a)}),f)}}catch(E){this.handleError(E)}};EditorUi.prototype.createDownloadRequest=function(a,b,d,f,n,g,l,x,v,m){var c=this.editor.graph,e=c.getGraphBounds();d=this.getFileData(!0,null,null,null,d,0==g?!1:"xmlpng"!=b);var k="",q="";if(e.width*e.height>MAX_AREA||d.length>MAX_REQUEST_SIZE)throw{message:mxResources.get("drawingTooLarge")};m=m?"1":"0";"pdf"==b&&0==g&&(q="&allPages=1");if("xmlpng"==b&&(m="1",b="png",null!=this.pages&&null!=this.currentPage))for(g= +0;g<this.pages.length;g++)if(this.pages[g]==this.currentPage){k="&from="+g;break}g=c.background;"png"==b&&n?g=mxConstants.NONE:n||null!=g&&g!=mxConstants.NONE||(g="#ffffff");n={globalVars:c.getExportVariables()};v&&(n.grid={size:c.gridSize,steps:c.view.gridSteps,color:c.view.gridColor});return new mxXmlRequest(EXPORT_URL,"format="+b+k+q+"&bg="+(null!=g?g:mxConstants.NONE)+"&base64="+f+"&embedXml="+m+"&xml="+encodeURIComponent(d)+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(n))+ +(null!=l?"&scale="+l:"")+(null!=x?"&border="+x:""))};EditorUi.prototype.setMode=function(a,b){this.mode=a};EditorUi.prototype.loadDescriptor=function(a,b,d){var c=window.location.hash,e=mxUtils.bind(this,function(e){var d=null!=a.data?a.data:"";null!=e&&0<e.length&&(0<d.length&&(d+="\n"),d+=e);e=new LocalFile(this,"csv"!=a.format&&0<d.length?d:this.emptyDiagramXml,null!=urlParams.title?decodeURIComponent(urlParams.title):this.defaultFilename,!0);e.getHash=function(){return c};this.fileLoaded(e);"csv"== +a.format&&this.importCsv(d,mxUtils.bind(this,function(a){this.editor.undoManager.clear();this.editor.setModified(!1);this.editor.setStatus("")}));if(null!=a.update){var g=null!=a.interval?parseInt(a.interval):6E4,f=null,k=mxUtils.bind(this,function(){var c=this.currentPage;mxUtils.post(a.update,"xml="+encodeURIComponent(mxUtils.getXml(this.editor.getGraphXml())),mxUtils.bind(this,function(a){c===this.currentPage&&(200<=a.getStatus()&&300>=a.getStatus()?(this.updateDiagram(a.getText()),n()):this.handleError({message:mxResources.get("error")+ +" "+a.getStatus()}))}),mxUtils.bind(this,function(a){this.handleError(a)}))}),n=mxUtils.bind(this,function(){window.clearTimeout(f);f=window.setTimeout(k,g)});this.editor.addListener("pageSelected",mxUtils.bind(this,function(){n();k()}));n();k()}null!=b&&b()});if(null!=a.url&&0<a.url.length){var g=a.url;/^https?:\/\//.test(g)&&!this.editor.isCorsEnabledForUrl(g)&&(g=PROXY_URL+"?url="+encodeURIComponent(g));this.loadUrl(g,mxUtils.bind(this,function(a){e(a)}),mxUtils.bind(this,function(a){null!=d&& d(a)}))}else e("")};EditorUi.prototype.updateDiagram=function(a){function c(a){var c=new mxCellOverlay(a.image||f.warningImage,a.tooltip,a.align,a.valign,a.offset);c.addListener(mxEvent.CLICK,function(c,b){d.alert(a.tooltip)});return c}var b=null,d=this;if(null!=a&&0<a.length&&(b=mxUtils.parseXml(a),a=null!=b?b.documentElement:null,null!=a&&"updates"==a.nodeName)){var f=this.editor.graph,g=f.getModel();g.beginUpdate();var l=null;try{for(a=a.firstChild;null!=a;){if("update"==a.nodeName){var x=g.getCell(a.getAttribute("id")); -if(null!=x){try{var t=a.getAttribute("value");if(null!=t){var m=mxUtils.parseXml(t).documentElement;if(null!=m)if("1"==m.getAttribute("replace-value"))g.setValue(x,m);else for(var y=m.attributes,p=0;p<y.length;p++)f.setAttributeForCell(x,y[p].nodeName,0<y[p].nodeValue.length?y[p].nodeValue:null)}}catch(E){null!=window.console&&console.log("Error in value for "+x.id+": "+E)}try{var C=a.getAttribute("style");null!=C&&f.model.setStyle(x,C)}catch(E){null!=window.console&&console.log("Error in style for "+ -x.id+": "+E)}try{var v=a.getAttribute("icon");if(null!=v){var u=0<v.length?JSON.parse(v):null;null!=u&&u.append||f.removeCellOverlays(x);null!=u&&f.addCellOverlay(x,c(u))}}catch(E){null!=window.console&&console.log("Error in icon for "+x.id+": "+E)}try{var z=a.getAttribute("geometry");if(null!=z){var z=JSON.parse(z),I=f.getCellGeometry(x);if(null!=I){I=I.clone();for(key in z){var B=parseFloat(z[key]);"dx"==key?I.x+=B:"dy"==key?I.y+=B:"dw"==key?I.width+=B:"dh"==key?I.height+=B:I[key]=parseFloat(z[key])}f.model.setGeometry(x, -I)}}}catch(E){null!=window.console&&console.log("Error in icon for "+x.id+": "+E)}}}else if("model"==a.nodeName){for(var D=a.firstChild;null!=D&&D.nodeType!=mxConstants.NODETYPE_ELEMENT;)D=D.nextSibling;null!=D&&(new mxCodec(a.firstChild)).decode(D,g)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"== -a.nodeName&&(l=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{g.endUpdate()}null!=l&&this.chromelessResize&&this.chromelessResize(!0,l)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var c=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,e="",d=c.lastIndexOf(".");0<=d&&(e=c.substring(d),c=c.substring(0,d));if(b)var f=new Date,d=f.getFullYear(),l=f.getMonth()+1,x=f.getDate(),t=f.getHours(),m=f.getMinutes(),f=f.getSeconds(),c= -c+(" "+(d+"-"+l+"-"+x+"-"+t+"-"+m+"-"+f));return c=mxResources.get("copyOf",[c])+e};EditorUi.prototype.fileLoaded=function(a,b){var c=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=c&&(EditorUi.debug("File.closed",[c]),c.removeListener(this.descriptorChangedListener),c.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var d=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=c&&this.updateDocumentTitle(); +if(null!=x){try{var v=a.getAttribute("value");if(null!=v){var m=mxUtils.parseXml(v).documentElement;if(null!=m)if("1"==m.getAttribute("replace-value"))g.setValue(x,m);else for(var y=m.attributes,p=0;p<y.length;p++)f.setAttributeForCell(x,y[p].nodeName,0<y[p].nodeValue.length?y[p].nodeValue:null)}}catch(D){null!=window.console&&console.log("Error in value for "+x.id+": "+D)}try{var C=a.getAttribute("style");null!=C&&f.model.setStyle(x,C)}catch(D){null!=window.console&&console.log("Error in style for "+ +x.id+": "+D)}try{var t=a.getAttribute("icon");if(null!=t){var u=0<t.length?JSON.parse(t):null;null!=u&&u.append||f.removeCellOverlays(x);null!=u&&f.addCellOverlay(x,c(u))}}catch(D){null!=window.console&&console.log("Error in icon for "+x.id+": "+D)}try{var A=a.getAttribute("geometry");if(null!=A){var A=JSON.parse(A),G=f.getCellGeometry(x);if(null!=G){G=G.clone();for(key in A){var B=parseFloat(A[key]);"dx"==key?G.x+=B:"dy"==key?G.y+=B:"dw"==key?G.width+=B:"dh"==key?G.height+=B:G[key]=parseFloat(A[key])}f.model.setGeometry(x, +G)}}}catch(D){null!=window.console&&console.log("Error in icon for "+x.id+": "+D)}}}else if("model"==a.nodeName){for(var E=a.firstChild;null!=E&&E.nodeType!=mxConstants.NODETYPE_ELEMENT;)E=E.nextSibling;null!=E&&(new mxCodec(a.firstChild)).decode(E,g)}else if("view"==a.nodeName){if(a.hasAttribute("scale")&&(f.view.scale=parseFloat(a.getAttribute("scale"))),a.hasAttribute("dx")||a.hasAttribute("dy"))f.view.translate=new mxPoint(parseFloat(a.getAttribute("dx")||0),parseFloat(a.getAttribute("dy")||0))}else"fit"== +a.nodeName&&(l=a.hasAttribute("max-scale")?parseFloat(a.getAttribute("max-scale")):1);a=a.nextSibling}}finally{g.endUpdate()}null!=l&&this.chromelessResize&&this.chromelessResize(!0,l)}return b};EditorUi.prototype.getCopyFilename=function(a,b){var c=null!=a&&null!=a.getTitle()?a.getTitle():this.defaultFilename,e="",d=c.lastIndexOf(".");0<=d&&(e=c.substring(d),c=c.substring(0,d));if(b)var g=new Date,d=g.getFullYear(),f=g.getMonth()+1,l=g.getDate(),v=g.getHours(),m=g.getMinutes(),g=g.getSeconds(),c= +c+(" "+(d+"-"+f+"-"+l+"-"+v+"-"+m+"-"+g));return c=mxResources.get("copyOf",[c])+e};EditorUi.prototype.fileLoaded=function(a,b){var c=this.getCurrentFile();this.fileLoadedError=null;this.setCurrentFile(null);var e=!1;this.hideDialog();null!=c&&(EditorUi.debug("File.closed",[c]),c.removeListener(this.descriptorChangedListener),c.close());this.editor.graph.model.clear();this.editor.undoManager.clear();var d=mxUtils.bind(this,function(){this.setGraphEnabled(!1);this.setCurrentFile(null);null!=c&&this.updateDocumentTitle(); this.editor.graph.model.clear();this.editor.undoManager.clear();this.setBackgroundImage(null);!b&&null!=window.location.hash&&0<window.location.hash.length&&(window.location.hash="");null!=this.fname&&(this.fnameWrapper.style.display="none",this.fname.innerHTML="",this.fname.setAttribute("title",mxResources.get("rename")));this.editor.setStatus("");this.updateUi();b||this.showSplash()});if(null!=a)try{mxClient.IS_SF&&"min"==uiTheme&&(this.diagramContainer.style.visibility="");this.openingFile=!0; this.setCurrentFile(a);a.addListener("descriptorChanged",this.descriptorChangedListener);a.addListener("contentChanged",this.descriptorChangedListener);a.open();delete this.openingFile;this.setGraphEnabled(!0);this.setMode(a.getMode());this.editor.graph.model.prefix=Editor.guid()+"-";this.editor.undoManager.clear();this.descriptorChanged();this.updateUi();a.isEditable()?a.isModified()?(a.addUnsavedStatus(),null!=a.backupPatch&&a.patch([a.backupPatch])):this.editor.setStatus(""):this.editor.setStatus('<span class="geStatusAlert" style="margin-left:8px;">'+ mxUtils.htmlEntities(mxResources.get("readOnly"))+"</span>");!this.editor.isChromelessView()||this.editor.editable?(this.editor.graph.selectUnlockedLayer(),this.showLayersDialog(),this.restoreLibraries(),window.self!==window.top&&window.focus()):this.editor.graph.isLightboxView()&&this.lightboxFit();this.chromelessResize&&this.chromelessResize();this.editor.fireEvent(new mxEventObject("fileLoaded"));e=!0;this.isOffline()||null==a.getMode()||EditorUi.logEvent({category:a.getMode().toUpperCase()+"-OPEN-FILE-"+ -a.getHash(),action:"size_"+a.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")});EditorUi.debug("File.opened",[a]);if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),title:a.getTitle(),mode:a.getMode()})}catch(A){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(A){}}catch(A){this.fileLoadedError=A;null!=window.console&&(console.error(A),console.log("error in fileLoaded:", -a,A));if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=A&&null!=A.message?":err:"+encodeURIComponent(A.message):"")+(null!=A&&null!=A.stack?"&stack="+encodeURIComponent(A.stack):"")}catch(x){}var f=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))? -window.location.search=this.getSearch(["url"]):null!=c?this.fileLoaded(c):d()});b?f():this.handleError(A,mxResources.get("errorLoadingFile"),f,!0)}else d();return e};EditorUi.prototype.getHashValueForPages=function(a,b){var c=0,e=new mxGraphModel,d=new mxCodec;null!=b&&(b.byteCount=0,b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var f=0;f<a.length;f++){this.updatePageRoot(a[f]);var l=a[f].node.cloneNode(!1);l.removeAttribute("name");e.root=a[f].root;var x=d.encode(e);this.editor.graph.saveViewState(a[f].viewState, -x,!0);x.removeAttribute("pageWidth");x.removeAttribute("pageHeight");l.appendChild(x);null!=b&&(b.eltCount+=l.getElementsByTagName("*").length,b.nodeCount+=l.getElementsByTagName("mxCell").length);c=(c<<5)-c+this.hashValue(l,function(a,c,b,e){return!e||"mxGeometry"!=a.nodeName&&"mxPoint"!=a.nodeName||"x"!=c&&"y"!=c&&"width"!=c&&"height"!=c?e&&"mxCell"==a.nodeName&&"previous"==c?null:b:Math.round(b)},b)<<0}return c};EditorUi.prototype.hashValue=function(a,b,d){var c=0;if(null!=a&&"object"===typeof a&& -"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(c^=this.hashValue(a.nodeName,b,d));if(null!=a.attributes){null!=d&&(d.attrCount+=a.attributes.length);for(var e=0;e<a.attributes.length;e++){var k=a.attributes[e].name,f=null!=b?b(a,k,a.attributes[e].value,!0):a.attributes[e].value;null!=f&&(c^=this.hashValue(k,b,d)+this.hashValue(f,b,d))}}if(null!=a.childNodes)for(e=0;e<a.childNodes.length;e++)c=(c<<5)-c+this.hashValue(a.childNodes[e], +a.getHash(),action:"size_"+a.getSize(),label:"autosave_"+(this.editor.autosave?"on":"off")});EditorUi.debug("File.opened",[a]);if(this.editor.editable&&this.mode==a.getMode()&&a.getMode()!=App.MODE_DEVICE&&null!=a.getMode())try{this.addRecent({id:a.getHash(),title:a.getTitle(),mode:a.getMode()})}catch(z){}try{mxSettings.setOpenCounter(mxSettings.getOpenCounter()+1),mxSettings.save()}catch(z){}}catch(z){this.fileLoadedError=z;null!=window.console&&(console.error(z),console.log("error in fileLoaded:", +a,z));if(EditorUi.enableLogging&&!this.isOffline())try{(new Image).src=(null!=window.DRAWIO_LOG_URL?window.DRAWIO_LOG_URL:"")+"/log?v="+encodeURIComponent(EditorUi.VERSION)+"&msg=errorInFileLoaded:url:"+encodeURIComponent(window.location.href)+(null!=z&&null!=z.message?":err:"+encodeURIComponent(z.message):"")+(null!=z&&null!=z.stack?"&stack="+encodeURIComponent(z.stack):"")}catch(x){}var g=mxUtils.bind(this,function(){null!=urlParams.url&&this.spinner.spin(document.body,mxResources.get("reconnecting"))? +window.location.search=this.getSearch(["url"]):null!=c?this.fileLoaded(c):d()});b?g():this.handleError(z,mxResources.get("errorLoadingFile"),g,!0)}else d();return e};EditorUi.prototype.getHashValueForPages=function(a,b){var c=0,e=new mxGraphModel,d=new mxCodec;null!=b&&(b.byteCount=0,b.attrCount=0,b.eltCount=0,b.nodeCount=0);for(var g=0;g<a.length;g++){this.updatePageRoot(a[g]);var f=a[g].node.cloneNode(!1);f.removeAttribute("name");e.root=a[g].root;var l=d.encode(e);this.editor.graph.saveViewState(a[g].viewState, +l,!0);l.removeAttribute("pageWidth");l.removeAttribute("pageHeight");f.appendChild(l);null!=b&&(b.eltCount+=f.getElementsByTagName("*").length,b.nodeCount+=f.getElementsByTagName("mxCell").length);c=(c<<5)-c+this.hashValue(f,function(a,c,b,e){return!e||"mxGeometry"!=a.nodeName&&"mxPoint"!=a.nodeName||"x"!=c&&"y"!=c&&"width"!=c&&"height"!=c?e&&"mxCell"==a.nodeName&&"previous"==c?null:b:Math.round(b)},b)<<0}return c};EditorUi.prototype.hashValue=function(a,b,d){var c=0;if(null!=a&&"object"===typeof a&& +"number"===typeof a.nodeType&&"string"===typeof a.nodeName&&"function"===typeof a.getAttribute){null!=a.nodeName&&(c^=this.hashValue(a.nodeName,b,d));if(null!=a.attributes){null!=d&&(d.attrCount+=a.attributes.length);for(var e=0;e<a.attributes.length;e++){var g=a.attributes[e].name,f=null!=b?b(a,g,a.attributes[e].value,!0):a.attributes[e].value;null!=f&&(c^=this.hashValue(g,b,d)+this.hashValue(f,b,d))}}if(null!=a.childNodes)for(e=0;e<a.childNodes.length;e++)c=(c<<5)-c+this.hashValue(a.childNodes[e], b,d)<<0}else if(null!=a&&"function"!==typeof a){a=String(a);b=0;null!=d&&(d.byteCount+=a.length);for(e=0;e<a.length;e++)b=(b<<5)-b+a.charCodeAt(e)<<0;c^=b}return c};EditorUi.prototype.descriptorChanged=function(){};EditorUi.prototype.restoreLibraries=function(){};EditorUi.prototype.saveLibrary=function(a,b,d,f,n,g,l){};EditorUi.prototype.isScratchpadEnabled=function(){return isLocalStorage||mxClient.IS_CHROMEAPP};EditorUi.prototype.toggleScratchpad=function(){this.isScratchpadEnabled()&&(null==this.scratchpad? this.getLocalData(".scratchpad",mxUtils.bind(this,function(a){null==a&&(a=this.emptyLibraryXml);this.loadLibrary(new StorageLibrary(this,a,".scratchpad"))})):this.closeLibrary(this.scratchpad))};EditorUi.prototype.createLibraryDataFromImages=function(a){var c=mxUtils.createXmlDocument(),b=c.createElement("mxlibrary");mxUtils.setTextContent(b,JSON.stringify(a));c.appendChild(b);return mxUtils.getXml(c)};EditorUi.prototype.closeLibrary=function(a){null!=a&&(this.removeLibrarySidebar(a.getHash()),a.constructor!= LocalLibrary&&mxSettings.removeCustomLibrary(a.getHash()),".scratchpad"==a.title&&(this.scratchpad=null))};EditorUi.prototype.removeLibrarySidebar=function(a){var c=this.sidebar.palettes[a];if(null!=c){for(var b=0;b<c.length;b++)c[b].parentNode.removeChild(c[b]);delete this.sidebar.palettes[a]}};EditorUi.prototype.repositionLibrary=function(a){var c=this.sidebar.container;if(null==a){var b=this.sidebar.palettes["L.scratchpad"];null==b&&(b=this.sidebar.palettes.search);null!=b&&(a=b[b.length-1].nextSibling)}a= @@ -3072,20 +3073,20 @@ null!=a?a:c.firstChild.nextSibling.nextSibling;var b=c.lastChild,d=b.previousSib function(a,b,d,f){if(null!=this.sidebar){a.constructor!=LocalLibrary&&mxSettings.addCustomLibrary(a.getHash());".scratchpad"==a.title&&(this.scratchpad=a);var c=this.sidebar.palettes[a.getHash()],c=null!=c?c[c.length-1].nextSibling:null;this.removeLibrarySidebar(a.getHash());var e=null,k=mxUtils.bind(this,function(c,b){0==c.length&&a.isEditable()?(null==e&&(e=document.createElement("div"),e.className="geDropTarget",mxUtils.write(e,mxResources.get("dragElementsHere"))),b.appendChild(e)):this.addLibraryEntries(c, b)});null!=this.sidebar&&null!=b&&this.sidebar.addEntries(b);d=null!=d&&0<d.length?d:a.getTitle();var q=this.sidebar.addPalette(a.getHash(),d,null!=f?f:!0,mxUtils.bind(this,function(a){k(b,a)}));this.repositionLibrary(c);var l=q.parentNode.previousSibling;f=l.getAttribute("title");null!=f&&0<f.length&&".scratchpad"!=a.title&&l.setAttribute("title",this.getLibraryStorageHint(a)+"\n"+f);var m=document.createElement("div");m.style.position="absolute";m.style.right="0px";m.style.top="0px";m.style.padding= "8px";mxClient.IS_QUIRKS||8==document.documentMode||(m.style.backgroundColor="inherit");l.style.position="relative";var y=document.createElement("img");y.setAttribute("src",Dialog.prototype.closeImage);y.setAttribute("title",mxResources.get("close"));y.setAttribute("valign","absmiddle");y.setAttribute("border","0");y.style.cursor="pointer";y.style.margin="0 3px";var p=null;if(".scratchpad"!=a.title||this.closableScratchpad)m.appendChild(y),mxEvent.addListener(y,"click",mxUtils.bind(this,function(c){if(!mxEvent.isConsumed(c)){var b= -mxUtils.bind(this,function(){this.closeLibrary(a)});null!=p?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(c)}}));if(a.isEditable()){var C=this.editor.graph,v=null,u=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),q,b,a,a.getMode());mxEvent.consume(c)}),z=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=v&&null!=v.parentNode&&v.parentNode.removeChild(v),v=y.cloneNode(!1), -v.setAttribute("src",Editor.spinImage),v.setAttribute("title",mxResources.get("saving")),v.style.cursor="default",v.style.marginRight="2px",v.style.marginTop="-2px",m.insertBefore(v,m.firstChild),l.style.paddingRight=18*m.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=v&&null!=v.parentNode&&(v.parentNode.removeChild(v),l.style.paddingRight=18*m.childNodes.length+"px")})):null==p&&(p=y.cloneNode(!1),p.setAttribute("src",IMAGE_PATH+"/download.png"),p.setAttribute("title", -mxResources.get("save")),m.insertBefore(p,m.firstChild),mxEvent.addListener(p,"click",mxUtils.bind(this,function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==p||a.isModified()||(l.style.paddingRight=18*m.childNodes.length+"px",p.parentNode.removeChild(p),p=null)});mxEvent.consume(c)})),l.style.paddingRight=18*m.childNodes.length+"px")}),I=mxUtils.bind(this,function(a,c,d,k){a=C.cloneCells(mxUtils.sortCells(C.model.getTopmostCells(a)));for(var f= -0;f<a.length;f++){var g=C.getCellGeometry(a[f]);null!=g&&g.translate(-c.x,-c.y)}q.appendChild(this.sidebar.createVertexTemplateFromCells(a,c.width,c.height,k||"",!0,!1,!1));a={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=k&&(a.title=k);b.push(a);z(d);null!=e&&null!=e.parentNode&&0<b.length&&(e.parentNode.removeChild(e),e=null)}),B=mxUtils.bind(this,function(a){if(C.isSelectionEmpty())C.getRubberband().isActive()?(C.getRubberband().execute(a),C.getRubberband().reset()): -this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var c=C.getSelectionCells(),b=C.view.getBounds(c),d=C.view.scale;b.x/=d;b.y/=d;b.width/=d;b.height/=d;b.x-=C.view.translate.x;b.y-=C.view.translate.y;I(c,b)}mxEvent.consume(a)});mxEvent.addGestureListeners(q,function(){},mxUtils.bind(this,function(a){C.isMouseDown&&null!=C.panningManager&&null!=C.graphHandler.first&&(C.graphHandler.suspend(),null!=C.graphHandler.hint&&(C.graphHandler.hint.style.visibility= +mxUtils.bind(this,function(){this.closeLibrary(a)});null!=p?this.confirm(mxResources.get("allChangesLost"),null,b,mxResources.get("cancel"),mxResources.get("discardChanges")):b();mxEvent.consume(c)}}));if(a.isEditable()){var C=this.editor.graph,t=null,u=mxUtils.bind(this,function(c){this.showLibraryDialog(a.getTitle(),q,b,a,a.getMode());mxEvent.consume(c)}),A=mxUtils.bind(this,function(c){a.setModified(!0);a.isAutosave()?(null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t),t=y.cloneNode(!1), +t.setAttribute("src",Editor.spinImage),t.setAttribute("title",mxResources.get("saving")),t.style.cursor="default",t.style.marginRight="2px",t.style.marginTop="-2px",m.insertBefore(t,m.firstChild),l.style.paddingRight=18*m.childNodes.length+"px",this.saveLibrary(a.getTitle(),b,a,a.getMode(),!0,!0,function(){null!=t&&null!=t.parentNode&&(t.parentNode.removeChild(t),l.style.paddingRight=18*m.childNodes.length+"px")})):null==p&&(p=y.cloneNode(!1),p.setAttribute("src",IMAGE_PATH+"/download.png"),p.setAttribute("title", +mxResources.get("save")),m.insertBefore(p,m.firstChild),mxEvent.addListener(p,"click",mxUtils.bind(this,function(c){this.saveLibrary(a.getTitle(),b,a,a.getMode(),a.constructor==LocalLibrary,!0,function(){null==p||a.isModified()||(l.style.paddingRight=18*m.childNodes.length+"px",p.parentNode.removeChild(p),p=null)});mxEvent.consume(c)})),l.style.paddingRight=18*m.childNodes.length+"px")}),G=mxUtils.bind(this,function(a,c,d,g){a=C.cloneCells(mxUtils.sortCells(C.model.getTopmostCells(a)));for(var f= +0;f<a.length;f++){var k=C.getCellGeometry(a[f]);null!=k&&k.translate(-c.x,-c.y)}q.appendChild(this.sidebar.createVertexTemplateFromCells(a,c.width,c.height,g||"",!0,!1,!1));a={xml:Graph.compress(mxUtils.getXml(this.editor.graph.encodeCells(a))),w:c.width,h:c.height};null!=g&&(a.title=g);b.push(a);A(d);null!=e&&null!=e.parentNode&&0<b.length&&(e.parentNode.removeChild(e),e=null)}),B=mxUtils.bind(this,function(a){if(C.isSelectionEmpty())C.getRubberband().isActive()?(C.getRubberband().execute(a),C.getRubberband().reset()): +this.showError(mxResources.get("error"),mxResources.get("nothingIsSelected"),mxResources.get("ok"));else{var c=C.getSelectionCells(),b=C.view.getBounds(c),d=C.view.scale;b.x/=d;b.y/=d;b.width/=d;b.height/=d;b.x-=C.view.translate.x;b.y-=C.view.translate.y;G(c,b)}mxEvent.consume(a)});mxEvent.addGestureListeners(q,function(){},mxUtils.bind(this,function(a){C.isMouseDown&&null!=C.panningManager&&null!=C.graphHandler.first&&(C.graphHandler.suspend(),null!=C.graphHandler.hint&&(C.graphHandler.hint.style.visibility= "hidden"),q.style.backgroundColor="#f1f3f4",q.style.cursor="copy",C.panningManager.stop(),C.autoScroll=!1,mxEvent.consume(a))}),mxUtils.bind(this,function(a){C.isMouseDown&&null!=C.panningManager&&null!=C.graphHandler&&(q.style.backgroundColor="",q.style.cursor="default",this.sidebar.showTooltips=!0,C.panningManager.stop(),C.graphHandler.reset(),C.isMouseDown=!1,C.autoScroll=!0,B(a),mxEvent.consume(a))}));mxEvent.addListener(q,"mouseleave",mxUtils.bind(this,function(a){C.isMouseDown&&null!=C.graphHandler.first&& (C.graphHandler.resume(),null!=C.graphHandler.hint&&(C.graphHandler.hint.style.visibility="visible"),q.style.backgroundColor="",q.style.cursor="",C.autoScroll=!0)}));Graph.fileSupport&&(mxEvent.addListener(q,"dragover",mxUtils.bind(this,function(a){q.style.backgroundColor="#f1f3f4";a.dataTransfer.dropEffect="copy";q.style.cursor="copy";this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()})),mxEvent.addListener(q,"drop",mxUtils.bind(this,function(a){q.style.cursor="";q.style.backgroundColor= -"";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,f,g,n,l,t,x,y){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,n,l),c)],c[0].vertex=!0,I(c,new mxRectangle(0,0,n,l),a,mxEvent.isAltDown(a)?null:t.substring(0,t.lastIndexOf(".")).replace(/_/g," ")),null!=e&&null!=e.parentNode&&0<b.length&& -(e.parentNode.removeChild(e),e=null);else{var m=!1,A=mxUtils.bind(this,function(c,d){if(null!=c&&"application/pdf"==d){var f=Editor.extractGraphModelFromPdf(c);null!=f&&0<f.length&&(d="text/xml",c=f)}if(null!=c&&"text/xml"==d)if(f=mxUtils.parseXml(c),"mxlibrary"==f.documentElement.nodeName)try{var g=JSON.parse(mxUtils.getTextContent(f.documentElement));k(g,q);b=b.concat(g);z(a);this.spinner.stop();m=!0}catch(L){}else if("mxfile"==f.documentElement.nodeName)try{for(var n=f.documentElement.getElementsByTagName("diagram"), -g=0;g<n.length;g++){var l=this.stringToCells(Editor.getDiagramNodeXml(n[g])),t=this.editor.graph.getBoundingBoxFromGeometry(l);I(l,new mxRectangle(0,0,t.width,t.height),a)}m=!0}catch(L){null!=window.console&&console.log("error in drop handler:",L)}m||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=e&&null!=e.parentNode&&0<b.length&&(e.parentNode.removeChild(e),e=null)});null!=y&&null!=t&&(/(\.v(dx|sdx?))($|\?)/i.test(t)||/(\.vs(x|sx?))($|\?)/i.test(t))? -this.importVisio(y,function(a){A(a,"text/xml")},null,t):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,t)&&null!=y?this.parseFile(y,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?A(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):A(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(q,"dragleave", +"";0<a.dataTransfer.files.length&&this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,mxUtils.bind(this,function(c,d,g,f,n,l,v,y,x){if(null!=c&&"image/"==d.substring(0,6))c="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;aspect=fixed;image="+this.convertDataUri(c),c=[new mxCell("",new mxGeometry(0,0,n,l),c)],c[0].vertex=!0,G(c,new mxRectangle(0,0,n,l),a,mxEvent.isAltDown(a)?null:v.substring(0,v.lastIndexOf(".")).replace(/_/g," ")),null!=e&&null!=e.parentNode&&0<b.length&& +(e.parentNode.removeChild(e),e=null);else{var m=!1,z=mxUtils.bind(this,function(c,d){if(null!=c&&"application/pdf"==d){var g=Editor.extractGraphModelFromPdf(c);null!=g&&0<g.length&&(d="text/xml",c=g)}if(null!=c&&"text/xml"==d)if(g=mxUtils.parseXml(c),"mxlibrary"==g.documentElement.nodeName)try{var f=JSON.parse(mxUtils.getTextContent(g.documentElement));k(f,q);b=b.concat(f);A(a);this.spinner.stop();m=!0}catch(L){}else if("mxfile"==g.documentElement.nodeName)try{for(var n=g.documentElement.getElementsByTagName("diagram"), +f=0;f<n.length;f++){var l=this.stringToCells(Editor.getDiagramNodeXml(n[f])),v=this.editor.graph.getBoundingBoxFromGeometry(l);G(l,new mxRectangle(0,0,v.width,v.height),a)}m=!0}catch(L){null!=window.console&&console.log("error in drop handler:",L)}m||(this.spinner.stop(),this.handleError({message:mxResources.get("errorLoadingFile")}));null!=e&&null!=e.parentNode&&0<b.length&&(e.parentNode.removeChild(e),e=null)});null!=x&&null!=v&&(/(\.v(dx|sdx?))($|\?)/i.test(v)||/(\.vs(x|sx?))($|\?)/i.test(v))? +this.importVisio(x,function(a){z(a,"text/xml")},null,v):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(c,v)&&null!=x?this.parseFile(x,mxUtils.bind(this,function(a){4==a.readyState&&(this.spinner.stop(),200<=a.status&&299>=a.status?z(a.responseText,"text/xml"):this.handleError({message:mxResources.get(413==a.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):z(c,d)}}));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(q,"dragleave", function(a){q.style.cursor="";q.style.backgroundColor="";a.stopPropagation();a.preventDefault()}));y=y.cloneNode(!1);y.setAttribute("src",Editor.editImage);y.setAttribute("title",mxResources.get("edit"));m.insertBefore(y,m.firstChild);mxEvent.addListener(y,"click",u);mxEvent.addListener(q,"dblclick",function(a){mxEvent.getSource(a)==q&&u(a)});f=y.cloneNode(!1);f.setAttribute("src",Editor.plusImage);f.setAttribute("title",mxResources.get("add"));m.insertBefore(f,m.firstChild);mxEvent.addListener(f, "click",B);this.isOffline()||".scratchpad"!=a.title||null==EditorUi.scratchpadHelpLink||(f=document.createElement("span"),f.setAttribute("title",mxResources.get("help")),f.style.cssText="color:#a3a3a3;text-decoration:none;margin-right:2px;",mxUtils.write(f,"?"),mxEvent.addGestureListeners(f,mxUtils.bind(this,function(a){this.openLink(EditorUi.scratchpadHelpLink);mxEvent.consume(a)})),m.insertBefore(f,m.firstChild))}l.appendChild(m);l.style.paddingRight=18*m.childNodes.length+"px"}};EditorUi.prototype.addLibraryEntries= -function(a,b){for(var c=0;c<a.length;c++){var d=a[c],e=d.data;if(null!=e){var e=this.convertDataUri(e),f="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(f+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(f+"image="+e,d.w,d.h,"",d.title||"",!1,!1,!0))}else null!=d.xml&&(e=this.stringToCells(Graph.decompress(d.xml)),0<e.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(e,d.w,d.h,d.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource= +function(a,b){for(var c=0;c<a.length;c++){var d=a[c],e=d.data;if(null!=e){var e=this.convertDataUri(e),g="shape=image;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;";"fixed"==d.aspect&&(g+="aspect=fixed;");b.appendChild(this.sidebar.createVertexTemplate(g+"image="+e,d.w,d.h,"",d.title||"",!1,!1,!0))}else null!=d.xml&&(e=this.stringToCells(Graph.decompress(d.xml)),0<e.length&&b.appendChild(this.sidebar.createVertexTemplateFromCells(e,d.w,d.h,d.title||"",!0,!1,!0)))}};EditorUi.prototype.getResource= function(a){return null!=a?a[mxLanguage]||a.main:null};EditorUi.prototype.footerHeight=0;"1"==urlParams.offline||EditorUi.isElectronApp||("1"==urlParams.savesidebar&&(Sidebar.prototype.thumbWidth=64,Sidebar.prototype.thumbHeight=64),EditorUi.prototype.createFooter=function(){return document.getElementById("geFooter")});EditorUi.initTheme=function(){"atlas"==uiTheme?(mxClient.link("stylesheet",STYLE_PATH+"/atlas.css"),"undefined"!==typeof Toolbar&&(Toolbar.prototype.unselectedBackground=mxClient.IS_QUIRKS? "none":"linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%)",Toolbar.prototype.selectedBackground="rgb(242, 242, 242)"),Editor.prototype.initialTopSpacing=3,EditorUi.prototype.menubarHeight=41,EditorUi.prototype.toolbarHeight=38):"dark"==uiTheme&&(mxClient.link("stylesheet",STYLE_PATH+"/dark.css"),Dialog.backdropColor="#2a2a2a",Graph.prototype.defaultThemeName="darkTheme",Graph.prototype.defaultPageBackgroundColor="#2a2a2a",Graph.prototype.defaultPageBorderColor="#505759",Format.prototype.inactiveTabBackgroundColor= "black",BaseFormatPanel.prototype.buttonBackgroundColor="#2a2a2a",Sidebar.prototype.dragPreviewBorder="1px dashed #cccccc",mxGraphHandler.prototype.previewColor="#cccccc",StyleFormatPanel.prototype.defaultStrokeColor="#cccccc",mxClient.IS_SVG&&(Editor.helpImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAP1BMVEUAAAD///////////////////////////////////////////////////////////////////////////////9Du/pqAAAAFXRSTlMAT30qCJRBboyDZyCgRzUUdF46MJlgXETgAAAAeklEQVQY022O2w4DIQhEQUURda/9/28tUO2+7CQS5sgQ4F1RapX78YUwRqQjTU8ILqQfKerTKTvACJ4nLX3krt+8aS82oI8aQC4KavRgtvEW/mDvsICgA03PSGRr79MqX1YPNIxzjyqtw8ZnnRo4t5a5undtJYRywau+ds4Cyza3E6YAAAAASUVORK5CYII=", @@ -3105,9 +3106,9 @@ e,!0,g);a.init()};EditorUi.prototype.setCurrentFile=function(a){null!=a&&(a.open d))throw{message:"Invalid image"};null!=b&&(c=this.writeGraphModelToPng(c,"tEXt","mxfile",encodeURIComponent(b)));0<f&&(c=this.writeGraphModelToPng(c,"pHYs","dpi",f));return c};EditorUi.prototype.saveCanvas=function(a,b,d,f,n){var c="jpeg"==d?"jpg":d;f=this.getBaseFilename(f)+"."+c;a=this.createImageDataUri(a,b,d,n);this.saveData(f,c,a.substring(a.lastIndexOf(",")+1),"image/"+d,!0)};EditorUi.prototype.isLocalFileSave=function(){return"remote"!=urlParams.save&&(mxClient.IS_IE||"undefined"!==typeof window.Blob&& "undefined"!==typeof window.URL)&&9!=document.documentMode&&8!=document.documentMode&&7!=document.documentMode&&!mxClient.IS_QUIRKS||this.isOfflineApp()||mxClient.IS_IOS};EditorUi.prototype.showTextDialog=function(a,b){var c=new TextareaDialog(this,a,b,null,null,mxResources.get("close"));c.textarea.style.width="600px";c.textarea.style.height="380px";this.showDialog(c.container,620,460,!0,!0,null,null,null,null,!0);c.init();document.execCommand("selectall",!1,null)};EditorUi.prototype.doSaveLocalFile= function(a,b,d,f,n){if(window.Blob&&navigator.msSaveOrOpenBlob)a=f?this.base64ToBlob(a,d):new Blob([a],{type:d}),navigator.msSaveOrOpenBlob(a,b);else if(mxClient.IS_IE)d=window.open("about:blank","_blank"),null==d?mxUtils.popup(a,!0):(d.document.write(a),d.document.close(),d.document.execCommand("SaveAs",!0,b),d.close());else if(mxClient.IS_IOS&&this.isOffline())navigator.standalone||null==d||"image/"!=d.substring(0,6)?this.showTextDialog(b+":",a):this.openInNewWindow(a,d,f);else{var c=document.createElement("a"), -e=0>navigator.userAgent.indexOf("PaleMoon/")&&!mxClient.IS_IOS&&"undefined"!==typeof c.download;if(mxClient.IS_GC)var k=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),e=65==(k?parseInt(k[2],10):!1)?!1:e;if(e||this.isOffline()){c.href=URL.createObjectURL(f?this.base64ToBlob(a,d):new Blob([a],{type:d}));e?c.download=b:c.setAttribute("target","_blank");document.body.appendChild(c);try{window.setTimeout(function(){URL.revokeObjectURL(c.href)},0),c.click(),c.parentNode.removeChild(c)}catch(t){}}else this.createEchoRequest(a, -b,d,f,n).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,d,f,n,g){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=d?"&mime="+d:"")+(null!=n?"&format="+n:"")+(null!=g?"&base64="+g:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,e=Math.ceil(d/1024),f=Array(e),l=0;l<e;++l){for(var x=1024*l,t=Math.min(x+1024,d),m=Array(t-x),y=0;x<t;++y,++x)m[y]= -c[x].charCodeAt(0);f[l]=new Uint8Array(m)}return new Blob(f,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,d,f,n,g,l){g=null!=g?g:!1;l=null!=l?l:"vsdx"!=n&&(!mxClient.IS_IOS||!navigator.standalone);n=this.getServiceCount(g);isLocalStorage&&n++;var c=4>=n?2:6<n?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(c,b){try{if("_blank"==b)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(a,d,f);else{var e=window.open("about:blank");null==e?mxUtils.popup(a,!0):(e.document.write("<pre>"+ +e=0>navigator.userAgent.indexOf("PaleMoon/")&&!mxClient.IS_IOS&&"undefined"!==typeof c.download;if(mxClient.IS_GC)var k=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./),e=65==(k?parseInt(k[2],10):!1)?!1:e;if(e||this.isOffline()){c.href=URL.createObjectURL(f?this.base64ToBlob(a,d):new Blob([a],{type:d}));e?c.download=b:c.setAttribute("target","_blank");document.body.appendChild(c);try{window.setTimeout(function(){URL.revokeObjectURL(c.href)},0),c.click(),c.parentNode.removeChild(c)}catch(v){}}else this.createEchoRequest(a, +b,d,f,n).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest=function(a,b,d,f,n,g){a="xml="+encodeURIComponent(a);return new mxXmlRequest(SAVE_URL,a+(null!=d?"&mime="+d:"")+(null!=n?"&format="+n:"")+(null!=g?"&base64="+g:"")+(null!=b?"&filename="+encodeURIComponent(b):"")+(f?"&binary=1":""))};EditorUi.prototype.base64ToBlob=function(a,b){b=b||"";for(var c=atob(a),d=c.length,e=Math.ceil(d/1024),g=Array(e),f=0;f<e;++f){for(var l=1024*f,v=Math.min(l+1024,d),m=Array(v-l),y=0;l<v;++y,++l)m[y]= +c[l].charCodeAt(0);g[f]=new Uint8Array(m)}return new Blob(g,{type:b})};EditorUi.prototype.saveLocalFile=function(a,b,d,f,n,g,l){g=null!=g?g:!1;l=null!=l?l:"vsdx"!=n&&(!mxClient.IS_IOS||!navigator.standalone);n=this.getServiceCount(g);isLocalStorage&&n++;var c=4>=n?2:6<n?4:3;b=new CreateDialog(this,b,mxUtils.bind(this,function(c,b){try{if("_blank"==b)if(null!=d&&"image/"==d.substring(0,6))this.openInNewWindow(a,d,f);else{var e=window.open("about:blank");null==e?mxUtils.popup(a,!0):(e.document.write("<pre>"+ mxUtils.htmlEntities(a,!1)+"</pre>"),e.document.close())}else b==App.MODE_DEVICE||"download"==b?this.doSaveLocalFile(a,c,d,f):null!=c&&0<c.length&&this.pickFolder(b,mxUtils.bind(this,function(e){try{this.exportFile(a,c,d,f,b,e)}catch(C){this.handleError(C)}}))}catch(F){this.handleError(F)}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,g,l,null,1<n,c,a,d,f);g=this.isServices(n)?n>c?390:270:160;this.showDialog(b.container,400,g,!0,!0);b.init()}; EditorUi.prototype.openInNewWindow=function(a,b,d){var c=window.open("about:blank");null==c||null==c.document?mxUtils.popup(a,!0):("image/svg+xml"!=b||mxClient.IS_SVG?(d=d?a:btoa(unescape(encodeURIComponent(a))),"image/svg+xml"==b?mxClient.IS_GC&&mxClient.IS_MAC?c.document.write('<html><object style="max-width:100%;" data="data:'+b+";base64,"+d+'"/></html>'):c.document.write("<html>"+a+"</html>"):c.document.write('<html><img style="max-width:100%;" src="data:'+b+";base64,"+d+'"/></html>')):c.document.write("<html><pre>"+ mxUtils.htmlEntities(a,!1)+"</pre></html>"),c.document.close())};var f=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.addChromelessToolbarItems=function(a){if(this.isExportToCanvas()){this.exportDialog=null;var c=a(mxUtils.bind(this,function(a){var b=mxUtils.bind(this,function(){mxEvent.removeListener(this.editor.graph.container,"click",b);null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null)});if(null!=this.exportDialog)b.apply(this); @@ -3116,145 +3117,145 @@ mxUtils.setOpacity(this.exportDialog,70);this.exportDialog.style.left=d.left+"px this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var c=this.createImageDataUri(a,null,"png");a=document.createElement("img");a.style.maxWidth="140px";a.style.maxHeight="140px";a.style.cursor="pointer";a.style.backgroundColor="white";a.setAttribute("title",mxResources.get("openInNewWindow"));a.setAttribute("border","0");a.setAttribute("src",c);this.exportDialog.appendChild(a);mxEvent.addListener(a,"click",mxUtils.bind(this,function(){this.openInNewWindow(c.substring(c.indexOf(",")+ 1),"image/png",!0);b.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}));mxEvent.addListener(this.editor.graph.container,"click",b);document.body.appendChild(this.exportDialog)}mxEvent.consume(a)}),Editor.cameraLargeImage,mxResources.get("export"))}f.apply(this,arguments)};EditorUi.prototype.saveData=function(a,b,d,f,n){this.isLocalFileSave()?this.saveLocalFile(d,a,f,n,b):this.saveRequest(a,b,mxUtils.bind(this,function(a, c){return this.createEchoRequest(d,a,f,n,b,c)}),d,n,f)};EditorUi.prototype.saveRequest=function(a,b,d,f,n,g,l){l=null!=l?l:!mxClient.IS_IOS||!navigator.standalone;var c=this.getServiceCount(!1);isLocalStorage&&c++;var e=4>=c?2:6<c?4:3;a=new CreateDialog(this,a,mxUtils.bind(this,function(a,c){if("_blank"==c||null!=a&&0<a.length){var e=d("_blank"==c?null:a,c==App.MODE_DEVICE||"download"==c||null==c||"_blank"==c?"0":"1");null!=e&&(c==App.MODE_DEVICE||"download"==c||"_blank"==c?e.simulate(document,"_blank"): -this.pickFolder(c,mxUtils.bind(this,function(d){g=null!=g?g:"pdf"==b?"application/pdf":"image/"+b;if(null!=f)try{this.exportFile(f,a,g,!0,c,d)}catch(v){this.handleError(v)}else this.spinner.spin(document.body,mxResources.get("saving"))&&e.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=e.getStatus()&&299>=e.getStatus())try{this.exportFile(e.getText(),a,g,!0,c,d)}catch(v){this.handleError(v)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(a){this.spinner.stop(); +this.pickFolder(c,mxUtils.bind(this,function(d){g=null!=g?g:"pdf"==b?"application/pdf":"image/"+b;if(null!=f)try{this.exportFile(f,a,g,!0,c,d)}catch(t){this.handleError(t)}else this.spinner.spin(document.body,mxResources.get("saving"))&&e.send(mxUtils.bind(this,function(){this.spinner.stop();if(200<=e.getStatus()&&299>=e.getStatus())try{this.exportFile(e.getText(),a,g,!0,c,d)}catch(t){this.handleError(t)}else this.handleError({message:mxResources.get("errorSavingFile")})}),function(a){this.spinner.stop(); this.handleError(a)})})))}}),mxUtils.bind(this,function(){this.hideDialog()}),mxResources.get("saveAs"),mxResources.get("download"),!1,!1,l,null,1<c,e,f,g,n);c=this.isServices(c)?4<c?390:270:160;this.showDialog(a.container,380,c,!0,!0);a.init()};EditorUi.prototype.isServices=function(a){return 1!=a};EditorUi.prototype.getEditBlankXml=function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(a,b,d,f,n,g){};EditorUi.prototype.pickFolder=function(a,b,d){b(null)};EditorUi.prototype.exportSvg= -function(a,b,d,f,n,g,l,m,t,p){if(this.spinner.spin(document.body,mxResources.get("export")))try{var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;var e=b?null:this.editor.graph.background;e==mxConstants.NONE&&(e=null);null==e&&0==b&&(e="#ffffff");var k=this.editor.graph.getSvg(e,a,l,m,null,d,null,null,"blank"==p?"_blank":"self"==p?"_top":null,null,!0);f&&this.editor.graph.addSvgShadow(k);var q=this.getBaseFilename()+".svg",x=mxUtils.bind(this,function(a){this.spinner.stop();n&&a.setAttribute("content", -this.getFileData(!0,null,null,null,d,t,null,null,null,!1));var c='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||c.length<=MAX_REQUEST_SIZE?this.saveData(q,"svg",c,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(c)}))});this.editor.addFontCss(k);this.editor.graph.mathEnabled&& +function(a,b,d,f,n,g,l,m,v,p){if(this.spinner.spin(document.body,mxResources.get("export")))try{var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;var e=b?null:this.editor.graph.background;e==mxConstants.NONE&&(e=null);null==e&&0==b&&(e="#ffffff");var k=this.editor.graph.getSvg(e,a,l,m,null,d,null,null,"blank"==p?"_blank":"self"==p?"_top":null,null,!0);f&&this.editor.graph.addSvgShadow(k);var q=this.getBaseFilename()+".svg",x=mxUtils.bind(this,function(a){this.spinner.stop();n&&a.setAttribute("content", +this.getFileData(!0,null,null,null,d,v,null,null,null,!1));var c='<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'+mxUtils.getXml(a);this.isLocalFileSave()||c.length<=MAX_REQUEST_SIZE?this.saveData(q,"svg",c,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(c)}))});this.editor.addFontCss(k);this.editor.graph.mathEnabled&& this.editor.addMathCss(k);g?(null==this.thumbImageCache&&(this.thumbImageCache={}),this.convertImages(k,x,this.thumbImageCache)):x(k)}catch(M){this.handleError(M)}};EditorUi.prototype.addRadiobox=function(a,b,d,f,n,g,l){return this.addCheckbox(a,d,f,n,g,l,!0,b)};EditorUi.prototype.addCheckbox=function(a,b,d,f,n,g,l,m){g=null!=g?g:!0;var c=document.createElement("input");c.style.marginRight="8px";c.style.marginTop="16px";c.setAttribute("type",l?"radio":"checkbox");l="geCheckbox-"+Editor.guid();c.id= l;null!=m&&c.setAttribute("name",m);d&&(c.setAttribute("checked","checked"),c.defaultChecked=!0);f&&c.setAttribute("disabled","disabled");g&&(a.appendChild(c),d=document.createElement("label"),mxUtils.write(d,b),d.setAttribute("for",l),a.appendChild(d),n||mxUtils.br(a));return c};EditorUi.prototype.addEditButton=function(a,b){var c=this.addCheckbox(a,mxResources.get("edit")+":",!0,null,!0);c.style.marginLeft="24px";var d=this.getCurrentFile(),e="";null!=d&&d.getMode()!=App.MODE_DEVICE&&d.getMode()!= -App.MODE_BROWSER&&(e=window.location.href);var f=document.createElement("select");f.style.width="120px";f.style.marginLeft="8px";f.style.marginRight="10px";f.className="geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));f.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d,mxResources.get("custom")+"...");f.appendChild(d);a.appendChild(f);mxEvent.addListener(f,"change",mxUtils.bind(this, -function(){if("custom"==f.value){var a=new FilenameDialog(this,e,mxResources.get("ok"),function(a){null!=a?e=a:f.value="blank"},mxResources.get("url"),null,null,null,null,function(){f.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(c,"change",mxUtils.bind(this,function(){c.checked&&(null==b||b.checked)?f.removeAttribute("disabled"):f.setAttribute("disabled","disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===f.value?"_blank": -e:null},getEditInput:function(){return c},getEditSelect:function(){return f}}};EditorUi.prototype.addLinkSection=function(a,b){function c(){l.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=f&&f!=mxConstants.NONE?"border:1px solid black;background-color:"+f:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+"')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var d=document.createElement("select"); +App.MODE_BROWSER&&(e=window.location.href);var g=document.createElement("select");g.style.width="120px";g.style.marginLeft="8px";g.style.marginRight="10px";g.className="geBtn";d=document.createElement("option");d.setAttribute("value","blank");mxUtils.write(d,mxResources.get("makeCopy"));g.appendChild(d);d=document.createElement("option");d.setAttribute("value","custom");mxUtils.write(d,mxResources.get("custom")+"...");g.appendChild(d);a.appendChild(g);mxEvent.addListener(g,"change",mxUtils.bind(this, +function(){if("custom"==g.value){var a=new FilenameDialog(this,e,mxResources.get("ok"),function(a){null!=a?e=a:g.value="blank"},mxResources.get("url"),null,null,null,null,function(){g.value="blank"});this.showDialog(a.container,300,80,!0,!1);a.init()}}));mxEvent.addListener(c,"change",mxUtils.bind(this,function(){c.checked&&(null==b||b.checked)?g.removeAttribute("disabled"):g.setAttribute("disabled","disabled")}));mxUtils.br(a);return{getLink:function(){return c.checked?"blank"===g.value?"_blank": +e:null},getEditInput:function(){return c},getEditSelect:function(){return g}}};EditorUi.prototype.addLinkSection=function(a,b){function c(){f.innerHTML='<div style="width:100%;height:100%;box-sizing:border-box;'+(null!=g&&g!=mxConstants.NONE?"border:1px solid black;background-color:"+g:"background-position:center center;background-repeat:no-repeat;background-image:url('"+Dialog.prototype.closeImage+"')")+';"></div>'}mxUtils.write(a,mxResources.get("links")+":");var d=document.createElement("select"); d.style.width="100px";d.style.marginLeft="8px";d.style.marginRight="10px";d.className="geBtn";var e=document.createElement("option");e.setAttribute("value","auto");mxUtils.write(e,mxResources.get("automatic"));d.appendChild(e);e=document.createElement("option");e.setAttribute("value","blank");mxUtils.write(e,mxResources.get("openInNewWindow"));d.appendChild(e);e=document.createElement("option");e.setAttribute("value","self");mxUtils.write(e,mxResources.get("openInThisWindow"));d.appendChild(e);b&& -(e=document.createElement("option"),e.setAttribute("value","frame"),mxUtils.write(e,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(e));a.appendChild(d);mxUtils.write(a,mxResources.get("borderColor")+":");var f="#0000ff",l=null,l=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(f||"none",function(a){f=a;c()});mxEvent.consume(a)}));c();l.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";l.style.marginLeft="4px";l.style.height="22px";l.style.width= -"22px";l.style.position="relative";l.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";l.className="geColorBtn";a.appendChild(l);mxUtils.br(a);return{getColor:function(){return f},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createLink=function(a,b,d,f,n,g,l,m){var c=this.getCurrentFile(),e=[];f&&(e.push("lightbox=1"),"auto"!=a&&e.push("target="+a),null!=b&&b!=mxConstants.NONE&&e.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)), +(e=document.createElement("option"),e.setAttribute("value","frame"),mxUtils.write(e,mxResources.get("openInThisWindow")+" ("+mxResources.get("iframe")+")"),d.appendChild(e));a.appendChild(d);mxUtils.write(a,mxResources.get("borderColor")+":");var g="#0000ff",f=null,f=mxUtils.button("",mxUtils.bind(this,function(a){this.pickColor(g||"none",function(a){g=a;c()});mxEvent.consume(a)}));c();f.style.padding=mxClient.IS_FF?"4px 2px 4px 2px":"4px";f.style.marginLeft="4px";f.style.height="22px";f.style.width= +"22px";f.style.position="relative";f.style.top=mxClient.IS_IE||mxClient.IS_IE11||mxClient.IS_EDGE?"6px":"1px";f.className="geColorBtn";a.appendChild(f);mxUtils.br(a);return{getColor:function(){return g},getTarget:function(){return d.value},focus:function(){d.focus()}}};EditorUi.prototype.createLink=function(a,b,d,f,n,g,l,m){var c=this.getCurrentFile(),e=[];f&&(e.push("lightbox=1"),"auto"!=a&&e.push("target="+a),null!=b&&b!=mxConstants.NONE&&e.push("highlight="+("#"==b.charAt(0)?b.substring(1):b)), null!=n&&0<n.length&&e.push("edit="+encodeURIComponent(n)),g&&e.push("layers=1"),this.editor.graph.foldingEnabled&&e.push("nav=1"));d&&null!=this.currentPage&&null!=this.pages&&this.currentPage!=this.pages[0]&&e.push("page-id="+this.currentPage.getId());a=!0;null!=l?d="#U"+encodeURIComponent(l):(c=this.getCurrentFile(),m||null==c||c.constructor!=window.DriveFile?d="#R"+encodeURIComponent(d?this.getFileData(!0,null,null,null,null,null,null,!0,null,!1):Graph.compress(mxUtils.getXml(this.editor.getGraphXml()))): -(d="#"+c.getHash(),a=!1));a&&null!=c&&null!=c.getTitle()&&c.getTitle()!=this.defaultFilename&&e.push("title="+encodeURIComponent(c.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<e.length?"?"+e.join("&"):"")+d};EditorUi.prototype.createHtml=function(a,b,d,f,n,g,l,m,t,p,y){this.getBasenames();var c={};""!=n&&n!=mxConstants.NONE&&(c.highlight=n);"auto"!==f&&(c.target=f);t||(c.lightbox= -!1);c.nav=this.editor.graph.foldingEnabled;d=parseInt(d);isNaN(d)||100==d||(c.zoom=d/100);d=[];l&&(d.push("pages"),c.resize=!0,null!=this.pages&&null!=this.currentPage&&(c.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(d.push("zoom"),c.resize=!0);m&&d.push("layers");0<d.length&&(t&&d.push("lightbox"),c.toolbar=d.join(" "));null!=p&&0<p.length&&(c.edit=p);null!=a?c.url=a:c.xml=this.getFileData(!0,null,null,null,null,!l);b='<div class="mxgraph" style="'+(g?"max-width:100%;":"")+(""!=d?"border:1px solid transparent;": +(d="#"+c.getHash(),a=!1));a&&null!=c&&null!=c.getTitle()&&c.getTitle()!=this.defaultFilename&&e.push("title="+encodeURIComponent(c.getTitle()));return(mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||!/.*\.draw\.io$/.test(window.location.hostname)?EditorUi.drawHost:"https://"+window.location.host+"/")+(0<e.length?"?"+e.join("&"):"")+d};EditorUi.prototype.createHtml=function(a,b,d,f,n,g,l,m,v,p,y){this.getBasenames();var c={};""!=n&&n!=mxConstants.NONE&&(c.highlight=n);"auto"!==f&&(c.target=f);v||(c.lightbox= +!1);c.nav=this.editor.graph.foldingEnabled;d=parseInt(d);isNaN(d)||100==d||(c.zoom=d/100);d=[];l&&(d.push("pages"),c.resize=!0,null!=this.pages&&null!=this.currentPage&&(c.page=mxUtils.indexOf(this.pages,this.currentPage)));b&&(d.push("zoom"),c.resize=!0);m&&d.push("layers");0<d.length&&(v&&d.push("lightbox"),c.toolbar=d.join(" "));null!=p&&0<p.length&&(c.edit=p);null!=a?c.url=a:c.xml=this.getFileData(!0,null,null,null,null,!l);b='<div class="mxgraph" style="'+(g?"max-width:100%;":"")+(""!=d?"border:1px solid transparent;": "")+'" data-mxgraph="'+mxUtils.htmlEntities(JSON.stringify(c))+'"></div>';a=null!=a?"&fetch="+encodeURIComponent(a):"";y(b,'<script type="text/javascript" src="'+(0<a.length?("1"==urlParams.dev?"https://test.draw.io/embed2.js?dev=1":EditorUi.drawHost+"/embed2.js?")+a:"1"==urlParams.dev?"https://test.draw.io/js/viewer.min.js":window.VIEWER_URL?window.VIEWER_URL:EditorUi.drawHost+"/js/viewer.min.js")+'">\x3c/script>')};EditorUi.prototype.showHtmlDialog=function(a,b,d,f){var c=document.createElement("div"); c.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("html"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(e);var k=document.createElement("div");k.style.cssText="border-bottom:1px solid lightGray;padding-bottom:8px;margin-bottom:12px;";var l=document.createElement("input");l.style.cssText="margin-right:8px;margin-top:8px;margin-bottom:8px;";l.setAttribute("value","url");l.setAttribute("type","radio");l.setAttribute("name", "type-embedhtmldialog");e=l.cloneNode(!0);e.setAttribute("value","copy");k.appendChild(e);var q=document.createElement("span");mxUtils.write(q,mxResources.get("includeCopyOfMyDiagram"));k.appendChild(q);mxUtils.br(k);k.appendChild(l);q=document.createElement("span");mxUtils.write(q,mxResources.get("publicDiagramUrl"));k.appendChild(q);var m=this.getCurrentFile();null==d&&null!=m&&m.constructor==window.DriveFile&&(q=document.createElement("a"),q.style.paddingLeft="12px",q.style.color="gray",q.setAttribute("href", "javascript:void(0);"),mxUtils.write(q,mxResources.get("share")),k.appendChild(q),mxEvent.addListener(q,"click",mxUtils.bind(this,function(){this.hideDialog();this.drive.showPermissions(m.getId())})));e.setAttribute("checked","checked");null==d&&l.setAttribute("disabled","disabled");c.appendChild(k);var y=this.addLinkSection(c),p=this.addCheckbox(c,mxResources.get("zoom"),!0,null,!0);mxUtils.write(c,":");var C=document.createElement("input");C.setAttribute("type","text");C.style.marginRight="16px"; -C.style.width="60px";C.style.marginLeft="4px";C.style.marginRight="12px";C.value="100%";c.appendChild(C);var v=this.addCheckbox(c,mxResources.get("fit"),!0),k=null!=this.pages&&1<this.pages.length,u=u=this.addCheckbox(c,mxResources.get("allPages"),k,!k),z=this.addCheckbox(c,mxResources.get("layers"),!0),I=this.addCheckbox(c,mxResources.get("lightbox"),!0),B=this.addEditButton(c,I),D=B.getEditInput();D.style.marginBottom="16px";mxEvent.addListener(I,"change",function(){I.checked?D.removeAttribute("disabled"): -D.setAttribute("disabled","disabled");D.checked&&I.checked?B.getEditSelect().removeAttribute("disabled"):B.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,c,mxUtils.bind(this,function(){f(l.checked?d:null,p.checked,C.value,y.getTarget(),y.getColor(),v.checked,u.checked,z.checked,I.checked,B.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,d,f,n,g){var c=document.createElement("div");c.style.whiteSpace= +C.style.width="60px";C.style.marginLeft="4px";C.style.marginRight="12px";C.value="100%";c.appendChild(C);var t=this.addCheckbox(c,mxResources.get("fit"),!0),k=null!=this.pages&&1<this.pages.length,u=u=this.addCheckbox(c,mxResources.get("allPages"),k,!k),A=this.addCheckbox(c,mxResources.get("layers"),!0),G=this.addCheckbox(c,mxResources.get("lightbox"),!0),B=this.addEditButton(c,G),E=B.getEditInput();E.style.marginBottom="16px";mxEvent.addListener(G,"change",function(){G.checked?E.removeAttribute("disabled"): +E.setAttribute("disabled","disabled");E.checked&&G.checked?B.getEditSelect().removeAttribute("disabled"):B.getEditSelect().setAttribute("disabled","disabled")});a=new CustomDialog(this,c,mxUtils.bind(this,function(){f(l.checked?d:null,p.checked,C.value,y.getTarget(),y.getColor(),t.checked,u.checked,A.checked,G.checked,B.getLink())}),null,a,b);this.showDialog(a.container,340,384,!0,!0);e.focus()};EditorUi.prototype.showPublishLinkDialog=function(a,b,d,f,n,g){var c=document.createElement("div");c.style.whiteSpace= "nowrap";var e=document.createElement("h3");mxUtils.write(e,a||mxResources.get("link"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(e);var k=this.getCurrentFile(),e="https://desk.draw.io/support/solutions/articles/16000051941";a=0;if(null!=k&&k.constructor==window.DriveFile&&!b){a=80;var e="https://desk.draw.io/support/solutions/articles/16000039384",l=document.createElement("div");l.style.cssText="border-bottom:1px solid lightGray;padding-bottom:14px;padding-top:6px;margin-bottom:14px;text-align:center;"; var q=document.createElement("div");q.style.whiteSpace="normal";mxUtils.write(q,mxResources.get("linkAccountRequired"));l.appendChild(q);q=mxUtils.button(mxResources.get("share"),mxUtils.bind(this,function(){this.drive.showPermissions(k.getId())}));q.style.marginTop="12px";q.className="geBtn";l.appendChild(q);c.appendChild(l);q=document.createElement("a");q.style.paddingLeft="12px";q.style.color="gray";q.style.fontSize="11px";q.setAttribute("href","javascript:void(0);");mxUtils.write(q,mxResources.get("check")); l.appendChild(q);mxEvent.addListener(q,"click",mxUtils.bind(this,function(){this.spinner.spin(document.body,mxResources.get("loading"))&&this.getPublicUrl(this.getCurrentFile(),mxUtils.bind(this,function(a){this.spinner.stop();a=new ErrorDialog(this,null,mxResources.get(null!=a?"diagramIsPublic":"diagramIsNotPublic"),mxResources.get("ok"));this.showDialog(a.container,300,80,!0,!1);a.init()}))}))}var m=null,p=null;if(null!=d||null!=f)a+=30,mxUtils.write(c,mxResources.get("width")+":"),m=document.createElement("input"), -m.setAttribute("type","text"),m.style.marginRight="16px",m.style.width="50px",m.style.marginLeft="6px",m.style.marginRight="16px",m.style.marginBottom="10px",m.value="100%",c.appendChild(m),mxUtils.write(c,mxResources.get("height")+":"),p=document.createElement("input"),p.setAttribute("type","text"),p.style.width="50px",p.style.marginLeft="6px",p.style.marginBottom="10px",p.value=f+"px",c.appendChild(p),mxUtils.br(c);var v=this.addLinkSection(c,g);d=null!=this.pages&&1<this.pages.length;var u=null; -if(null==k||k.constructor!=window.DriveFile||b)u=this.addCheckbox(c,mxResources.get("allPages"),d,!d);var z=this.addCheckbox(c,mxResources.get("lightbox"),!0),I=this.addEditButton(c,z),B=I.getEditInput(),D=this.addCheckbox(c,mxResources.get("layers"),!0);D.style.marginLeft=B.style.marginLeft;D.style.marginBottom="16px";D.style.marginTop="8px";mxEvent.addListener(z,"change",function(){z.checked?(D.removeAttribute("disabled"),B.removeAttribute("disabled")):(D.setAttribute("disabled","disabled"),B.setAttribute("disabled", -"disabled"));B.checked&&z.checked?I.getEditSelect().removeAttribute("disabled"):I.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,c,mxUtils.bind(this,function(){n(v.getTarget(),v.getColor(),null==u?!0:u.checked,z.checked,I.getLink(),D.checked,null!=m?m.value:null,null!=p?p.value:null)}),null,mxResources.get("create"),e);this.showDialog(b.container,340,254+a,!0,!0);null!=m?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select(): -document.execCommand("selectAll",!1,null)):v.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,d,f,n){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("image"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(n?"10":"4")+"px";c.appendChild(e);if(n){mxUtils.write(c,mxResources.get("zoom")+":");var k=document.createElement("input");k.setAttribute("type","text");k.style.marginRight= +m.setAttribute("type","text"),m.style.marginRight="16px",m.style.width="50px",m.style.marginLeft="6px",m.style.marginRight="16px",m.style.marginBottom="10px",m.value="100%",c.appendChild(m),mxUtils.write(c,mxResources.get("height")+":"),p=document.createElement("input"),p.setAttribute("type","text"),p.style.width="50px",p.style.marginLeft="6px",p.style.marginBottom="10px",p.value=f+"px",c.appendChild(p),mxUtils.br(c);var t=this.addLinkSection(c,g);d=null!=this.pages&&1<this.pages.length;var u=null; +if(null==k||k.constructor!=window.DriveFile||b)u=this.addCheckbox(c,mxResources.get("allPages"),d,!d);var A=this.addCheckbox(c,mxResources.get("lightbox"),!0),G=this.addEditButton(c,A),B=G.getEditInput(),E=this.addCheckbox(c,mxResources.get("layers"),!0);E.style.marginLeft=B.style.marginLeft;E.style.marginBottom="16px";E.style.marginTop="8px";mxEvent.addListener(A,"change",function(){A.checked?(E.removeAttribute("disabled"),B.removeAttribute("disabled")):(E.setAttribute("disabled","disabled"),B.setAttribute("disabled", +"disabled"));B.checked&&A.checked?G.getEditSelect().removeAttribute("disabled"):G.getEditSelect().setAttribute("disabled","disabled")});b=new CustomDialog(this,c,mxUtils.bind(this,function(){n(t.getTarget(),t.getColor(),null==u?!0:u.checked,A.checked,G.getLink(),E.checked,null!=m?m.value:null,null!=p?p.value:null)}),null,mxResources.get("create"),e);this.showDialog(b.container,340,254+a,!0,!0);null!=m?(m.focus(),mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?m.select(): +document.execCommand("selectAll",!1,null)):t.focus()};EditorUi.prototype.showRemoteExportDialog=function(a,b,d,f,n){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=document.createElement("h3");mxUtils.write(e,mxResources.get("image"));e.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:"+(n?"10":"4")+"px";c.appendChild(e);if(n){mxUtils.write(c,mxResources.get("zoom")+":");var k=document.createElement("input");k.setAttribute("type","text");k.style.marginRight= "16px";k.style.width="60px";k.style.marginLeft="4px";k.style.marginRight="12px";k.value=this.lastExportZoom||"100%";c.appendChild(k);mxUtils.write(c,mxResources.get("borderWidth")+":");var l=document.createElement("input");l.setAttribute("type","text");l.style.marginRight="16px";l.style.width="60px";l.style.marginLeft="4px";l.value=this.lastExportBorder||"0";c.appendChild(l);mxUtils.br(c)}var q=this.addCheckbox(c,mxResources.get("selectionOnly"),!1,this.editor.graph.isSelectionEmpty()),m=f?null:this.addCheckbox(c, mxResources.get("includeCopyOfMyDiagram"),!0),e=this.editor.graph,p=f?null:this.addCheckbox(c,mxResources.get("transparentBackground"),e.background==mxConstants.NONE||null==e.background);null!=p&&(p.style.marginBottom="16px");a=new CustomDialog(this,c,mxUtils.bind(this,function(){var a=parseInt(k.value)/100||1,c=parseInt(l.value)||0;d(!q.checked,null!=m?m.checked:!1,null!=p?p.checked:!1,a,c)}),null,a,b);this.showDialog(a.container,300,(n?25:0)+(f?125:210),!0,!0)};EditorUi.prototype.showExportDialog= -function(a,b,d,f,n,g,l,m){l=null!=l?l:!0;var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=this.editor.graph,k="jpeg"==m?196:300,q=document.createElement("h3");mxUtils.write(q,a);q.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";c.appendChild(q);mxUtils.write(c,mxResources.get("zoom")+":");var x=document.createElement("input");x.setAttribute("type","text");x.style.marginRight="16px";x.style.width="60px";x.style.marginLeft="4px";x.style.marginRight= -"12px";x.value=this.lastExportZoom||"100%";c.appendChild(x);mxUtils.write(c,mxResources.get("borderWidth")+":");var p=document.createElement("input");p.setAttribute("type","text");p.style.marginRight="16px";p.style.width="60px";p.style.marginLeft="4px";p.value=this.lastExportBorder||"0";c.appendChild(p);mxUtils.br(c);var A=this.addCheckbox(c,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=m),u=this.addCheckbox(c,mxResources.get("selectionOnly"),!1,e.isSelectionEmpty()),z=document.createElement("input"); -z.style.marginTop="16px";z.style.marginRight="8px";z.style.marginLeft="24px";z.setAttribute("disabled","disabled");z.setAttribute("type","checkbox");g&&(c.appendChild(z),mxUtils.write(c,mxResources.get("crop")),mxUtils.br(c),k+=26,mxEvent.addListener(u,"change",function(){u.checked?z.removeAttribute("disabled"):z.setAttribute("disabled","disabled")}));e.isSelectionEmpty()||(z.setAttribute("checked","checked"),z.defaultChecked=!0);var B=this.addCheckbox(c,mxResources.get("shadow"),e.shadowVisible), -D=document.createElement("input");D.style.marginTop="16px";D.style.marginRight="8px";D.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||D.setAttribute("disabled","disabled");b&&(c.appendChild(D),mxUtils.write(c,mxResources.get("embedImages")),mxUtils.br(c),k+=26);var E=null;if("png"==m||"jpeg"==m)E=this.addCheckbox(c,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),k+=26;var N=this.addCheckbox(c,mxResources.get("includeCopyOfMyDiagram"),l,null,null, -"jpeg"!=m),U=null!=this.pages&&1<this.pages.length,ba=this.addCheckbox(c,U?mxResources.get("allPages"):"",U,!U,null,"jpeg"!=m);ba.style.marginLeft="24px";ba.style.marginBottom="16px";U?k+=26:ba.style.display="none";mxEvent.addListener(N,"change",function(){N.checked&&U?ba.removeAttribute("disabled"):ba.setAttribute("disabled","disabled")});l&&U||ba.setAttribute("disabled","disabled");var V=document.createElement("select");V.style.maxWidth="260px";V.style.marginLeft="8px";V.style.marginRight="10px"; -V.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));V.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));V.appendChild(a);a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));V.appendChild(a);"svg"==m&&(mxUtils.write(c,mxResources.get("links")+":"),c.appendChild(V),mxUtils.br(c), -mxUtils.br(c),k+=26);d=new CustomDialog(this,c,mxUtils.bind(this,function(){this.lastExportBorder=p.value;this.lastExportZoom=x.value;n(x.value,A.checked,!u.checked,B.checked,N.checked,D.checked,p.value,z.checked,!ba.checked,V.value,null!=E?E.checked:null)}),null,d,f);this.showDialog(d.container,340,k,!0,!0,null,null,null,null,!0);x.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?x.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog= -function(a,b,d,f,n){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=this.editor.graph;if(null!=b){var k=document.createElement("h3");mxUtils.write(k,b);k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(k)}var l=this.addCheckbox(c,mxResources.get("fit"),!0),q=this.addCheckbox(c,mxResources.get("shadow"),e.shadowVisible&&f,!f),m=this.addCheckbox(c,d),p=this.addCheckbox(c,mxResources.get("lightbox"),!0),C=this.addEditButton(c,p),v=C.getEditInput(), -u=1<e.model.getChildCount(e.model.getRoot()),z=this.addCheckbox(c,mxResources.get("layers"),u,!u);z.style.marginLeft=v.style.marginLeft;z.style.marginBottom="12px";z.style.marginTop="8px";mxEvent.addListener(p,"change",function(){p.checked?(u&&z.removeAttribute("disabled"),v.removeAttribute("disabled")):(z.setAttribute("disabled","disabled"),v.setAttribute("disabled","disabled"));v.checked&&p.checked?C.getEditSelect().removeAttribute("disabled"):C.getEditSelect().setAttribute("disabled","disabled")}); -b=new CustomDialog(this,c,mxUtils.bind(this,function(){a(l.checked,q.checked,m.checked,p.checked,C.getLink(),z.checked)}),null,mxResources.get("embed"),n);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,d,f,n,g,l,m){function c(c){var b=" ",k="";f&&(b=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ -EditorUi.drawHost+"/?client=1&lightbox=1"+(n?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",k+="cursor:pointer;");a&&(k+="max-width:100%;");var q="";d&&(q=' width="'+Math.round(e.width)+'" height="'+Math.round(e.height)+'"');l('<img src="'+c+'"'+q+(""!=k?' style="'+k+'"':"")+b+"/>")}var e=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=f?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");c(a)}),null,null,null, -mxUtils.bind(this,function(a){m({message:mxResources.get("unknownError")})}),null,!0,d?2:1,null,b);else if(b=this.getFileData(!0),e.width*e.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var k="";d&&(k="&w="+Math.round(2*e.width)+"&h="+Math.round(2*e.height));var q=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+k+"&xml="+encodeURIComponent(b));q.send(mxUtils.bind(this,function(){200<=q.getStatus()&&299>=q.getStatus()?c("data:image/png;base64,"+q.getText()):m({message:mxResources.get("unknownError")})}))}else m({message:mxResources.get("drawingTooLarge")})}; +function(a,b,d,f,l,g,m,x){m=null!=m?m:!0;var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=this.editor.graph,k="jpeg"==x?196:300,n=document.createElement("h3");mxUtils.write(n,a);n.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:10px";c.appendChild(n);mxUtils.write(c,mxResources.get("zoom")+":");var q=document.createElement("input");q.setAttribute("type","text");q.style.marginRight="16px";q.style.width="60px";q.style.marginLeft="4px";q.style.marginRight= +"12px";q.value=this.lastExportZoom||"100%";c.appendChild(q);mxUtils.write(c,mxResources.get("borderWidth")+":");var t=document.createElement("input");t.setAttribute("type","text");t.style.marginRight="16px";t.style.width="60px";t.style.marginLeft="4px";t.value=this.lastExportBorder||"0";c.appendChild(t);mxUtils.br(c);var p=this.addCheckbox(c,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=x),z=this.addCheckbox(c,mxResources.get("selectionOnly"),!1,e.isSelectionEmpty()),u=document.createElement("input"); +u.style.marginTop="16px";u.style.marginRight="8px";u.style.marginLeft="24px";u.setAttribute("disabled","disabled");u.setAttribute("type","checkbox");g&&(c.appendChild(u),mxUtils.write(c,mxResources.get("crop")),mxUtils.br(c),k+=26,mxEvent.addListener(z,"change",function(){z.checked?u.removeAttribute("disabled"):u.setAttribute("disabled","disabled")}));e.isSelectionEmpty()||(u.setAttribute("checked","checked"),u.defaultChecked=!0);var A=this.addCheckbox(c,mxResources.get("shadow"),e.shadowVisible), +B=document.createElement("input");B.style.marginTop="16px";B.style.marginRight="8px";B.setAttribute("type","checkbox");!this.isOffline()&&this.canvasSupported||B.setAttribute("disabled","disabled");b&&(c.appendChild(B),mxUtils.write(c,mxResources.get("embedImages")),mxUtils.br(c),k+=26);var D=null;if("png"==x||"jpeg"==x)D=this.addCheckbox(c,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),k+=26;var N=this.addCheckbox(c,mxResources.get("includeCopyOfMyDiagram"),m,null,null, +"jpeg"!=x),U=null!=this.pages&&1<this.pages.length,ba=this.addCheckbox(c,U?mxResources.get("allPages"):"",U,!U,null,"jpeg"!=x);ba.style.marginLeft="24px";ba.style.marginBottom="16px";U?k+=26:ba.style.display="none";mxEvent.addListener(N,"change",function(){N.checked&&U?ba.removeAttribute("disabled"):ba.setAttribute("disabled","disabled")});m&&U||ba.setAttribute("disabled","disabled");var V=document.createElement("select");V.style.maxWidth="260px";V.style.marginLeft="8px";V.style.marginRight="10px"; +V.className="geBtn";a=document.createElement("option");a.setAttribute("value","auto");mxUtils.write(a,mxResources.get("automatic"));V.appendChild(a);a=document.createElement("option");a.setAttribute("value","blank");mxUtils.write(a,mxResources.get("openInNewWindow"));V.appendChild(a);a=document.createElement("option");a.setAttribute("value","self");mxUtils.write(a,mxResources.get("openInThisWindow"));V.appendChild(a);"svg"==x&&(mxUtils.write(c,mxResources.get("links")+":"),c.appendChild(V),mxUtils.br(c), +mxUtils.br(c),k+=26);d=new CustomDialog(this,c,mxUtils.bind(this,function(){this.lastExportBorder=t.value;this.lastExportZoom=q.value;l(q.value,p.checked,!z.checked,A.checked,N.checked,B.checked,t.value,u.checked,!ba.checked,V.value,null!=D?D.checked:null)}),null,d,f);this.showDialog(d.container,340,k,!0,!0,null,null,null,null,!0);q.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode||mxClient.IS_QUIRKS?q.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog= +function(a,b,d,f,l){var c=document.createElement("div");c.style.whiteSpace="nowrap";var e=this.editor.graph;if(null!=b){var k=document.createElement("h3");mxUtils.write(k,b);k.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";c.appendChild(k)}var n=this.addCheckbox(c,mxResources.get("fit"),!0),q=this.addCheckbox(c,mxResources.get("shadow"),e.shadowVisible&&f,!f),m=this.addCheckbox(c,d),p=this.addCheckbox(c,mxResources.get("lightbox"),!0),C=this.addEditButton(c,p),t=C.getEditInput(), +u=1<e.model.getChildCount(e.model.getRoot()),A=this.addCheckbox(c,mxResources.get("layers"),u,!u);A.style.marginLeft=t.style.marginLeft;A.style.marginBottom="12px";A.style.marginTop="8px";mxEvent.addListener(p,"change",function(){p.checked?(u&&A.removeAttribute("disabled"),t.removeAttribute("disabled")):(A.setAttribute("disabled","disabled"),t.setAttribute("disabled","disabled"));t.checked&&p.checked?C.getEditSelect().removeAttribute("disabled"):C.getEditSelect().setAttribute("disabled","disabled")}); +b=new CustomDialog(this,c,mxUtils.bind(this,function(){a(n.checked,q.checked,m.checked,p.checked,C.getLink(),A.checked)}),null,mxResources.get("embed"),l);this.showDialog(b.container,280,280,!0,!0)};EditorUi.prototype.createEmbedImage=function(a,b,d,f,l,g,m,x){function c(c){var b=" ",k="";f&&(b=" onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ +EditorUi.drawHost+"/?client=1&lightbox=1"+(l?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",k+="cursor:pointer;");a&&(k+="max-width:100%;");var n="";d&&(n=' width="'+Math.round(e.width)+'" height="'+Math.round(e.height)+'"');m('<img src="'+c+'"'+n+(""!=k?' style="'+k+'"':"")+b+"/>")}var e=this.editor.graph.getGraphBounds();if(this.isExportToCanvas())this.exportToCanvas(mxUtils.bind(this,function(a){var b=f?this.getFileData(!0):null;a=this.createImageDataUri(a,b,"png");c(a)}),null,null,null, +mxUtils.bind(this,function(a){x({message:mxResources.get("unknownError")})}),null,!0,d?2:1,null,b);else if(b=this.getFileData(!0),e.width*e.height<=MAX_AREA&&b.length<=MAX_REQUEST_SIZE){var k="";d&&(k="&w="+Math.round(2*e.width)+"&h="+Math.round(2*e.height));var n=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(f?"1":"0")+k+"&xml="+encodeURIComponent(b));n.send(mxUtils.bind(this,function(){200<=n.getStatus()&&299>=n.getStatus()?c("data:image/png;base64,"+n.getText()):x({message:mxResources.get("unknownError")})}))}else x({message:mxResources.get("drawingTooLarge")})}; EditorUi.prototype.createEmbedSvg=function(a,b,d,f,n,g,l){var c=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!d),e=c.getElementsByTagName("a");if(null!=e)for(var k=0;k<e.length;k++){var q=e[k].getAttribute("href");null!=q&&"#"==q.charAt(0)&&"_blank"==e[k].getAttribute("target")&&e[k].removeAttribute("target")}f&&c.setAttribute("content",this.getFileData(!0));b&&this.editor.graph.addSvgShadow(c);if(d){var m=" ",p="";f&&(m="onclick=\"(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('"+ EditorUi.drawHost+"/?client=1&lightbox=1"+(n?"&edit=_blank":"")+(g?"&layers=1":"")+"');}})(this);\"",p+="cursor:pointer;");a&&(p+="max-width:100%;");this.convertImages(c,mxUtils.bind(this,function(a){l('<img src="'+this.createSvgDataUri(mxUtils.getXml(a))+'"'+(""!=p?' style="'+p+'"':"")+m+"/>")}))}else p="",f&&(c.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+ EditorUi.drawHost+"/?client=1&lightbox=1"+(n?"&edit=_blank":"")+(g?"&layers=1":"")+"');}}})(this);"),p+="cursor:pointer;"),a&&(a=parseInt(c.getAttribute("width")),b=parseInt(c.getAttribute("height")),c.setAttribute("viewBox","-0.5 -0.5 "+a+" "+b),p+="max-width:100%;max-height:"+b+"px;",c.removeAttribute("height")),""!=p&&c.setAttribute("style",p),this.editor.addFontCss(c),this.editor.graph.mathEnabled&&this.editor.addMathCss(c),l(mxUtils.getXml(c))};EditorUi.prototype.timeSince=function(a){a=Math.floor((new Date- a)/1E3);var c=Math.floor(a/31536E3);if(1<c)return c+" "+mxResources.get("years");c=Math.floor(a/2592E3);if(1<c)return c+" "+mxResources.get("months");c=Math.floor(a/86400);if(1<c)return c+" "+mxResources.get("days");c=Math.floor(a/3600);if(1<c)return c+" "+mxResources.get("hours");c=Math.floor(a/60);return 1<c?c+" "+mxResources.get("minutes"):1==c?c+" "+mxResources.get("minute"):null};EditorUi.prototype.decodeNodeIntoGraph=function(a,b){if(null!=a){var c=null;if("diagram"==a.nodeName)c=a;else if("mxfile"== a.nodeName){var d=a.getElementsByTagName("diagram");if(0<d.length){var c=d[0],e=b.getGlobalVariable;b.getGlobalVariable=function(a){return"page"==a?c.getAttribute("name")||mxResources.get("pageWithNumber",[1]):"pagenumber"==a?1:e.apply(this,arguments)}}}null!=c&&(a=Editor.parseDiagramNode(c))}d=this.editor.graph;try{this.editor.graph=b,this.editor.setGraphXml(a)}catch(g){}finally{this.editor.graph=d}return a};EditorUi.prototype.getEmbeddedPng=function(a,b,d){try{var c=this.editor.graph,e=null;if(null!= d&&0<d.length)c=this.createTemporaryGraph(this.editor.graph.getStylesheet()),document.body.appendChild(c.container),this.decodeNodeIntoGraph(this.editor.extractGraphModel(mxUtils.parseXml(d).documentElement,!0),c),e=d;else if(null!=this.pages&&this.currentPage!=this.pages[0]){var c=this.createTemporaryGraph(c.getStylesheet()),f=c.getGlobalVariable,k=this.pages[0];c.getGlobalVariable=function(a){return"page"==a?k.getName():"pagenumber"==a?1:f.apply(this,arguments)};document.body.appendChild(c.container); -c.model.setRoot(k.root)}this.exportToCanvas(mxUtils.bind(this,function(d){try{null==e&&(e=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var f=d.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"tEXt","mxfile",encodeURIComponent(e));a(f.substring(f.lastIndexOf(",")+1));c!=this.editor.graph&&c.container.parentNode.removeChild(c.container)}catch(H){null!=b&&b(H)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,c.shadowVisible,null,c)}catch(x){null!= -b&&b(x)}};EditorUi.prototype.getEmbeddedSvg=function(a,b,d,f,n,g,l,m){m=null!=m?m:!0;l=b.background;l==mxConstants.NONE&&(l=null);g=b.getSvg(l,null,null,null,null,g);b.shadowVisible&&b.addSvgShadow(g);null!=a&&g.setAttribute("content",a);null!=d&&g.setAttribute("resource",d);if(null!=n)this.embedFonts(g,mxUtils.bind(this,function(a){m?this.convertImages(a,mxUtils.bind(this,function(a){n((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ -mxUtils.getXml(a))})):n((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(a))}));else return(f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(g)};EditorUi.prototype.embedFonts=function(a,b){this.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&& -this.editor.addFontCss(a,this.editor.resolvedFontCss),this.embedExtFonts(mxUtils.bind(this,function(c){try{null!=c&&this.editor.addFontCss(a,c),b(a)}catch(q){b(a)}}))}catch(k){b(a)}}))};EditorUi.prototype.exportImage=function(a,b,d,f,n,g,l,m,t,p,y){t=null!=t?t:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); -try{this.saveCanvas(a,n?this.getFileData(!0,null,null,null,d,m):null,t,null==this.pages||0==this.pages.length,y)}catch(v){"Invalid image"==v.message?this.downloadFile(t):this.handleError(v)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,d,a||1,b,f,null,null,g,l,p)}catch(C){this.spinner.stop(),this.handleError(C)}}};EditorUi.prototype.embedCssFonts=function(a,b){function c(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$", -"g"),"")}var d=a.split("url("),e=0;null==this.cachedFonts&&(this.cachedFonts={});var f=mxUtils.bind(this,function(){if(0==e){for(var a=[d[0]],f=1;f<d.length;f++){var k=d[f].indexOf(")");a.push('url("');a.push(this.cachedFonts[c(d[f].substring(0,k))]);a.push('"'+d[f].substring(k))}b(a.join(""))}});if(0<d.length){for(var l=1;l<d.length;l++){var m=d[l].indexOf(")"),t=null,p=d[l].indexOf("format(",m);0<p&&(t=c(d[l].substring(p+7,d[l].indexOf(")",p))));mxUtils.bind(this,function(a){if(null==this.cachedFonts[a]){this.cachedFonts[a]= -a;e++;var c="application/x-font-ttf";if("svg"==t||/(\.svg)($|\?)/i.test(a))c="image/svg+xml";else if("otf"==t||"embedded-opentype"==t||/(\.otf)($|\?)/i.test(a))c="application/x-font-opentype";else if("woff"==t||/(\.woff)($|\?)/i.test(a))c="application/font-woff";else if("woff2"==t||/(\.woff2)($|\?)/i.test(a))c="application/font-woff2";else if("eot"==t||/(\.eot)($|\?)/i.test(a))c="application/vnd.ms-fontobject";else if("sfnt"==t||/(\.sfnt)($|\?)/i.test(a))c="application/font-sfnt";var b=a;/^https?:\/\//.test(b)&& -!this.editor.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(c){this.cachedFonts[a]=c;e--;f()}),mxUtils.bind(this,function(a){e--;f()}),!0,null,"data:"+c+";charset=utf-8;base64,")}})(c(d[l].substring(0,m)),t)}f()}else b(a)};EditorUi.prototype.loadFonts=function(a){null!=this.editor.fontCss&&null==this.editor.resolvedFontCss?this.embedCssFonts(this.editor.fontCss,mxUtils.bind(this,function(c){this.editor.resolvedFontCss=c;a()})):a()};EditorUi.prototype.embedExtFonts= +c.model.setRoot(k.root)}this.exportToCanvas(mxUtils.bind(this,function(d){try{null==e&&(e=this.getFileData(!0,null,null,null,null,null,null,null,null,!1));var f=d.toDataURL("image/png"),f=this.writeGraphModelToPng(f,"tEXt","mxfile",encodeURIComponent(e));a(f.substring(f.lastIndexOf(",")+1));c!=this.editor.graph&&c.container.parentNode.removeChild(c.container)}catch(I){null!=b&&b(I)}}),null,null,null,mxUtils.bind(this,function(a){null!=b&&b(a)}),null,null,null,null,c.shadowVisible,null,c)}catch(x){null!= +b&&b(x)}};EditorUi.prototype.getEmbeddedSvg=function(a,b,d,f,l,g,m,x){x=null!=x?x:!0;m=b.background;m==mxConstants.NONE&&(m=null);g=b.getSvg(m,null,null,null,null,g);b.shadowVisible&&b.addSvgShadow(g);null!=a&&g.setAttribute("content",a);null!=d&&g.setAttribute("resource",d);if(null!=l)this.embedFonts(g,mxUtils.bind(this,function(a){x?this.convertImages(a,mxUtils.bind(this,function(a){l((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+ +mxUtils.getXml(a))})):l((f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(a))}));else return(f?"":'<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')+mxUtils.getXml(g)};EditorUi.prototype.embedFonts=function(a,b){this.loadFonts(mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&& +this.editor.addFontCss(a,this.editor.resolvedFontCss),this.embedExtFonts(mxUtils.bind(this,function(c){try{null!=c&&this.editor.addFontCss(a,c),b(a)}catch(q){b(a)}}))}catch(k){b(a)}}))};EditorUi.prototype.exportImage=function(a,b,d,f,l,g,m,x,v,p,y){v=null!=v?v:"png";if(this.spinner.spin(document.body,mxResources.get("exporting"))){var c=this.editor.graph.isSelectionEmpty();d=null!=d?d:c;null==this.thumbImageCache&&(this.thumbImageCache={});try{this.exportToCanvas(mxUtils.bind(this,function(a){this.spinner.stop(); +try{this.saveCanvas(a,l?this.getFileData(!0,null,null,null,d,x):null,v,null==this.pages||0==this.pages.length,y)}catch(t){"Invalid image"==t.message?this.downloadFile(v):this.handleError(t)}}),null,this.thumbImageCache,null,mxUtils.bind(this,function(a){this.spinner.stop();this.handleError(a)}),null,d,a||1,b,f,null,null,g,m,p)}catch(C){this.spinner.stop(),this.handleError(C)}}};EditorUi.prototype.embedCssFonts=function(a,b){function c(a){return a.replace(RegExp("^[\\s\"']+","g"),"").replace(RegExp("[\\s\"']+$", +"g"),"")}var d=a.split("url("),e=0;null==this.cachedFonts&&(this.cachedFonts={});var f=mxUtils.bind(this,function(){if(0==e){for(var a=[d[0]],f=1;f<d.length;f++){var g=d[f].indexOf(")");a.push('url("');a.push(this.cachedFonts[c(d[f].substring(0,g))]);a.push('"'+d[f].substring(g))}b(a.join(""))}});if(0<d.length){for(var l=1;l<d.length;l++){var m=d[l].indexOf(")"),v=null,p=d[l].indexOf("format(",m);0<p&&(v=c(d[l].substring(p+7,d[l].indexOf(")",p))));mxUtils.bind(this,function(a){if(null==this.cachedFonts[a]){this.cachedFonts[a]= +a;e++;var c="application/x-font-ttf";if("svg"==v||/(\.svg)($|\?)/i.test(a))c="image/svg+xml";else if("otf"==v||"embedded-opentype"==v||/(\.otf)($|\?)/i.test(a))c="application/x-font-opentype";else if("woff"==v||/(\.woff)($|\?)/i.test(a))c="application/font-woff";else if("woff2"==v||/(\.woff2)($|\?)/i.test(a))c="application/font-woff2";else if("eot"==v||/(\.eot)($|\?)/i.test(a))c="application/vnd.ms-fontobject";else if("sfnt"==v||/(\.sfnt)($|\?)/i.test(a))c="application/font-sfnt";var b=a;/^https?:\/\//.test(b)&& +!this.editor.isCorsEnabledForUrl(b)&&(b=PROXY_URL+"?url="+encodeURIComponent(a));this.loadUrl(b,mxUtils.bind(this,function(c){this.cachedFonts[a]=c;e--;f()}),mxUtils.bind(this,function(a){e--;f()}),!0,null,"data:"+c+";charset=utf-8;base64,")}})(c(d[l].substring(0,m)),v)}f()}else b(a)};EditorUi.prototype.loadFonts=function(a){null!=this.editor.fontCss&&null==this.editor.resolvedFontCss?this.embedCssFonts(this.editor.fontCss,mxUtils.bind(this,function(c){this.editor.resolvedFontCss=c;a()})):a()};EditorUi.prototype.embedExtFonts= function(a){var c=this.editor.graph.extFonts;if(null!=c&&0<c.length){var b="",d=0;null==this.cachedGoogleFonts&&(this.cachedGoogleFonts={});for(var f=mxUtils.bind(this,function(){0==d&&this.embedCssFonts(b,a)}),g=0;g<c.length;g++){var l=c[g].name,m=c[g].url;0==m.indexOf(Editor.GOOGLE_FONTS)?null==this.cachedGoogleFonts[m]?(d++,this.loadUrl(m,mxUtils.bind(this,function(a){this.cachedGoogleFonts[m]=a;b+=a;d--;f()}),mxUtils.bind(this,function(a){d--;b+="@import url("+m+");";f()}))):b+=this.cachedGoogleFonts[m]: -b+='@font-face {font-family: "'+l+'";src: url("'+m+'");}'}f()}else a()};EditorUi.prototype.exportToCanvas=function(a,b,d,f,n,g,l,m,t,p,y,u,C,v,z){try{g=null!=g?g:!0;l=null!=l?l:!0;u=null!=u?u:this.editor.graph;C=null!=C?C:0;var c=t?null:u.background;c==mxConstants.NONE&&(c=null);null==c&&(c=f);null==c&&0==t&&(c="#ffffff");this.convertImages(u.getSvg(null,null,null,v,null,l,null,null,null,p),mxUtils.bind(this,function(d){try{var e=new Image;e.onload=mxUtils.bind(this,function(){try{var f=function(){mxClient.IS_SF? -window.setTimeout(function(){t.drawImage(e,C/m,C/m);a(k)},0):(t.drawImage(e,C/m,C/m),a(k))},k=document.createElement("canvas"),l=parseInt(d.getAttribute("width")),q=parseInt(d.getAttribute("height"));m=null!=m?m:1;null!=b&&(m=g?Math.min(1,Math.min(3*b/(4*q),b/l)):b/l);l=Math.ceil(m*l)+2*C;q=Math.ceil(m*q)+2*C;k.setAttribute("width",l);k.setAttribute("height",q);var t=k.getContext("2d");null!=c&&(t.beginPath(),t.rect(0,0,l,q),t.fillStyle=c,t.fill());t.scale(m,m);if(z){var y=u.view,p=y.scale;y.scale= -1;var x=btoa(unescape(encodeURIComponent(y.createSvgGrid(y.gridColor))));y.scale=p;var x="data:image/svg+xml;base64,"+x,v=u.gridSize*y.gridSteps*m,A=u.getGraphBounds(),F=y.translate.x*p,I=y.translate.y*p,H=F+(A.x-F)/p,B=I+(A.y-I)/p,D=new Image;D.onload=function(){try{for(var a=-Math.round(v-mxUtils.mod((F-H)*m,v)),c=-Math.round(v-mxUtils.mod((I-B)*m,v));a<l;a+=v)for(var b=c;b<q;b+=v)t.drawImage(D,a/m,b/m);f()}catch(L){null!=n&&n(L)}};D.onerror=function(a){null!=n&&n(a)};D.src=x}else f()}catch(W){null!= -n&&n(W)}});e.onerror=function(a){null!=n&&n(a)};p&&this.editor.graph.addSvgShadow(d);this.editor.graph.mathEnabled&&this.editor.addMathCss(d);var f=mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(d,this.editor.resolvedFontCss),e.src=this.createSvgDataUri(mxUtils.getXml(d))}catch(E){null!=n&&n(E)}});this.embedExtFonts(mxUtils.bind(this,function(a){try{null!=a&&this.editor.addFontCss(d,a),this.loadFonts(f)}catch(N){null!=n&&n(N)}}))}catch(E){null!=n&&n(E)}}), -d,y)}catch(I){null!=n&&n(I)}};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,d=this;a.convert=function(c){if(null!=c){var e="http://"==c.substring(0,7)||"https://"==c.substring(0,8);e&&!navigator.onLine?c=d.svgBrokenImage.src:!e||c.substring(0,a.baseUrl.length)==a.baseUrl||d.crossOriginImages&&d.editor.isCorsEnabledForUrl(c)?"chrome-extension://"==c.substring(0,19)||mxClient.IS_CHROMEAPP||(c=b.apply(this,arguments)):c=PROXY_URL+"?url="+ -encodeURIComponent(c)}return c};return a};EditorUi.prototype.convertImages=function(a,b,d,f){null==f&&(f=this.createImageUrlConverter());var c=0,e=d||{};d=mxUtils.bind(this,function(d,k){for(var g=a.getElementsByTagName(d),l=0;l<g.length;l++)mxUtils.bind(this,function(d){try{if(null!=d){var g=f.convert(d.getAttribute(k));if(null!=g&&"data:"!=g.substring(0,5)){var l=e[g];null==l?(c++,this.convertImageToDataUri(g,function(f){null!=f&&(e[g]=f,d.setAttribute(k,f));c--;0==c&&b(a)})):d.setAttribute(k,l)}else null!= -g&&d.setAttribute(k,g)}}catch(v){}})(g[l])});d("image","xlink:href");d("img","src");0==c&&b(a)};EditorUi.prototype.loadUrl=function(a,b,d,f,l,g,m,p){try{var c=!m&&(f||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a)||/(\.pdf)($|\?)/i.test(a));l=null!=l?l:!0;var e=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var e=a.getText();if(c){if((9==document.documentMode||10==document.documentMode)&& +b+='@font-face {font-family: "'+l+'";src: url("'+m+'");}'}f()}else a()};EditorUi.prototype.exportToCanvas=function(a,b,d,f,l,g,m,x,v,p,y,u,C,t,A){try{g=null!=g?g:!0;m=null!=m?m:!0;u=null!=u?u:this.editor.graph;C=null!=C?C:0;var c=v?null:u.background;c==mxConstants.NONE&&(c=null);null==c&&(c=f);null==c&&0==v&&(c="#ffffff");this.convertImages(u.getSvg(null,null,null,t,null,m,null,null,null,p),mxUtils.bind(this,function(d){try{var e=new Image;e.onload=mxUtils.bind(this,function(){try{var f=function(){mxClient.IS_SF? +window.setTimeout(function(){m.drawImage(e,C/x,C/x);a(k)},0):(m.drawImage(e,C/x,C/x),a(k))},k=document.createElement("canvas"),n=parseInt(d.getAttribute("width")),q=parseInt(d.getAttribute("height"));x=null!=x?x:1;null!=b&&(x=g?Math.min(1,Math.min(3*b/(4*q),b/n)):b/n);n=Math.ceil(x*n)+2*C;q=Math.ceil(x*q)+2*C;k.setAttribute("width",n);k.setAttribute("height",q);var m=k.getContext("2d");null!=c&&(m.beginPath(),m.rect(0,0,n,q),m.fillStyle=c,m.fill());m.scale(x,x);if(A){var v=u.view,y=v.scale;v.scale= +1;var t=btoa(unescape(encodeURIComponent(v.createSvgGrid(v.gridColor))));v.scale=y;var t="data:image/svg+xml;base64,"+t,p=u.gridSize*v.gridSteps*x,z=u.getGraphBounds(),F=v.translate.x*y,G=v.translate.y*y,I=F+(z.x-F)/y,B=G+(z.y-G)/y,E=new Image;E.onload=function(){try{for(var a=-Math.round(p-mxUtils.mod((F-I)*x,p)),c=-Math.round(p-mxUtils.mod((G-B)*x,p));a<n;a+=p)for(var b=c;b<q;b+=p)m.drawImage(E,a/x,b/x);f()}catch(L){null!=l&&l(L)}};E.onerror=function(a){null!=l&&l(a)};E.src=t}else f()}catch(W){null!= +l&&l(W)}});e.onerror=function(a){null!=l&&l(a)};p&&this.editor.graph.addSvgShadow(d);this.editor.graph.mathEnabled&&this.editor.addMathCss(d);var f=mxUtils.bind(this,function(){try{null!=this.editor.resolvedFontCss&&this.editor.addFontCss(d,this.editor.resolvedFontCss),e.src=this.createSvgDataUri(mxUtils.getXml(d))}catch(D){null!=l&&l(D)}});this.embedExtFonts(mxUtils.bind(this,function(a){try{null!=a&&this.editor.addFontCss(d,a),this.loadFonts(f)}catch(N){null!=l&&l(N)}}))}catch(D){null!=l&&l(D)}}), +d,y)}catch(G){null!=l&&l(G)}};EditorUi.prototype.createImageUrlConverter=function(){var a=new mxUrlConverter;a.updateBaseUrl();var b=a.convert,d=this;a.convert=function(c){if(null!=c){var e="http://"==c.substring(0,7)||"https://"==c.substring(0,8);e&&!navigator.onLine?c=d.svgBrokenImage.src:!e||c.substring(0,a.baseUrl.length)==a.baseUrl||d.crossOriginImages&&d.editor.isCorsEnabledForUrl(c)?"chrome-extension://"==c.substring(0,19)||mxClient.IS_CHROMEAPP||(c=b.apply(this,arguments)):c=PROXY_URL+"?url="+ +encodeURIComponent(c)}return c};return a};EditorUi.prototype.convertImages=function(a,b,d,f){null==f&&(f=this.createImageUrlConverter());var c=0,e=d||{};d=mxUtils.bind(this,function(d,g){for(var k=a.getElementsByTagName(d),l=0;l<k.length;l++)mxUtils.bind(this,function(d){try{if(null!=d){var k=f.convert(d.getAttribute(g));if(null!=k&&"data:"!=k.substring(0,5)){var l=e[k];null==l?(c++,this.convertImageToDataUri(k,function(f){null!=f&&(e[k]=f,d.setAttribute(g,f));c--;0==c&&b(a)})):d.setAttribute(g,l)}else null!= +k&&d.setAttribute(g,k)}}catch(t){}})(k[l])});d("image","xlink:href");d("img","src");0==c&&b(a)};EditorUi.prototype.loadUrl=function(a,b,d,f,l,g,m,p){try{var c=!m&&(f||/(\.png)($|\?)/i.test(a)||/(\.jpe?g)($|\?)/i.test(a)||/(\.gif)($|\?)/i.test(a)||/(\.pdf)($|\?)/i.test(a));l=null!=l?l:!0;var e=mxUtils.bind(this,function(){mxUtils.get(a,mxUtils.bind(this,function(a){if(200<=a.getStatus()&&299>=a.getStatus()){if(null!=b){var e=a.getText();if(c){if((9==document.documentMode||10==document.documentMode)&& "undefined"!==typeof window.mxUtilsBinaryToArray){a=mxUtilsBinaryToArray(a.request.responseBody).toArray();for(var e=Array(a.length),f=0;f<a.length;f++)e[f]=String.fromCharCode(a[f]);e=e.join("")}g=null!=g?g:"data:image/png;base64,";e=g+this.base64Encode(e)}b(e)}}else null!=d&&(0==a.getStatus()?d({message:mxResources.get("accessDenied")},a):d({message:mxResources.get("error")+" "+a.getStatus()},a))}),function(a){null!=d&&d({message:mxResources.get("error")+" "+a.getStatus()})},c,this.timeout,function(){l&& null!=d&&d({code:App.ERROR_TIMEOUT,retry:e})},p)});e()}catch(y){null!=d&&d(y)}};EditorUi.prototype.isCorsEnabledForUrl=function(a){return this.editor.isCorsEnabledForUrl(a)};EditorUi.prototype.convertImageToDataUri=function(a,b){try{var c=!0,d=window.setTimeout(mxUtils.bind(this,function(){c=!1;b(this.svgBrokenImage.src)}),this.timeout);if(/(\.svg)$/i.test(a))mxUtils.get(a,mxUtils.bind(this,function(a){window.clearTimeout(d);c&&b(this.createSvgDataUri(a.getText()))}),function(){window.clearTimeout(d); -c&&b(this.svgBrokenImage.src)});else{var e=new Image,f=this;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(d);if(c)try{var a=document.createElement("canvas"),k=a.getContext("2d");a.height=e.height;a.width=e.width;k.drawImage(e,0,0);b(a.toDataURL())}catch(t){b(f.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(d);c&&b(f.svgBrokenImage.src)};e.src=a}}catch(A){b(this.svgBrokenImage.src)}};EditorUi.prototype.importXml=function(a,b,d,f,l){b=null!= +c&&b(this.svgBrokenImage.src)});else{var e=new Image,f=this;this.crossOriginImages&&(e.crossOrigin="anonymous");e.onload=function(){window.clearTimeout(d);if(c)try{var a=document.createElement("canvas"),g=a.getContext("2d");a.height=e.height;a.width=e.width;g.drawImage(e,0,0);b(a.toDataURL())}catch(v){b(f.svgBrokenImage.src)}};e.onerror=function(){window.clearTimeout(d);c&&b(f.svgBrokenImage.src)};e.src=a}}catch(z){b(this.svgBrokenImage.src)}};EditorUi.prototype.importXml=function(a,b,d,f,l){b=null!= b?b:0;d=null!=d?d:0;var c=[];try{var e=this.editor.graph;if(null!=a&&0<a.length){e.model.beginUpdate();try{var k=mxUtils.parseXml(a);a={};var n=this.editor.extractGraphModel(k.documentElement,null!=this.pages);if(null!=n&&"mxfile"==n.nodeName&&null!=this.pages){var m=n.getElementsByTagName("diagram");if(1==m.length)n=Editor.parseDiagramNode(m[0]),null!=this.currentPage&&(a[m[0].getAttribute("id")]=this.currentPage.getId());else if(1<m.length){var k=[],q=0;null!=this.pages&&1==this.pages.length&&this.isDiagramEmpty()&& -(a[m[0].getAttribute("id")]=this.pages[0].getId(),n=Editor.parseDiagramNode(m[0]),f=!1,q=1);for(;q<m.length;q++){var p=m[q].getAttribute("id");m[q].removeAttribute("id");var u=this.updatePageRoot(new DiagramPage(m[q]));a[p]=m[q].getAttribute("id");var v=this.pages.length;null==u.getName()&&u.setName(mxResources.get("pageWithNumber",[v+1]));e.model.execute(new ChangePage(this,u,u,v,!0));k.push(u)}this.updatePageLinks(a,k)}}if(null!=n&&"mxGraphModel"===n.nodeName)for(c=e.importGraphModel(n,b,d,f),q= +(a[m[0].getAttribute("id")]=this.pages[0].getId(),n=Editor.parseDiagramNode(m[0]),f=!1,q=1);for(;q<m.length;q++){var p=m[q].getAttribute("id");m[q].removeAttribute("id");var u=this.updatePageRoot(new DiagramPage(m[q]));a[p]=m[q].getAttribute("id");var t=this.pages.length;null==u.getName()&&u.setName(mxResources.get("pageWithNumber",[t+1]));e.model.execute(new ChangePage(this,u,u,t,!0));k.push(u)}this.updatePageLinks(a,k)}}if(null!=n&&"mxGraphModel"===n.nodeName)for(c=e.importGraphModel(n,b,d,f),q= 0;q<c.length;q++)this.updatePageLinksForCell(a,c[q])}finally{e.model.endUpdate()}}}catch(J){if(l)throw J;this.handleError(J)}return c};EditorUi.prototype.updatePageLinks=function(a,b){for(var c=0;c<b.length;c++)this.updatePageLinksForCell(a,b[c].root)};EditorUi.prototype.updatePageLinksForCell=function(a,b){var c=document.createElement("div"),d=this.editor.graph,e=d.getLinkForCell(b);null!=e&&d.setLinkForCell(b,this.updatePageLink(a,e));if(d.isHtmlLabel(b)){c.innerHTML=d.getLabel(b);for(var f=c.getElementsByTagName("a"), l=!1,m=0;m<f.length;m++)e=f[m].getAttribute("href"),null!=e&&(f[m].setAttribute("href",this.updatePageLink(a,e)),l=!0);l&&d.labelChanged(b,c.innerHTML)}for(m=0;m<d.model.getChildCount(b);m++)this.updatePageLinksForCell(a,d.model.getChildAt(b,m))};EditorUi.prototype.updatePageLink=function(a,b){if("data:page/id,"==b.substring(0,13)){var c=a[b.substring(b.indexOf(",")+1)];b=null!=c?"data:page/id,"+c:null}else if("data:action/json,"==b.substring(0,17))try{var d=JSON.parse(b.substring(17));if(null!=d.actions){for(var e= -0;e<d.actions.length;e++){var f=d.actions[e];null!=f.open&&"data:page/id,"==f.open.substring(0,13)&&(c=a[f.open.substring(f.open.indexOf(",")+1)],null!=c?f.open="data:page/id,"+c:delete f.open)}b="data:action/json,"+JSON.stringify(d)}}catch(A){}return b};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,d,f){f=null!=f?f:a.name;d=null!=d?d:mxUtils.bind(this,function(a){this.handleError(a)}); -var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var c=this.isRemoteVisioFormat(f);try{var e="UNKNOWN-VISIO",k=f.lastIndexOf(".");0<=k&&k<f.length&&(e=f.substring(k+1).toUpperCase());EditorUi.logEvent({category:e+"-MS-IMPORT-FILE",action:"filename_"+f,label:c?"remote":"local"})}catch(H){}if(c)if(null!=VSD_CONVERT_URL){c=new FormData;c.append("file1",a,f);var l=new XMLHttpRequest;l.open("POST",VSD_CONVERT_URL);l.responseType="blob";this.addRemoteServiceSecurityCheck(l); +0;e<d.actions.length;e++){var f=d.actions[e];null!=f.open&&"data:page/id,"==f.open.substring(0,13)&&(c=a[f.open.substring(f.open.indexOf(",")+1)],null!=c?f.open="data:page/id,"+c:delete f.open)}b="data:action/json,"+JSON.stringify(d)}}catch(z){}return b};EditorUi.prototype.isRemoteVisioFormat=function(a){return/(\.v(sd|dx))($|\?)/i.test(a)||/(\.vs(s|x))($|\?)/i.test(a)};EditorUi.prototype.importVisio=function(a,b,d,f){f=null!=f?f:a.name;d=null!=d?d:mxUtils.bind(this,function(a){this.handleError(a)}); +var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportVisio){var c=this.isRemoteVisioFormat(f);try{var e="UNKNOWN-VISIO",k=f.lastIndexOf(".");0<=k&&k<f.length&&(e=f.substring(k+1).toUpperCase());EditorUi.logEvent({category:e+"-MS-IMPORT-FILE",action:"filename_"+f,label:c?"remote":"local"})}catch(I){}if(c)if(null!=VSD_CONVERT_URL){c=new FormData;c.append("file1",a,f);var l=new XMLHttpRequest;l.open("POST",VSD_CONVERT_URL);l.responseType="blob";this.addRemoteServiceSecurityCheck(l); l.onreadystatechange=mxUtils.bind(this,function(){if(4==l.readyState)if(200<=l.status&&299>=l.status)try{var a=l.response;if("text/xml"==a.type){var c=new FileReader;c.onload=mxUtils.bind(this,function(a){try{b(a.target.result)}catch(C){d({message:mxResources.get("errorLoadingFile")})}});c.readAsText(a)}else this.doImportVisio(a,b,d,f)}catch(F){d(F)}else d({})});l.send(c)}else d({message:"conf"==this.getServiceName()?mxResources.get("vsdNoConfig"):mxResources.get("serviceUnavailableOrBlocked")}); -else try{this.doImportVisio(a,b,d,f)}catch(H){d(H)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?c():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",c))};EditorUi.prototype.importGraphML=function(a,b,d){d=null!=d?d:mxUtils.bind(this,function(a){this.handleError(a)});var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a, +else try{this.doImportVisio(a,b,d,f)}catch(I){d(I)}}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportVisio||this.loadingExtensions||this.isOffline(!0)?c():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",c))};EditorUi.prototype.importGraphML=function(a,b,d){d=null!=d?d:mxUtils.bind(this,function(a){this.handleError(a)});var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if(this.doImportGraphML)try{this.doImportGraphML(a, b,d)}catch(n){d(n)}else this.spinner.stop(),this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});this.doImportGraphML||this.loadingExtensions||this.isOffline(!0)?c():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",c))};EditorUi.prototype.exportVisio=function(){var a=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof VsdxExport)try{(new VsdxExport(this)).exportCurrentDiagrams()||this.handleError({message:mxResources.get("unknownError")})}catch(e){this.handleError(e)}else this.spinner.stop(), this.handleError({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof VsdxExport||this.loadingExtensions||this.isOffline(!0)?a():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",a))};EditorUi.prototype.convertLucidChart=function(a,b,d){var c=mxUtils.bind(this,function(){this.loadingExtensions=!1;if("undefined"!==typeof window.LucidImporter){try{EditorUi.logEvent({category:"LUCIDCHART-IMPORT-FILE",action:"size_"+a.length}),EditorUi.debug("convertLucidChart",a)}catch(n){}try{b(LucidImporter.importState(JSON.parse(a)))}catch(n){null!= window.console&&console.error(n),d(n)}}else d({message:mxResources.get("serviceUnavailableOrBlocked")})});"undefined"!==typeof window.LucidImporter||this.loadingExtensions||this.isOffline(!0)?window.setTimeout(c,0):(this.loadingExtensions=!0,"1"==urlParams.dev?mxscript("js/diagramly/Extensions.js",c):mxscript("js/extensions.min.js",c))};EditorUi.prototype.generatePlantUmlImage=function(a,b,d,f){function c(a,c,b){c1=a>>2;c2=(a&3)<<4|c>>4;c3=(c&15)<<2|b>>6;c4=b&63;r="";r+=e(c1&63);r+=e(c2&63);r+=e(c3& 63);return r+=e(c4&63)}function e(a){if(10>a)return String.fromCharCode(48+a);a-=10;if(26>a)return String.fromCharCode(65+a);a-=26;if(26>a)return String.fromCharCode(97+a);a-=26;return 0==a?"-":1==a?"_":"?"}var k=new XMLHttpRequest;k.open("GET",("txt"==b?PLANT_URL+"/txt/":"png"==b?PLANT_URL+"/png/":PLANT_URL+"/svg/")+function(a){r="";for(i=0;i<a.length;i+=3)r=i+2==a.length?r+c(a.charCodeAt(i),a.charCodeAt(i+1),0):i+1==a.length?r+c(a.charCodeAt(i),0,0):r+c(a.charCodeAt(i),a.charCodeAt(i+1),a.charCodeAt(i+ -2));return r}(pako.deflateRaw(a,{to:"string"})),!0);"txt"!=b&&(k.responseType="blob");k.onload=function(a){if(200<=this.status&&300>this.status)if("txt"==b)d(this.response);else{var c=new FileReader;c.readAsDataURL(this.response);c.onloadend=function(a){var b=new Image;b.onload=function(){try{var a=b.width,e=b.height;if(0==a&&0==e){var k=c.result,g=k.indexOf(","),l=decodeURIComponent(escape(atob(k.substring(g+1)))),n=mxUtils.parseXml(l).getElementsByTagName("svg");0<n.length&&(a=parseFloat(n[0].getAttribute("width")), +2));return r}(pako.deflateRaw(a,{to:"string"})),!0);"txt"!=b&&(k.responseType="blob");k.onload=function(a){if(200<=this.status&&300>this.status)if("txt"==b)d(this.response);else{var c=new FileReader;c.readAsDataURL(this.response);c.onloadend=function(a){var b=new Image;b.onload=function(){try{var a=b.width,e=b.height;if(0==a&&0==e){var g=c.result,k=g.indexOf(","),l=decodeURIComponent(escape(atob(g.substring(k+1)))),n=mxUtils.parseXml(l).getElementsByTagName("svg");0<n.length&&(a=parseFloat(n[0].getAttribute("width")), e=parseFloat(n[0].getAttribute("height")))}d(c.result,a,e)}catch(P){f(P)}};b.src=c.result};c.onerror=function(a){f(a)}}else f(a)};k.onerror=function(a){f(a)};k.send()};EditorUi.prototype.insertAsPreText=function(a,b,d){var c=this.editor.graph,e=null;c.getModel().beginUpdate();try{e=c.insertVertex(null,null,"<pre>"+a+"</pre>",b,d,1,1,"text;html=1;align=left;verticalAlign=top;"),c.updateCellSize(e,!0)}finally{c.getModel().endUpdate()}return e};EditorUi.prototype.insertTextAt=function(a,b,d,f,l,g,m){g= null!=g?g:!0;m=null!=m?m:!0;if(null!=a)if(Graph.fileSupport&&!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a))this.parseFile(new Blob([a.replace(/\s+/g," ")],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&200<=a.status&&299>=a.status&&this.editor.graph.setSelectionCells(this.insertTextAt(a.responseText,b,d,!0))}));else if("data:"==a.substring(0,5)||!this.isOffline()&&(l||/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(a))){var c=this.editor.graph; if("data:application/pdf;base64,"==a.substring(0,28)){var e=Editor.extractGraphModelFromPdf(a);if(null!=e&&0<e.length)return this.importXml(e,b,d,g,!0)}if("data:image/png;base64,"==a.substring(0,22)&&(e=this.extractGraphModelFromPng(a),null!=e&&0<e.length))return this.importXml(e,b,d,g,!0);if("data:image/svg+xml;"==a.substring(0,19))try{e=null;"data:image/svg+xml;base64,"==a.substring(0,26)?(e=a.substring(a.indexOf(",")+1),e=window.atob&&!mxClient.IS_SF?atob(e):Base64.decode(e,!0)):e=decodeURIComponent(a.substring(a.indexOf(",")+ 1));var k=this.importXml(e,b,d,g,!0);if(0<k.length)return k}catch(y){}this.loadImage(a,mxUtils.bind(this,function(e){if("data:"==a.substring(0,5))this.resizeImage(e,a,mxUtils.bind(this,function(a,e,f){c.setSelectionCell(c.insertVertex(null,null,"",c.snap(b),c.snap(d),e,f,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+this.convertDataUri(a)+";"))}),m,this.maxImageSize);else{var f=Math.min(1,Math.min(this.maxImageSize/e.width, -this.maxImageSize/e.height)),k=Math.round(e.width*f);e=Math.round(e.height*f);c.setSelectionCell(c.insertVertex(null,null,"",c.snap(b),c.snap(d),k,e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var e=null;c.getModel().beginUpdate();try{e=c.insertVertex(c.getDefaultParent(),null,a,c.snap(b),c.snap(d),1,1,"text;"+(f?"html=1;":"")),c.updateCellSize(e),c.fireEvent(new mxEventObject("textInserted", +this.maxImageSize/e.height)),g=Math.round(e.width*f);e=Math.round(e.height*f);c.setSelectionCell(c.insertVertex(null,null,"",c.snap(b),c.snap(d),g,e,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+a+";"))}}),mxUtils.bind(this,function(){var e=null;c.getModel().beginUpdate();try{e=c.insertVertex(c.getDefaultParent(),null,a,c.snap(b),c.snap(d),1,1,"text;"+(f?"html=1;":"")),c.updateCellSize(e),c.fireEvent(new mxEventObject("textInserted", "cells",[e]))}finally{c.getModel().endUpdate()}c.setSelectionCell(e)}))}else{a=Graph.zapGremlins(mxUtils.trim(a));if(this.isCompatibleString(a))return this.importXml(a,b,d,g);if(0<a.length)if(this.isLucidChartData(a))this.convertLucidChart(a,mxUtils.bind(this,function(a){this.editor.graph.setSelectionCells(this.importXml(a,b,d,g))}),mxUtils.bind(this,function(a){this.handleError(a)}));else{c=this.editor.graph;l=null;c.getModel().beginUpdate();try{l=c.insertVertex(c.getDefaultParent(),null,"",c.snap(b), c.snap(d),1,1,"text;"+(f?"html=1;":"")),c.fireEvent(new mxEventObject("textInserted","cells",[l])),"<"==a.charAt(0)&&a.indexOf(">")==a.length-1&&(a=mxUtils.htmlEntities(a)),a.length>this.maxTextBytes&&(a=a.substring(0,this.maxTextBytes)+"..."),l.value=a,c.updateCellSize(l),/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“â€â€˜â€™]))/i.test(l.value)&&c.setLinkForCell(l, l.value),l.geometry.width+=c.gridSize,l.geometry.height+=c.gridSize}finally{c.getModel().endUpdate()}return[l]}}return[]};EditorUi.prototype.formatFileSize=function(a){var c=-1;do a/=1024,c++;while(1024<a);return Math.max(a,.1).toFixed(1)+" kB; MB; GB; TB;PB;EB;ZB;YB".split(";")[c]};EditorUi.prototype.convertDataUri=function(a){if("data:"==a.substring(0,5)){var b=a.indexOf(";");0<b&&(a=a.substring(0,b)+a.substring(a.indexOf(",",b+1)))}return a};EditorUi.prototype.isRemoteFileFormat=function(a,b){return/(\"contentType\":\s*\"application\/gliffy\+json\")/.test(a)}; EditorUi.prototype.isLucidChartData=function(a){return null!=a&&('{"state":"{\\"Properties\\":'==a.substring(0,26)||'{"Properties":'==a.substring(0,14))};EditorUi.prototype.importLocalFile=function(a,b){if(a&&Graph.fileSupport){if(null==this.importFileInputElt){var c=document.createElement("input");c.setAttribute("type","file");mxEvent.addListener(c,"change",mxUtils.bind(this,function(){null!=c.files&&(this.importFiles(c.files,null,null,this.maxImageSize),c.type="",c.type="file",c.value="")}));c.style.display= "none";document.body.appendChild(c);this.importFileInputElt=c}this.importFileInputElt.click()}else{window.openNew=!1;window.openKey="import";if(!b){var d=Editor.useLocalStorage;Editor.useLocalStorage=!a}window.openFile=new OpenFile(mxUtils.bind(this,function(a){this.hideDialog(a)}));window.openFile.setConsumer(mxUtils.bind(this,function(a,b){if(null!=b&&Graph.fileSupport&&/(\.v(dx|sdx?))($|\?)/i.test(b)){var c=new Blob([a],{type:"application/octet-stream"});this.importVisio(c,mxUtils.bind(this,function(a){this.importXml(a, 0,0,!0)}),null,b)}else this.editor.graph.setSelectionCells(this.importXml(a,0,0,!0))}));this.showDialog((new OpenDialog(this)).container,360,220,!0,!0,function(){window.openFile=null});if(!b){var e=this.dialog,f=e.close;this.dialog.close=mxUtils.bind(this,function(a){Editor.useLocalStorage=d;f.apply(e,arguments);a&&null==this.getCurrentFile()&&"1"!=urlParams.embed&&this.showSplash()})}}};EditorUi.prototype.importZipFile=function(a,b,d){var c=this,e=mxUtils.bind(this,function(){this.loadingExtensions= -!1;"undefined"!==typeof JSZip?JSZip.loadAsync(a).then(function(e){if(0==Object.keys(e.files).length)d();else{var f=0,k,g=!1;e.forEach(function(a,c){var e=c.name.toLowerCase();"diagram/diagram.xml"==e?(g=!0,c.async("string").then(function(a){0==a.indexOf("<mxfile ")?b(a):d()})):0==e.indexOf("versions/")&&(e=parseInt(e.substr(9)),e>f&&(f=e,k=c))});0<f?k.async("string").then(function(e){!c.isOffline()&&(new XMLHttpRequest).upload&&c.isRemoteFileFormat(e,a.name)?c.parseFile(new Blob([e],{type:"application/octet-stream"}), -mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?b(a.responseText):d())}),a.name):d()}):g||d()}},function(a){d(a)}):d()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.importFile=function(a,b,d,f,l,g,m,p,t,u,y){u=null!=u?u:!0;var c=!1,e=null,k=mxUtils.bind(this,function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this, -a,m)):b=this.importXml(a,d,f,u);null!=p&&p(b)});"image"==b.substring(0,5)?(t=!1,"image/png"==b.substring(0,9)&&(b=y?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(e=this.importXml(b,d,f,u),t=!0)),t||(b=this.editor.graph,y=a.indexOf(";"),0<y&&(a=a.substring(0,y)+a.substring(a.indexOf(",",y+1))),u&&b.isGridEnabled()&&(d=b.snap(d),f=b.snap(f)),e=[b.insertVertex(null,null,"",d,f,l,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ -a+";")])):/(\.*<graphml )/.test(a)?(c=!0,this.importGraphML(a,k)):null!=t&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?(c=!0,this.importVisio(t,k)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,m)?(c=!0,this.parseFile(null!=t?t:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?k(a.responseText):null!=p&&p(null))}),m)):0==a.indexOf("PK")&&null!=t?(c=!0,this.importZipFile(t, +!1;"undefined"!==typeof JSZip?JSZip.loadAsync(a).then(function(e){if(0==Object.keys(e.files).length)d();else{var f=0,g,k=!1;e.forEach(function(a,c){var e=c.name.toLowerCase();"diagram/diagram.xml"==e?(k=!0,c.async("string").then(function(a){0==a.indexOf("<mxfile ")?b(a):d()})):0==e.indexOf("versions/")&&(e=parseInt(e.substr(9)),e>f&&(f=e,g=c))});0<f?g.async("string").then(function(e){!c.isOffline()&&(new XMLHttpRequest).upload&&c.isRemoteFileFormat(e,a.name)?c.parseFile(new Blob([e],{type:"application/octet-stream"}), +mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?b(a.responseText):d())}),a.name):d()}):k||d()}},function(a){d(a)}):d()});"undefined"!==typeof JSZip||this.loadingExtensions||this.isOffline(!0)?e():(this.loadingExtensions=!0,mxscript("js/extensions.min.js",e))};EditorUi.prototype.importFile=function(a,b,d,f,l,g,m,p,v,u,y){u=null!=u?u:!0;var c=!1,e=null,k=mxUtils.bind(this,function(a){var b=null;null!=a&&"<mxlibrary"==a.substring(0,10)?this.loadLibrary(new LocalLibrary(this, +a,m)):b=this.importXml(a,d,f,u);null!=p&&p(b)});"image"==b.substring(0,5)?(v=!1,"image/png"==b.substring(0,9)&&(b=y?null:this.extractGraphModelFromPng(a),null!=b&&0<b.length&&(e=this.importXml(b,d,f,u),v=!0)),v||(b=this.editor.graph,y=a.indexOf(";"),0<y&&(a=a.substring(0,y)+a.substring(a.indexOf(",",y+1))),u&&b.isGridEnabled()&&(d=b.snap(d),f=b.snap(f)),e=[b.insertVertex(null,null,"",d,f,l,g,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +a+";")])):/(\.*<graphml )/.test(a)?(c=!0,this.importGraphML(a,k)):null!=v&&null!=m&&(/(\.v(dx|sdx?))($|\?)/i.test(m)||/(\.vs(x|sx?))($|\?)/i.test(m))?(c=!0,this.importVisio(v,k)):!this.isOffline()&&(new XMLHttpRequest).upload&&this.isRemoteFileFormat(a,m)?(c=!0,this.parseFile(null!=v?v:new Blob([a],{type:"application/octet-stream"}),mxUtils.bind(this,function(a){4==a.readyState&&(200<=a.status&&299>=a.status?k(a.responseText):null!=p&&p(null))}),m)):0==a.indexOf("PK")&&null!=v?(c=!0,this.importZipFile(v, k,mxUtils.bind(this,function(){e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,u);p(e)}))):/(\.v(sd|dx))($|\?)/i.test(m)||/(\.vs(s|x))($|\?)/i.test(m)||(e=this.insertTextAt(this.validateFileData(a),d,f,!0,null,u));c||null==p||p(e);return e};EditorUi.prototype.base64Encode=function(a){for(var b="",c=0,d=a.length,f,g,l;c<d;){f=a.charCodeAt(c++)&255;if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f& 3)<<4);b+="==";break}g=a.charCodeAt(c++);if(c==d){b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f&3)<<4|(g&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2);b+="=";break}l=a.charCodeAt(c++);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(f>>2);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((f& -3)<<4|(g&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2|(l&192)>>6);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l&63)}return b};EditorUi.prototype.importFiles=function(a,b,d,f,l,g,m,p,t,u,y,z){b=null!=b?b:0;d=null!=d?d:0;f=null!=f?f:this.maxImageSize;u=null!=u?u:this.maxImageBytes;var c=null!=b&&null!=d,e=!0,k=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var n=y||this.resampleThreshold,q=0;q<a.length;q++)if("image/"==a[q].type.substring(0, -6)&&a[q].size>n){k=!0;break}var x=mxUtils.bind(this,function(){var k=this.editor.graph,n=k.gridSize;l=null!=l?l:mxUtils.bind(this,function(a,b,d,e,f,k,g,l,n){try{return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,g)),null):this.importFile(a,b,d,e,f,k,g,l,n,c,z)}catch(W){return this.handleError(W),null}});g=null!=g?g:mxUtils.bind(this,function(a){k.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q= -a.length,t=q,v=[],x=mxUtils.bind(this,function(a,b){v[a]=b;if(0==--t){this.spinner.stop();if(null!=p)p(v);else{var c=[];k.getModel().beginUpdate();try{for(var d=0;d<v.length;d++){var e=v[d]();null!=e&&(c=c.concat(e))}}finally{k.getModel().endUpdate()}}g(c)}}),A=0;A<q;A++)mxUtils.bind(this,function(c){var g=a[c];if(null!=g){var q=new FileReader;q.onload=mxUtils.bind(this,function(a){if(null==m||m(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var q=a.target.result,t=q.indexOf(","), -p=decodeURIComponent(escape(atob(q.substring(t+1)))),v=mxUtils.parseXml(p),p=v.getElementsByTagName("svg");if(0<p.length){var p=p[0],A=z?null:p.getAttribute("content");null!=A&&"<"!=A.charAt(0)&&"%"!=A.charAt(0)&&(A=unescape(window.atob?atob(A):Base64.decode(A,!0)));null!=A&&"%"==A.charAt(0)&&(A=decodeURIComponent(A));null==A||"<mxfile "!==A.substring(0,8)&&"<mxGraphModel "!==A.substring(0,14)?x(c,mxUtils.bind(this,function(){try{if(q.substring(0,t+1),null!=v){var a=v.getElementsByTagName("svg"); -if(0<a.length){var e=a[0],m=e.getAttribute("width"),p=e.getAttribute("height"),m=null!=m&&"%"!=m.charAt(m.length-1)?parseFloat(m):NaN,p=null!=p&&"%"!=p.charAt(p.length-1)?parseFloat(p):NaN,y=e.getAttribute("viewBox");if(null==y||0==y.length)e.setAttribute("viewBox","0 0 "+m+" "+p);else if(isNaN(m)||isNaN(p)){var x=y.split(" ");3<x.length&&(m=parseFloat(x[2]),p=parseFloat(x[3]))}q=this.createSvgDataUri(mxUtils.getXml(e));var u=Math.min(1,Math.min(f/Math.max(1,m)),f/Math.max(1,p)),A=l(q,g.type,b+c* -n,d+c*n,Math.max(1,Math.round(m*u)),Math.max(1,Math.round(p*u)),g.name);if(isNaN(m)||isNaN(p)){var C=new Image;C.onload=mxUtils.bind(this,function(){m=Math.max(1,C.width);p=Math.max(1,C.height);A[0].geometry.width=m;A[0].geometry.height=p;e.setAttribute("viewBox","0 0 "+m+" "+p);q=this.createSvgDataUri(mxUtils.getXml(e));var a=q.indexOf(";");0<a&&(q=q.substring(0,a)+q.substring(q.indexOf(",",a+1)));k.setCellStyles("image",q,[A[0]])});C.src=this.createSvgDataUri(mxUtils.getXml(e))}return A}}}catch(ea){}return null})): -x(c,mxUtils.bind(this,function(){return l(A,"text/xml",b+c*n,d+c*n,0,0,g.name)}))}else x(c,mxUtils.bind(this,function(){return null}))}else{p=!1;if("image/png"==g.type){var C=z?null:this.extractGraphModelFromPng(a.target.result);if(null!=C&&0<C.length){var E=new Image;E.src=a.target.result;x(c,mxUtils.bind(this,function(){return l(C,"text/xml",b+c*n,d+c*n,E.width,E.height,g.name)}));p=!0}}p||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"), -mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,a.target.result,mxUtils.bind(this,function(k,m,q){x(c,mxUtils.bind(this,function(){if(null!=k&&k.length<u){var t=e&&this.isResampleImage(a.target.result,y)?Math.min(1,Math.min(f/m,f/q)):1;return l(k,g.type,b+c*n,d+c*n,Math.round(m*t),Math.round(q*t),g.name)}this.handleError({message:mxResources.get("imageTooBig")}); -return null}))}),e,f,y)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else q=a.target.result,l(q,g.type,b+c*n,d+c*n,240,160,g.name,function(a){x(c,function(){return a})},g)});/(\.v(dx|sdx?))($|\?)/i.test(g.name)||/(\.vs(x|sx?))($|\?)/i.test(g.name)?l(null,g.type,b+c*n,d+c*n,240,160,g.name,function(a){x(c,function(){return a})},g):"image"==g.type.substring(0,5)||"application/pdf"==g.type?q.readAsDataURL(g):q.readAsText(g)}})(A)});if(k){k=[]; -for(q=0;q<a.length;q++)k.push(a[q]);a=k;this.confirmImageResize(function(a){e=a;x()},t)}else x()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,e=function(d,e){if(d||b)mxSettings.setResizeImages(d?e:null),mxSettings.save();c();a(e)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"), +3)<<4|(g&240)>>4);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((g&15)<<2|(l&192)>>6);b+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(l&63)}return b};EditorUi.prototype.importFiles=function(a,b,d,f,l,g,m,p,v,u,y,A){b=null!=b?b:0;d=null!=d?d:0;f=null!=f?f:this.maxImageSize;u=null!=u?u:this.maxImageBytes;var c=null!=b&&null!=d,e=!0,k=!1;if(!mxClient.IS_CHROMEAPP&&null!=a)for(var n=y||this.resampleThreshold,q=0;q<a.length;q++)if("image/"==a[q].type.substring(0, +6)&&a[q].size>n){k=!0;break}var x=mxUtils.bind(this,function(){var k=this.editor.graph,n=k.gridSize;l=null!=l?l:mxUtils.bind(this,function(a,b,d,e,f,g,k,l,n){try{return null!=a&&"<mxlibrary"==a.substring(0,10)?(this.spinner.stop(),this.loadLibrary(new LocalLibrary(this,a,k)),null):this.importFile(a,b,d,e,f,g,k,l,n,c,A)}catch(W){return this.handleError(W),null}});g=null!=g?g:mxUtils.bind(this,function(a){k.setSelectionCells(a)});if(this.spinner.spin(document.body,mxResources.get("loading")))for(var q= +a.length,v=q,t=[],x=mxUtils.bind(this,function(a,b){t[a]=b;if(0==--v){this.spinner.stop();if(null!=p)p(t);else{var c=[];k.getModel().beginUpdate();try{for(var d=0;d<t.length;d++){var e=t[d]();null!=e&&(c=c.concat(e))}}finally{k.getModel().endUpdate()}}g(c)}}),z=0;z<q;z++)mxUtils.bind(this,function(c){var g=a[c];if(null!=g){var q=new FileReader;q.onload=mxUtils.bind(this,function(a){if(null==m||m(g))if("image/"==g.type.substring(0,6))if("image/svg"==g.type.substring(0,9)){var q=a.target.result,v=q.indexOf(","), +p=decodeURIComponent(escape(atob(q.substring(v+1)))),t=mxUtils.parseXml(p),p=t.getElementsByTagName("svg");if(0<p.length){var p=p[0],z=A?null:p.getAttribute("content");null!=z&&"<"!=z.charAt(0)&&"%"!=z.charAt(0)&&(z=unescape(window.atob?atob(z):Base64.decode(z,!0)));null!=z&&"%"==z.charAt(0)&&(z=decodeURIComponent(z));null==z||"<mxfile "!==z.substring(0,8)&&"<mxGraphModel "!==z.substring(0,14)?x(c,mxUtils.bind(this,function(){try{if(q.substring(0,v+1),null!=t){var a=t.getElementsByTagName("svg"); +if(0<a.length){var e=a[0],m=e.getAttribute("width"),p=e.getAttribute("height"),m=null!=m&&"%"!=m.charAt(m.length-1)?parseFloat(m):NaN,p=null!=p&&"%"!=p.charAt(p.length-1)?parseFloat(p):NaN,y=e.getAttribute("viewBox");if(null==y||0==y.length)e.setAttribute("viewBox","0 0 "+m+" "+p);else if(isNaN(m)||isNaN(p)){var x=y.split(" ");3<x.length&&(m=parseFloat(x[2]),p=parseFloat(x[3]))}q=this.createSvgDataUri(mxUtils.getXml(e));var z=Math.min(1,Math.min(f/Math.max(1,m)),f/Math.max(1,p)),u=l(q,g.type,b+c* +n,d+c*n,Math.max(1,Math.round(m*z)),Math.max(1,Math.round(p*z)),g.name);if(isNaN(m)||isNaN(p)){var C=new Image;C.onload=mxUtils.bind(this,function(){m=Math.max(1,C.width);p=Math.max(1,C.height);u[0].geometry.width=m;u[0].geometry.height=p;e.setAttribute("viewBox","0 0 "+m+" "+p);q=this.createSvgDataUri(mxUtils.getXml(e));var a=q.indexOf(";");0<a&&(q=q.substring(0,a)+q.substring(q.indexOf(",",a+1)));k.setCellStyles("image",q,[u[0]])});C.src=this.createSvgDataUri(mxUtils.getXml(e))}return u}}}catch(ea){}return null})): +x(c,mxUtils.bind(this,function(){return l(z,"text/xml",b+c*n,d+c*n,0,0,g.name)}))}else x(c,mxUtils.bind(this,function(){return null}))}else{p=!1;if("image/png"==g.type){var C=A?null:this.extractGraphModelFromPng(a.target.result);if(null!=C&&0<C.length){var D=new Image;D.src=a.target.result;x(c,mxUtils.bind(this,function(){return l(C,"text/xml",b+c*n,d+c*n,D.width,D.height,g.name)}));p=!0}}p||(mxClient.IS_CHROMEAPP?(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("dragAndDropNotSupported"), +mxResources.get("cancel"),mxUtils.bind(this,function(){}),null,mxResources.get("ok"),mxUtils.bind(this,function(){this.actions.get("import").funct()}))):this.loadImage(a.target.result,mxUtils.bind(this,function(k){this.resizeImage(k,a.target.result,mxUtils.bind(this,function(k,m,q){x(c,mxUtils.bind(this,function(){if(null!=k&&k.length<u){var v=e&&this.isResampleImage(a.target.result,y)?Math.min(1,Math.min(f/m,f/q)):1;return l(k,g.type,b+c*n,d+c*n,Math.round(m*v),Math.round(q*v),g.name)}this.handleError({message:mxResources.get("imageTooBig")}); +return null}))}),e,f,y)}),mxUtils.bind(this,function(){this.handleError({message:mxResources.get("invalidOrMissingFile")})})))}else q=a.target.result,l(q,g.type,b+c*n,d+c*n,240,160,g.name,function(a){x(c,function(){return a})},g)});/(\.v(dx|sdx?))($|\?)/i.test(g.name)||/(\.vs(x|sx?))($|\?)/i.test(g.name)?l(null,g.type,b+c*n,d+c*n,240,160,g.name,function(a){x(c,function(){return a})},g):"image"==g.type.substring(0,5)||"application/pdf"==g.type?q.readAsDataURL(g):q.readAsText(g)}})(z)});if(k){k=[]; +for(q=0;q<a.length;q++)k.push(a[q]);a=k;this.confirmImageResize(function(a){e=a;x()},v)}else x()};EditorUi.prototype.confirmImageResize=function(a,b){b=null!=b?b:!1;var c=null!=this.spinner&&null!=this.spinner.pause?this.spinner.pause():function(){},d=isLocalStorage||mxClient.IS_CHROMEAPP?mxSettings.getResizeImages():null,e=function(d,e){if(d||b)mxSettings.setResizeImages(d?e:null),mxSettings.save();c();a(e)};null==d||b?this.showDialog((new ConfirmDialog(this,mxResources.get("resizeLargeImages"), function(a){e(a,!0)},function(a){e(a,!1)},mxResources.get("resize"),mxResources.get("actualSize"),'<img style="margin-top:8px;" src="'+Editor.loResImage+'"/>','<img style="margin-top:8px;" src="'+Editor.hiResImage+'"/>',isLocalStorage||mxClient.IS_CHROMEAPP)).container,340,isLocalStorage||mxClient.IS_CHROMEAPP?220:200,!0,!0):e(!1,d)};EditorUi.prototype.parseFile=function(a,b,d){d=null!=d?d:a.name;var c=new FormData;c.append("format","xml");c.append("upfile",a,d);var e=new XMLHttpRequest;e.open("POST", -OPEN_URL);e.onreadystatechange=function(){b(e)};e.send(c);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+a.size})}catch(g){}};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,d,f,l,g){l=null!=l?l:this.maxImageSize;var c=Math.max(1,a.width),e=Math.max(1,a.height);if(f&&this.isResampleImage(b,g))try{var k=Math.max(c/l,e/l);if(1<k){var n=Math.round(c/k),m=Math.round(e/k),q=document.createElement("canvas"); -q.width=n;q.height=m;q.getContext("2d").drawImage(a,0,0,n,m);var p=q.toDataURL();if(p.length<b.length){var v=document.createElement("canvas");v.width=n;v.height=m;var u=v.toDataURL();p!==u&&(b=p,c=n,e=m)}}}catch(M){}d(b,c,e)};EditorUi.prototype.crcTable=[];for(var d=0;256>d;d++)for(var l=d,m=0;8>m;m++)l=1==(l&1)?3988292384^l>>>1:l>>>1,EditorUi.prototype.crcTable[d]=l;EditorUi.prototype.updateCRC=function(a,b,d,f){for(var c=0;c<f;c++)a=EditorUi.prototype.crcTable[(a^b.charCodeAt(d+c))&255]^a>>>8;return a}; -EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,d,f,l){function c(a,b){var c=n;n+=b;return a.substring(c,n)}function e(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function k(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+ -1);a=window.atob?atob(a):Base64.decode(a,!0);var n=0;if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=l&&l();else if(c(a,4),"IHDR"!=c(a,4))null!=l&&l();else{c(a,17);l=a.substring(0,n);do{var m=e(a);if("IDAT"==c(a,4)){l=a.substring(0,n-8);"pHYs"==b&&"dpi"==d?(d=Math.round(f/.0254),d=k(d)+k(d)+String.fromCharCode(1)):d=d+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+f;f=4294967295;f=this.updateCRC(f,b,0,4);f=this.updateCRC(f,d,0,d.length);l+=k(d.length)+ -b+d+k(f^4294967295);l+=a.substring(n-8,a.length);break}l+=a.substring(n-8,n-4+m);c(a,m);c(a,4)}while(m);return"data:image/png;base64,"+(window.btoa?btoa(l):Base64.encode(l,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){return Editor.extractGraphModelFromPng(a)};EditorUi.prototype.loadImage=function(a,b,d){try{var c=new Image;c.onload=function(){b(c)};null!=d&&(c.onerror=d);c.src=a}catch(n){if(null!=d)d(n);else throw n;}};var p=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval= -mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph,d=b.cellEditor.startEditing;b.cellEditor.startEditing=function(c,e){var f=this.graph.getAttributeForCell(c,"plantUmlData");if(null!=f){var k=JSON.parse(f),f=new TextareaDialog(a,mxResources.get("plantUml")+":",k.data,function(d){null!=d&&a.spinner.spin(document.body,mxResources.get("inserting"))&&a.generatePlantUmlImage(d,k.format, -function(e,f,g){a.spinner.stop();b.getModel().beginUpdate();try{if("txt"==k.format)b.labelChanged(c,"<pre>"+e+"</pre>"),b.updateCellSize(c,!0);else{b.setCellStyles("image",a.convertDataUri(e),[c]);var l=b.model.getGeometry(c);null!=l&&(l=l.clone(),l.width=f,l.height=g,b.cellsResized([c],[l],!1))}b.setAttributeForCell(c,"plantUmlData",JSON.stringify({data:d,format:k.format}))}finally{b.getModel().endUpdate()}},function(b){a.handleError(b)})},null,null,400,220);a.showDialog(f.container,420,300,!0,!0); +OPEN_URL);e.onreadystatechange=function(){b(e)};e.send(c);try{EditorUi.logEvent({category:"GLIFFY-IMPORT-FILE",action:"size_"+a.size})}catch(g){}};EditorUi.prototype.isResampleImage=function(a,b){b=null!=b?b:this.resampleThreshold;return a.length>b};EditorUi.prototype.resizeImage=function(a,b,d,f,l,g){l=null!=l?l:this.maxImageSize;var c=Math.max(1,a.width),e=Math.max(1,a.height);if(f&&this.isResampleImage(b,g))try{var k=Math.max(c/l,e/l);if(1<k){var m=Math.round(c/k),n=Math.round(e/k),q=document.createElement("canvas"); +q.width=m;q.height=n;q.getContext("2d").drawImage(a,0,0,m,n);var p=q.toDataURL();if(p.length<b.length){var t=document.createElement("canvas");t.width=m;t.height=n;var u=t.toDataURL();p!==u&&(b=p,c=m,e=n)}}}catch(M){}d(b,c,e)};EditorUi.prototype.crcTable=[];for(var d=0;256>d;d++)for(var l=d,m=0;8>m;m++)l=1==(l&1)?3988292384^l>>>1:l>>>1,EditorUi.prototype.crcTable[d]=l;EditorUi.prototype.updateCRC=function(a,b,d,f){for(var c=0;c<f;c++)a=EditorUi.prototype.crcTable[(a^b.charCodeAt(d+c))&255]^a>>>8;return a}; +EditorUi.prototype.crc32=function(a){this.crcTable=this.crcTable||this.createCrcTable();for(var b=-1,c=0;c<a.length;c++)b=b>>>8^this.crcTable[(b^a.charCodeAt(c))&255];return(b^-1)>>>0};EditorUi.prototype.writeGraphModelToPng=function(a,b,d,f,l){function c(a,b){var c=m;m+=b;return a.substring(c,m)}function e(a){a=c(a,4);return a.charCodeAt(3)+(a.charCodeAt(2)<<8)+(a.charCodeAt(1)<<16)+(a.charCodeAt(0)<<24)}function k(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}a=a.substring(a.indexOf(",")+ +1);a=window.atob?atob(a):Base64.decode(a,!0);var m=0;if(c(a,8)!=String.fromCharCode(137)+"PNG"+String.fromCharCode(13,10,26,10))null!=l&&l();else if(c(a,4),"IHDR"!=c(a,4))null!=l&&l();else{c(a,17);l=a.substring(0,m);do{var n=e(a);if("IDAT"==c(a,4)){l=a.substring(0,m-8);"pHYs"==b&&"dpi"==d?(d=Math.round(f/.0254),d=k(d)+k(d)+String.fromCharCode(1)):d=d+String.fromCharCode(0)+("zTXt"==b?String.fromCharCode(0):"")+f;f=4294967295;f=this.updateCRC(f,b,0,4);f=this.updateCRC(f,d,0,d.length);l+=k(d.length)+ +b+d+k(f^4294967295);l+=a.substring(m-8,a.length);break}l+=a.substring(m-8,m-4+n);c(a,n);c(a,4)}while(n);return"data:image/png;base64,"+(window.btoa?btoa(l):Base64.encode(l,!0))}};EditorUi.prototype.extractGraphModelFromPng=function(a){return Editor.extractGraphModelFromPng(a)};EditorUi.prototype.loadImage=function(a,b,d){try{var c=new Image;c.onload=function(){b(c)};null!=d&&(c.onerror=d);c.src=a}catch(n){if(null!=d)d(n);else throw n;}};var p=EditorUi.prototype.init;EditorUi.prototype.init=function(){mxStencilRegistry.allowEval= +mxStencilRegistry.allowEval&&!this.isOfflineApp();"undefined"!==typeof window.mxSettings&&(this.formatWidth=mxSettings.getFormatWidth());var a=this,b=this.editor.graph,d=b.cellEditor.startEditing;b.cellEditor.startEditing=function(c,e){var f=this.graph.getAttributeForCell(c,"plantUmlData");if(null!=f){var g=JSON.parse(f),f=new TextareaDialog(a,mxResources.get("plantUml")+":",g.data,function(d){null!=d&&a.spinner.spin(document.body,mxResources.get("inserting"))&&a.generatePlantUmlImage(d,g.format, +function(e,f,k){a.spinner.stop();b.getModel().beginUpdate();try{if("txt"==g.format)b.labelChanged(c,"<pre>"+e+"</pre>"),b.updateCellSize(c,!0);else{b.setCellStyles("image",a.convertDataUri(e),[c]);var l=b.model.getGeometry(c);null!=l&&(l=l.clone(),l.width=f,l.height=k,b.cellsResized([c],[l],!1))}b.setAttributeForCell(c,"plantUmlData",JSON.stringify({data:d,format:g.format}))}finally{b.getModel().endUpdate()}},function(b){a.handleError(b)})},null,null,400,220);a.showDialog(f.container,420,300,!0,!0); f.init()}else d.apply(this,arguments)};b.getLinkTitle=function(b){return a.getLinkTitle(b)};b.customLinkClicked=function(b){var c=!1;try{a.handleCustomLink(b),c=!0}catch(J){a.handleError(J)}return c};var f=this.clearDefaultStyle;this.clearDefaultStyle=function(){f.apply(this,arguments)};this.isOffline()||"undefined"===typeof window.EditDataDialog||(EditDataDialog.placeholderHelpLink="https://desk.draw.io/support/solutions/articles/16000051979");var l=a.editor.getEditBlankUrl;this.editor.getEditBlankUrl= function(b){b=null!=b?b:"";if(null!=a.pages&&null!=a.currentPage)for(var c=0;c<a.pages.length;c++)if(a.pages[c]==a.currentPage){0<c&&(b+=(0<b.length?"&":"?")+"page="+c);break}"1"==urlParams.dev&&(b+=(0<b.length?"&":"?")+"dev=1&drawdev=1");return l.apply(this,arguments)};var g=b.addClickHandler;b.addClickHandler=function(a,c,d){var e=c;c=function(a,c){if(null==c){var d=mxEvent.getSource(a);"a"==d.nodeName.toLowerCase()&&(c=d.getAttribute("href"))}null!=c&&b.isCustomLink(c)&&(mxEvent.isTouchEvent(a)|| !mxEvent.isPopupTrigger(a))&&b.customLinkClicked(c)&&mxEvent.consume(a);null!=e&&e(a,c)};g.call(this,a,c,d)};p.apply(this,arguments);mxClient.IS_SVG&&this.editor.graph.addSvgShadow(b.view.canvas.ownerSVGElement,null,!0);a.actions.get("print").funct=function(){a.showDialog((new PrintDialog(a)).container,360,null!=a.pages&&1<a.pages.length?450:370,!0,!0)};this.defaultFilename=mxResources.get("untitledDiagram");var m=b.getExportVariables;b.getExportVariables=function(){var b=m.apply(this,arguments); -b.pagecount=null!=a.pages?a.pages.length:1;b.page=null!=a.currentPage?a.currentPage.getName():"";b.pagenumber=null!=a.pages&&null!=a.currentPage?mxUtils.indexOf(a.pages,a.currentPage)+1:1;return b};var x=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:"pagecount"==b?null!=a.pages?a.pages.length:1:x.apply(this,arguments)};var t=b.labelLinkClicked; -b.labelLinkClicked=function(a,c,d){var e=c.getAttribute("href");if(null==e||!b.isCustomLink(e)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))t.apply(this,arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var u=this.actions.get("print");u.setEnabled(!mxClient.IS_IOS|| +b.pagecount=null!=a.pages?a.pages.length:1;b.page=null!=a.currentPage?a.currentPage.getName():"";b.pagenumber=null!=a.pages&&null!=a.currentPage?mxUtils.indexOf(a.pages,a.currentPage)+1:1;return b};var x=b.getGlobalVariable;b.getGlobalVariable=function(b){return"page"==b&&null!=a.currentPage?a.currentPage.getName():"pagenumber"==b?null!=a.currentPage&&null!=a.pages?mxUtils.indexOf(a.pages,a.currentPage)+1:1:"pagecount"==b?null!=a.pages?a.pages.length:1:x.apply(this,arguments)};var v=b.labelLinkClicked; +b.labelLinkClicked=function(a,c,d){var e=c.getAttribute("href");if(null==e||!b.isCustomLink(e)||!mxEvent.isTouchEvent(d)&&mxEvent.isPopupTrigger(d))v.apply(this,arguments);else{if(!b.isEnabled()||null!=a&&b.isCellLocked(a.cell))b.customLinkClicked(e),b.getRubberband().reset();mxEvent.consume(d)}};this.editor.getOrCreateFilename=function(){var b=a.defaultFilename,c=a.getCurrentFile();null!=c&&(b=null!=c.getTitle()?c.getTitle():b);return b};var u=this.actions.get("print");u.setEnabled(!mxClient.IS_IOS|| !navigator.standalone);u.visible=u.isEnabled();if(!this.editor.chromeless||this.editor.editable)this.keyHandler.bindAction(70,!0,"find"),this.keyHandler.bindAction(67,!0,"copyStyle",!0),this.keyHandler.bindAction(86,!0,"pasteStyle",!0),this.keyHandler.bindAction(77,!0,"editGeometry",!0),this.keyHandler.bindAction(88,!0,"insertText",!0),this.keyHandler.bindAction(75,!0,"insertRectangle"),this.keyHandler.bindAction(75,!0,"insertEllipse",!0),mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||(this.altShiftActions[83]= "synchronize"),this.installImagePasteHandler(),this.installNativeClipboardHandler();this.spinner=this.createSpinner(document.body.clientWidth/2-2,Math.max(document.body.clientHeight||0,document.documentElement.clientHeight||0)/2,24);Graph.fileSupport&&this.editor.graph.addListener(mxEvent.EDITING_STARTED,mxUtils.bind(this,function(a){var b=this.editor.graph,c=b.cellEditor.text2,d=null;null!=c&&(mxEvent.addListener(c,"dragleave",function(a){null!=d&&(d.parentNode.removeChild(d),d=null);a.stopPropagation(); -a.preventDefault()}),mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,c,d,e,f,k){b.insertImage(a,f,k)},function(){},function(a){return"image/"==a.type.substring(0, +a.preventDefault()}),mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null==d&&(!mxClient.IS_IE||10<document.documentMode)&&(d=this.highlightElement(c));a.stopPropagation();a.preventDefault()})),mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=d&&(d.parentNode.removeChild(d),d=null);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,0,0,this.maxImageSize,function(a,c,d,e,f,g){b.insertImage(a,f,g)},function(){},function(a){return"image/"==a.type.substring(0, 6)},function(a){for(var b=0;b<a.length;b++)a[b]()},mxEvent.isControlDown(a));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")){var c=a.dataTransfer.getData("text/uri-list");/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(c)?this.loadImage(decodeURIComponent(c),mxUtils.bind(this,function(a){var d=Math.max(1,a.width);a=Math.max(1,a.height);var e=this.maxImageSize,e=Math.min(1,Math.min(e/Math.max(1,d)),e/Math.max(1,a));b.insertImage(decodeURIComponent(c),d*e,a*e)})):document.execCommand("insertHTML", !1,a.dataTransfer.getData("text/plain"))}else 0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")?document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/html")):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&document.execCommand("insertHTML",!1,a.dataTransfer.getData("text/plain"));a.stopPropagation();a.preventDefault()})))}));"undefined"!==typeof window.mxSettings&&(u=this.editor.graph.view,u.setUnit(mxSettings.getUnit()),u.addListener("unitChanged",function(a,b){mxSettings.setUnit(b.getProperty("unit")); mxSettings.save()}),this.ruler=!this.canvasSupported||9==document.documentMode||"1"!=urlParams.ruler&&!mxSettings.isRulerOn()||this.editor.isChromelessView()&&!this.editor.editable?null:new mxDualRuler(this,u.unit),this.refresh());if("1"==urlParams.styledev){u=document.getElementById("geFooter");null!=u&&(this.styleInput=document.createElement("input"),this.styleInput.setAttribute("type","text"),this.styleInput.style.position="absolute",this.styleInput.style.top="14px",this.styleInput.style.left= "2px",this.styleInput.style.width="98%",this.styleInput.style.visibility="hidden",this.styleInput.style.opacity="0.9",mxEvent.addListener(this.styleInput,"change",mxUtils.bind(this,function(){this.editor.graph.getModel().setStyle(this.editor.graph.getSelectionCell(),this.styleInput.value)})),u.appendChild(this.styleInput),this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){if(0<this.editor.graph.getSelectionCount()){var c=this.editor.graph.getSelectionCell(), -c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var y=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:y.apply(this,arguments)}}u=document.getElementById("geInfo");null!=u&&u.parentNode.removeChild(u);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var z=null;mxEvent.addListener(b.container,"dragleave", -function(a){b.isEnabled()&&(null!=z&&(z.parentNode.removeChild(z),z=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null==z&&(!mxClient.IS_IE||10<document.documentMode)&&(z=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=z&&(z.parentNode.removeChild(z),z=null);if(b.isEnabled()){var c= -mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),d=b.view.translate,e=b.view.scale,f=c.x/e-d.x,k=c.y/e-d.y;mxEvent.isAltDown(a)&&(k=f=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,f,k,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var g=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages); -if(null!=c)b.setSelectionCells(this.importXml(c,f,k,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var l=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=l;var n=null,d=c.getElementsByTagName("img");null!=d&&1==d.length?(l=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)||(n=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(l=c[0].getAttribute("href")));var m=!0,q=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(l, -f,k,!0,n,null,m))});n&&l.length>this.resampleThreshold?this.confirmImageResize(function(a){m=a;q()},mxEvent.isControlDown(a)):q()}else null!=g&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(g)?this.loadImage(decodeURIComponent(g),mxUtils.bind(this,function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",f,k,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ -g+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(g,f,k,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"),f,k,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var a=this.editor.graph;a.container.addEventListener("paste", -mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b))try{for(var c=b.clipboardData||b.originalEvent.clipboardData,d=!1,e=0;e<c.types.length;e++)if("text/"===c.types[e].substring(0,5)){d=!0;break}if(!d){var f=c.items;for(index in f){var l=f[index];if("file"===l.kind){if(a.isEditing())this.importFiles([l.getAsFile()],0,0,this.maxImageSize,function(b,c,d,e,f,k){a.insertImage(b,f,k)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var m= -this.editor.graph.getInsertPoint();this.importFiles([l.getAsFile()],m.x,m.y,this.maxImageSize);mxEvent.consume(b)}break}}}}catch(t){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function a(){window.setTimeout(function(){d.innerHTML=" ";d.focus();document.execCommand("selectAll",!1,null)},0)}var b=this.editor.graph,d=document.createElement("div");d.setAttribute("autocomplete","off");d.setAttribute("autocorrect","off");d.setAttribute("autocapitalize","off");d.setAttribute("spellcheck", +c=this.editor.graph.getModel().getStyle(c);this.styleInput.value=c||"";this.styleInput.style.visibility="visible"}else this.styleInput.style.visibility="hidden"})));var y=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==this.styleInput?!0:y.apply(this,arguments)}}u=document.getElementById("geInfo");null!=u&&u.parentNode.removeChild(u);if(Graph.fileSupport&&(!this.editor.chromeless||this.editor.editable)){var A=null;mxEvent.addListener(b.container,"dragleave", +function(a){b.isEnabled()&&(null!=A&&(A.parentNode.removeChild(A),A=null),a.stopPropagation(),a.preventDefault())});mxEvent.addListener(b.container,"dragover",mxUtils.bind(this,function(a){null==A&&(!mxClient.IS_IE||10<document.documentMode)&&(A=this.highlightElement(b.container));null!=this.sidebar&&this.sidebar.hideTooltip();a.stopPropagation();a.preventDefault()}));mxEvent.addListener(b.container,"drop",mxUtils.bind(this,function(a){null!=A&&(A.parentNode.removeChild(A),A=null);if(b.isEnabled()){var c= +mxUtils.convertPoint(b.container,mxEvent.getClientX(a),mxEvent.getClientY(a)),d=b.view.translate,e=b.view.scale,f=c.x/e-d.x,g=c.y/e-d.y;mxEvent.isAltDown(a)&&(g=f=0);if(0<a.dataTransfer.files.length)this.importFiles(a.dataTransfer.files,f,g,this.maxImageSize,null,null,null,null,mxEvent.isControlDown(a),null,null,mxEvent.isShiftDown(a));else{var k=0<=mxUtils.indexOf(a.dataTransfer.types,"text/uri-list")?a.dataTransfer.getData("text/uri-list"):null,c=this.extractGraphModelFromEvent(a,null!=this.pages); +if(null!=c)b.setSelectionCells(this.importXml(c,f,g,!0));else if(0<=mxUtils.indexOf(a.dataTransfer.types,"text/html")){var l=a.dataTransfer.getData("text/html"),c=document.createElement("div");c.innerHTML=l;var m=null,d=c.getElementsByTagName("img");null!=d&&1==d.length?(l=d[0].getAttribute("src"),/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(l)||(m=!0)):(c=c.getElementsByTagName("a"),null!=c&&1==c.length&&(l=c[0].getAttribute("href")));var n=!0,q=mxUtils.bind(this,function(){b.setSelectionCells(this.insertTextAt(l, +f,g,!0,m,null,n))});m&&l.length>this.resampleThreshold?this.confirmImageResize(function(a){n=a;q()},mxEvent.isControlDown(a)):q()}else null!=k&&/\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(k)?this.loadImage(decodeURIComponent(k),mxUtils.bind(this,function(a){var c=Math.max(1,a.width);a=Math.max(1,a.height);var d=this.maxImageSize,d=Math.min(1,Math.min(d/Math.max(1,c)),d/Math.max(1,a));b.setSelectionCell(b.insertVertex(null,null,"",f,g,c*d,a*d,"shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image="+ +k+";"))}),mxUtils.bind(this,function(a){b.setSelectionCells(this.insertTextAt(k,f,g,!0))})):0<=mxUtils.indexOf(a.dataTransfer.types,"text/plain")&&b.setSelectionCells(this.insertTextAt(a.dataTransfer.getData("text/plain"),f,g,!0))}}a.stopPropagation();a.preventDefault()}),!1)}this.initPages();"1"==urlParams.embed&&this.initializeEmbedMode();this.installSettings()};EditorUi.prototype.installImagePasteHandler=function(){if(!mxClient.IS_IE){var a=this.editor.graph;a.container.addEventListener("paste", +mxUtils.bind(this,function(b){if(!mxEvent.isConsumed(b))try{for(var c=b.clipboardData||b.originalEvent.clipboardData,d=!1,e=0;e<c.types.length;e++)if("text/"===c.types[e].substring(0,5)){d=!0;break}if(!d){var f=c.items;for(index in f){var l=f[index];if("file"===l.kind){if(a.isEditing())this.importFiles([l.getAsFile()],0,0,this.maxImageSize,function(b,c,d,e,f,g){a.insertImage(b,f,g)},function(){},function(a){return"image/"==a.type.substring(0,6)},function(a){for(var b=0;b<a.length;b++)a[b]()});else{var m= +this.editor.graph.getInsertPoint();this.importFiles([l.getAsFile()],m.x,m.y,this.maxImageSize);mxEvent.consume(b)}break}}}}catch(v){}}),!1)}};EditorUi.prototype.installNativeClipboardHandler=function(){function a(){window.setTimeout(function(){d.innerHTML=" ";d.focus();document.execCommand("selectAll",!1,null)},0)}var b=this.editor.graph,d=document.createElement("div");d.setAttribute("autocomplete","off");d.setAttribute("autocorrect","off");d.setAttribute("autocapitalize","off");d.setAttribute("spellcheck", "false");d.style.textRendering="optimizeSpeed";d.style.fontFamily="monospace";d.style.wordBreak="break-all";d.style.background="transparent";d.style.color="transparent";d.style.position="absolute";d.style.whiteSpace="nowrap";d.style.overflow="hidden";d.style.display="block";d.style.fontSize="1";d.style.zIndex="-1";d.style.resize="none";d.style.outline="none";d.style.width="1px";d.style.height="1px";mxUtils.setOpacity(d,0);d.contentEditable=!0;d.innerHTML=" ";var f=!1;this.keyHandler.bindControlKey(88, null);this.keyHandler.bindControlKey(67,null);this.keyHandler.bindControlKey(86,null);mxEvent.addListener(document,"keydown",mxUtils.bind(this,function(a){var c=mxEvent.getSource(a);null==b.container||!b.isEnabled()||b.isMouseDown||b.isEditing()||null!=this.dialog||"INPUT"==c.nodeName||"TEXTAREA"==c.nodeName||!(224==a.keyCode||!mxClient.IS_MAC&&17==a.keyCode||mxClient.IS_MAC&&91==a.keyCode)||f||(d.style.left=b.container.scrollLeft+10+"px",d.style.top=b.container.scrollTop+10+"px",b.container.appendChild(d), f=!0,mxClient.IS_QUIRKS?window.setTimeout(function(){d.focus();document.execCommand("selectAll",!1,null)},0):(d.focus(),document.execCommand("selectAll",!1,null)))}));mxEvent.addListener(document,"keyup",mxUtils.bind(this,function(a){var c=a.keyCode;window.setTimeout(mxUtils.bind(this,function(){!f||224!=c&&17!=c&&91!=c||(f=!1,b.isEditing()||null!=this.dialog||null==b.container||b.container.focus(),d.parentNode.removeChild(d),null==this.dialog&&mxUtils.clearSelection())}),0)}));mxEvent.addListener(d, -"copy",mxUtils.bind(this,function(c){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(d),a()}catch(A){this.handleError(A)}}));mxEvent.addListener(d,"cut",mxUtils.bind(this,function(c){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(d,!0),a()}catch(A){this.handleError(A)}}));mxEvent.addListener(d,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&((new Date).getTime(),d.innerHTML=" ",d.focus(),null!=a.clipboardData&&this.pasteCells(a,d,!0), +"copy",mxUtils.bind(this,function(c){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(d),a()}catch(z){this.handleError(z)}}));mxEvent.addListener(d,"cut",mxUtils.bind(this,function(c){if(b.isEnabled())try{mxClipboard.copy(b),this.copyCells(d,!0),a()}catch(z){this.handleError(z)}}));mxEvent.addListener(d,"paste",mxUtils.bind(this,function(a){b.isEnabled()&&!b.isCellLocked(b.getDefaultParent())&&((new Date).getTime(),d.innerHTML=" ",d.focus(),null!=a.clipboardData&&this.pasteCells(a,d,!0), mxEvent.isConsumed(a)||window.setTimeout(mxUtils.bind(this,function(){this.pasteCells(a,d,!1)}),0))}),!0);var l=this.isSelectionAllowed;this.isSelectionAllowed=function(a){return mxEvent.getSource(a)==d?!0:l.apply(this,arguments)}};EditorUi.prototype.getLinkTitle=function(a){var b=Graph.prototype.getLinkTitle.apply(this,arguments);if("data:page/id,"==a.substring(0,13)){var c=a.indexOf(",");0<c&&(b=this.getPageById(a.substring(c+1)),b=null!=b?b.getName():mxResources.get("pageNotFound"))}else"data:"== a.substring(0,5)&&(b=mxResources.get("action"));return b};EditorUi.prototype.handleCustomLink=function(a){if("data:page/id,"==a.substring(0,13)){var b=a.indexOf(",");if(a=this.getPageById(a.substring(b+1)))this.selectPage(a);else throw Error(mxResources.get("pageNotFound")||"Page not found");}else this.editor.graph.handleCustomLink(a)};EditorUi.prototype.isSettingsEnabled=function(){return"undefined"!==typeof window.mxSettings&&(isLocalStorage||mxClient.IS_CHROMEAPP)};EditorUi.prototype.installSettings= function(){if(this.isSettingsEnabled()){ColorDialog.recentColors=mxSettings.getRecentColors();if(isLocalStorage)try{window.addEventListener("storage",mxUtils.bind(this,function(a){a.key==mxSettings.key&&(mxSettings.load(),ColorDialog.recentColors=mxSettings.getRecentColors(),this.menus.customFonts=mxSettings.getCustomFonts())}),!1)}catch(c){}this.fireEvent(new mxEventObject("styleChanged","keys",[],"values",[],"cells",[]));this.menus.customFonts=mxSettings.getCustomFonts();this.addListener("customFontsChanged", @@ -3292,14 +3293,14 @@ null!=g.titleKey?mxResources.get(g.titleKey):g.title);this.showDialog(m.containe g.editKey?mxResources.get(g.editKey):null,g.discardKey?mxResources.get(g.discardKey):null,g.ignore?mxUtils.bind(this,function(){this.hideDialog();l.postMessage(JSON.stringify({event:"draft",result:"ignore",message:g}),"*")}):null);this.showDialog(m.container,640,480,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));try{m.init()}catch(da){l.postMessage(JSON.stringify({event:"draft",error:da.toString(),message:g}),"*")}return}if("template"==g.action){this.spinner.stop();var p= 1==g.enableRecent,q=1==g.enableSearch,u=1==g.enableCustomTemp,m=new NewDialog(this,!1,null!=g.callback,mxUtils.bind(this,function(b,c){b=b||this.emptyDiagramXml;null!=g.callback?l.postMessage(JSON.stringify({event:"template",xml:b,blank:b==this.emptyDiagramXml,name:c}),"*"):(a(b,e,b!=this.emptyDiagramXml),this.editor.modified||this.editor.setStatus(""))}),null,null,null,null,null,null,null,p?mxUtils.bind(this,function(a){this.remoteInvoke("getRecentDiagrams",null,null,a,function(){a(null,"Network Error!")})}): null,q?mxUtils.bind(this,function(a,b){this.remoteInvoke("searchDiagrams",[a],null,b,function(){b(null,"Network Error!")})}):null,mxUtils.bind(this,function(a,b,c){l.postMessage(JSON.stringify({event:"template",docUrl:a,info:b,name:c}),"*")}),null,null,u?mxUtils.bind(this,function(a){this.remoteInvoke("getCustomTemplates",null,null,a,function(){a({},0)})}):null);this.showDialog(m.container,620,440,!0,!1,mxUtils.bind(this,function(a){a&&this.actions.get("exit").funct()}));m.init();return}if("textContent"== -g.action){var x=this.getDiagramTextContent();l.postMessage(JSON.stringify({event:"textContent",data:x,message:g}),"*");return}if("status"==g.action){null!=g.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(g.messageKey))):null!=g.message&&this.editor.setStatus(mxUtils.htmlEntities(g.message));null!=g.modified&&(this.editor.modified=g.modified);return}if("spinner"==g.action){var A=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body, -A):this.spinner.stop();return}if("export"==g.action){if("png"==g.format||"xmlpng"==g.format){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){var z=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var B=this.editor.graph,E=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=encodeURIComponent(z); -l.postMessage(JSON.stringify(b),"*")}),N=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);"xmlpng"==g.format&&(a=this.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(z)));B!=this.editor.graph&&B.container.parentNode.removeChild(B.container);E(a)}),U=g.pageId||(null!=this.pages?this.pages[0].getId():null);if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage.getId()!=U){for(var ba=B.getGlobalVariable,B=this.createTemporaryGraph(B.getStylesheet()),V,G=0;G<this.pages.length;G++)if(this.pages[G].getId()== -U){V=this.updatePageRoot(this.pages[G]);break}B.getGlobalVariable=function(a){return"page"==a?V.getName():"pagenumber"==a?1:ba.apply(this,arguments)};document.body.appendChild(B.container);B.model.setRoot(V.root)}if(null!=g.layerIds){for(var Y=B.model,fa=Y.getChildCells(Y.getRoot()),m={},G=0;G<g.layerIds.length;G++)m[g.layerIds[G]]=!0;for(G=0;G<fa.length;G++)Y.setVisible(fa[G],m[fa[G].id]||!1)}this.exportToCanvas(mxUtils.bind(this,function(a){N(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this, -function(){N(null)}),null,null,g.scale,null,null,null,B)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+(null!=U?"&pageId="+U:"")+(null!=g.layerIds?"&extras="+encodeURIComponent(JSON.stringify({layerIds:g.layerIds})):"")+(null!=g.scale?"&scale="+g.scale:"")+"&base64=1&xml="+encodeURIComponent(z))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?E("data:image/png;base64,"+a.getText()):N(null)}),mxUtils.bind(this,function(){N(null)}))}}else{null!= -g.xml&&0<g.xml.length&&this.setFileData(g.xml);A=this.createLoadMessage("export");if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var ja=this.getXmlFileData();A.xml=mxUtils.getXml(ja);A.data=this.getFileData(null,null,!0,null,null,null,ja);A.format=g.format}else if("html"==g.format)z=this.editor.getGraphXml(),A.data=this.getHtml(z,this.editor.graph),A.xml=mxUtils.getXml(z),A.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;var O=this.editor.graph.background; -O==mxConstants.NONE&&(O=null);A.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);A.format="svg";var ga=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();A.data=this.createSvgDataUri(a);l.postMessage(JSON.stringify(A),"*")});if("xmlsvg"==g.format)(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin))&&this.getEmbeddedSvg(A.xml,this.editor.graph,null,!0,ga,null,null,g.embedImages);else if(null== -g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){this.editor.graph.setEnabled(!1);var Z=this.editor.graph.getSvg(O);this.embedFonts(Z,mxUtils.bind(this,function(a){g.embedImages||null==g.embedImages?this.convertImages(a,mxUtils.bind(this,function(a){ga(mxUtils.getXml(a))})):ga(mxUtils.getXml(a))}))}return}l.postMessage(JSON.stringify(A),"*")}return}if("load"==g.action)d=1==g.autosave,this.hideDialog(),null!=g.modified&&null==urlParams.modified&& +g.action){var x=this.getDiagramTextContent();l.postMessage(JSON.stringify({event:"textContent",data:x,message:g}),"*");return}if("status"==g.action){null!=g.messageKey?this.editor.setStatus(mxUtils.htmlEntities(mxResources.get(g.messageKey))):null!=g.message&&this.editor.setStatus(mxUtils.htmlEntities(g.message));null!=g.modified&&(this.editor.modified=g.modified);return}if("spinner"==g.action){var z=null!=g.messageKey?mxResources.get(g.messageKey):g.message;null==g.show||g.show?this.spinner.spin(document.body, +z):this.spinner.stop();return}if("export"==g.action){if("png"==g.format||"xmlpng"==g.format){if(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){var A=null!=g.xml?g.xml:this.getFileData(!0);this.editor.graph.setEnabled(!1);var B=this.editor.graph,D=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();var b=this.createLoadMessage("export");b.format=g.format;b.message=g;b.data=a;b.xml=encodeURIComponent(A); +l.postMessage(JSON.stringify(b),"*")}),N=mxUtils.bind(this,function(a){null==a&&(a=Editor.blankImage);"xmlpng"==g.format&&(a=this.writeGraphModelToPng(a,"tEXt","mxfile",encodeURIComponent(A)));B!=this.editor.graph&&B.container.parentNode.removeChild(B.container);D(a)}),U=g.pageId||(null!=this.pages?this.pages[0].getId():null);if(this.isExportToCanvas()){if(null!=this.pages&&this.currentPage.getId()!=U){for(var ba=B.getGlobalVariable,B=this.createTemporaryGraph(B.getStylesheet()),V,H=0;H<this.pages.length;H++)if(this.pages[H].getId()== +U){V=this.updatePageRoot(this.pages[H]);break}B.getGlobalVariable=function(a){return"page"==a?V.getName():"pagenumber"==a?1:ba.apply(this,arguments)};document.body.appendChild(B.container);B.model.setRoot(V.root)}if(null!=g.layerIds){for(var Y=B.model,fa=Y.getChildCells(Y.getRoot()),m={},H=0;H<g.layerIds.length;H++)m[g.layerIds[H]]=!0;for(H=0;H<fa.length;H++)Y.setVisible(fa[H],m[fa[H].id]||!1)}this.exportToCanvas(mxUtils.bind(this,function(a){N(a.toDataURL("image/png"))}),null,null,null,mxUtils.bind(this, +function(){N(null)}),null,null,g.scale,null,null,null,B)}else(new mxXmlRequest(EXPORT_URL,"format=png&embedXml="+("xmlpng"==g.format?"1":"0")+(null!=U?"&pageId="+U:"")+(null!=g.layerIds?"&extras="+encodeURIComponent(JSON.stringify({layerIds:g.layerIds})):"")+(null!=g.scale?"&scale="+g.scale:"")+"&base64=1&xml="+encodeURIComponent(A))).send(mxUtils.bind(this,function(a){200<=a.getStatus()&&299>=a.getStatus()?D("data:image/png;base64,"+a.getText()):N(null)}),mxUtils.bind(this,function(){N(null)}))}}else{null!= +g.xml&&0<g.xml.length&&this.setFileData(g.xml);z=this.createLoadMessage("export");if("html2"==g.format||"html"==g.format&&("0"!=urlParams.pages||null!=this.pages&&1<this.pages.length)){var ja=this.getXmlFileData();z.xml=mxUtils.getXml(ja);z.data=this.getFileData(null,null,!0,null,null,null,ja);z.format=g.format}else if("html"==g.format)A=this.editor.getGraphXml(),z.data=this.getHtml(A,this.editor.graph),z.xml=mxUtils.getXml(A),z.format=g.format;else{mxSvgCanvas2D.prototype.foAltText=null;var O=this.editor.graph.background; +O==mxConstants.NONE&&(O=null);z.xml=this.getFileData(!0,null,null,null,null,null,null,null,null,!1);z.format="svg";var ga=mxUtils.bind(this,function(a){this.editor.graph.setEnabled(!0);this.spinner.stop();z.data=this.createSvgDataUri(a);l.postMessage(JSON.stringify(z),"*")});if("xmlsvg"==g.format)(null==g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin))&&this.getEmbeddedSvg(z.xml,this.editor.graph,null,!0,ga,null,null,g.embedImages);else if(null== +g.spin&&null==g.spinKey||this.spinner.spin(document.body,null!=g.spinKey?mxResources.get(g.spinKey):g.spin)){this.editor.graph.setEnabled(!1);var Z=this.editor.graph.getSvg(O);this.embedFonts(Z,mxUtils.bind(this,function(a){g.embedImages||null==g.embedImages?this.convertImages(a,mxUtils.bind(this,function(a){ga(mxUtils.getXml(a))})):ga(mxUtils.getXml(a))}))}return}l.postMessage(JSON.stringify(z),"*")}return}if("load"==g.action)d=1==g.autosave,this.hideDialog(),null!=g.modified&&null==urlParams.modified&& (urlParams.modified=g.modified),null!=g.saveAndExit&&null==urlParams.saveAndExit&&(urlParams.saveAndExit=g.saveAndExit),null!=g.title&&null!=this.buttonContainer&&(n=document.createElement("span"),mxUtils.write(n,g.title),"atlas"==uiTheme?(this.buttonContainer.style.paddingRight="12px",this.buttonContainer.style.paddingTop="6px",this.buttonContainer.style.right="25px"):"min"!=uiTheme&&(this.buttonContainer.style.paddingRight="38px",this.buttonContainer.style.paddingTop="6px"),null!=this.embedFilenameSpan&& this.embedFilenameSpan.parentNode.removeChild(this.embedFilenameSpan),this.buttonContainer.appendChild(n),this.embedFilenameSpan=n),g=null!=g.xmlpng?this.extractGraphModelFromPng(g.xmlpng):g.xml;else{"remoteInvokeReady"==g.action?this.handleRemoteInvokeReady(l):"remoteInvoke"==g.action?this.handleRemoteInvoke(g):"remoteInvokeResponse"==g.action?this.handleRemoteInvokeResponse(g):l.postMessage(JSON.stringify({error:"unknownMessage",data:JSON.stringify(g)}),"*");return}}catch(da){this.handleError(da)}}var T= mxUtils.bind(this,function(e,g){c=!0;try{a(e,g)}catch(aa){this.handleError(aa)}c=!1;null!=urlParams.modified&&this.editor.setStatus("");var k=mxUtils.bind(this,function(){return"0"!=urlParams.pages||null!=this.pages&&1<this.pages.length?this.getFileData(!0):mxUtils.getXml(this.editor.getGraphXml())});f=k();d&&null==b&&(b=mxUtils.bind(this,function(a,b){var d=k();if(d!=f&&!c){var e=this.createLoadMessage("autosave");e.xml=d;d=JSON.stringify(e);(window.opener||window.parent).postMessage(d,"*")}f=d}), @@ -3311,19 +3312,19 @@ mxResources.get("saveAndExit")),mxEvent.addListener(b,"click",mxUtils.bind(this, mxResources.get("saveAndExit")),b.className="geBigButton geBigStandardButton",b.style.marginLeft="6px",mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)));b=document.createElement("a");mxUtils.write(b,mxResources.get("exit"));b.setAttribute("title",mxResources.get("exit"));b.className="geBigButton geBigStandardButton";b.style.marginLeft="6px";b.style.marginRight="20px";mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("exit").funct()})); a.appendChild(b);this.toolbar.container.appendChild(a);this.toolbar.staticElements.push(a);a.style.right="atlas"!=uiTheme?"52px":"42px"}};EditorUi.prototype.showImportCsvDialog=function(){null==this.importCsvDialog&&(this.importCsvDialog=new TextareaDialog(this,mxResources.get("csv")+":",Editor.defaultCsvValue,mxUtils.bind(this,function(a){this.importCsv(a)}),null,null,620,430,null,!0,!0,mxResources.get("import"),this.isOffline()?null:"https://about.draw.io/import-from-csv-to-drawio/"));this.showDialog(this.importCsvDialog.container, 640,520,!0,!0,null,null,null,null,!0);this.importCsvDialog.init()};EditorUi.prototype.executeLayoutList=function(a,b){for(var c=this.editor.graph,d=c.getSelectionCells(),e=0;e<a.length;e++){var f=new window[a[e].layout](c);if(null!=a[e].config)for(var l in a[e].config)f[l]=a[e].config[l];this.executeLayout(function(){f.execute(c.getDefaultParent(),0==d.length?null:d)},e==a.length-1,b)}};EditorUi.prototype.importCsv=function(a,b){try{var c=a.split("\n"),d=[],e=[],f={};if(0<c.length){var l={},m=null, -p=null,u=null,y=null,z=null,C=null,v=null,B=null,M="",I="auto",P="auto",D=null,E=null,N=40,U=40,ba=100,V=0,G=this.editor.graph;G.getGraphBounds();for(var Y=function(){null!=b?b(ia):(G.setSelectionCells(ia),G.scrollCellToVisible(G.getSelectionCell()))},fa=G.getFreeInsertPoint(),ja=fa.x,O=fa.y,fa=O,ga=null,Z="auto",B=null,T=[],da=null,ma=null,W=0;W<c.length&&"#"==c[W].charAt(0);){a=c[W];for(W++;W<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[W].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[W].substring(1)), -W++;if("#"!=a.charAt(1)){var aa=a.indexOf(":");if(0<aa){var R=mxUtils.trim(a.substring(1,aa)),L=mxUtils.trim(a.substring(aa+1));"label"==R?ga=G.sanitizeHtml(L):"labelname"==R&&0<L.length&&"-"!=L?y=L:"labels"==R&&0<L.length&&"-"!=L?z=JSON.parse(L):"style"==R?m=L:"parentstyle"==R?C=L:"stylename"==R&&0<L.length&&"-"!=L?u=L:"styles"==R&&0<L.length&&"-"!=L?p=JSON.parse(L):"identity"==R&&0<L.length&&"-"!=L?v=L:"parent"==R&&0<L.length&&"-"!=L?B=L:"namespace"==R&&0<L.length&&"-"!=L?M=L:"width"==R?I=L:"height"== -R?P=L:"left"==R&&0<L.length?D=L:"top"==R&&0<L.length?E=L:"ignore"==R?ma=L.split(","):"connect"==R?T.push(JSON.parse(L)):"link"==R?da=L:"padding"==R?V=parseFloat(L):"edgespacing"==R?N=parseFloat(L):"nodespacing"==R?U=parseFloat(L):"levelspacing"==R?ba=parseFloat(L):"layout"==R&&(Z=L)}}}if(null==c[W])throw Error(mxResources.get("invalidOrMissingFile"));for(var ka=this.editor.csvToArray(c[W]),R=aa=null,L=[],Q=0;Q<ka.length;Q++)v==ka[Q]&&(aa=Q),B==ka[Q]&&(R=Q),L.push(mxUtils.trim(ka[Q]).replace(/[^a-z0-9]+/ig, -"_").replace(/^\d+/,"").replace(/_+$/,""));null==ga&&(ga="%"+L[0]+"%");if(null!=T)for(var S=0;S<T.length;S++)null==l[T[S].to]&&(l[T[S].to]={});v=[];for(Q=W+1;Q<c.length;Q++){var ca=this.editor.csvToArray(c[Q]);if(null==ca){var ta=40<c[Q].length?c[Q].substring(0,40)+"...":c[Q];throw Error(ta+" ("+Q+"):\n"+mxResources.get("containsValidationErrors"));}0<ca.length&&v.push(ca)}G.model.beginUpdate();try{for(Q=0;Q<v.length;Q++){var ca=v[Q],K=null,la=null!=aa?M+ca[aa]:null;null!=la&&(K=G.model.getCell(la)); -var c=null!=K,ea=new mxCell(ga,new mxGeometry(ja,fa,0,0),m||"whiteSpace=wrap;html=1;");ea.vertex=!0;ea.id=la;for(var ha=0;ha<ca.length;ha++)G.setAttributeForCell(ea,L[ha],ca[ha]);if(null!=y&&null!=z){var Aa=z[ea.getAttribute(y)];null!=Aa&&G.labelChanged(ea,Aa)}if(null!=u&&null!=p){var Ba=p[ea.getAttribute(u)];null!=Ba&&(ea.style=Ba)}G.setAttributeForCell(ea,"placeholders","1");ea.style=G.replacePlaceholders(ea,ea.style);c&&(G.model.setGeometry(K,ea.geometry),G.model.setStyle(K,ea.style),0>mxUtils.indexOf(e, -K)&&e.push(K));K=ea;if(!c)for(S=0;S<T.length;S++)l[T[S].to][K.getAttribute(T[S].to)]=K;null!=da&&"link"!=da&&(G.setLinkForCell(K,K.getAttribute(da)),G.setAttributeForCell(K,da,null));G.fireEvent(new mxEventObject("cellsInserted","cells",[K]));var za=this.editor.graph.getPreferredSizeForCell(K);K.vertex&&(null!=D&&null!=K.getAttribute(D)&&(K.geometry.x=ja+parseFloat(K.getAttribute(D))),null!=E&&null!=K.getAttribute(E)&&(K.geometry.y=O+parseFloat(K.getAttribute(E))),"@"==I.charAt(0)&&null!=K.getAttribute(I.substring(1))? -K.geometry.width=parseFloat(K.getAttribute(I.substring(1))):K.geometry.width="auto"==I?za.width+V:parseFloat(I),"@"==P.charAt(0)&&null!=K.getAttribute(P.substring(1))?K.geometry.height=parseFloat(K.getAttribute(P.substring(1))):K.geometry.height="auto"==P?za.height+V:parseFloat(P),fa+=K.geometry.height+U);c?(null==f[la]&&(f[la]=[]),f[la].push(K)):(B=null!=R?G.model.getCell(M+ca[R]):null,d.push(K),null!=B?(B.style=G.replacePlaceholders(B,C),G.addCell(K,B)):e.push(G.addCell(K)))}for(var oa=e.slice(), -ia=e.slice(),S=0;S<T.length;S++)for(var sa=T[S],Q=0;Q<d.length;Q++){var K=d[Q],pa=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d&&(G.setAttributeForCell(b,c.from,null),""!=d))for(var d=d.split(","),e=0;e<d.length;e++){var f=l[c.to][d[e]];if(null!=f){var g=c.label;null!=c.fromlabel&&(g=(b.getAttribute(c.fromlabel)||"")+(g||""));null!=c.tolabel&&(g=(g||"")+(f.getAttribute(c.tolabel)||""));var k="target"==c.placeholders==!c.invert?f:a,k=null!=c.style?G.replacePlaceholders(k, -c.style):G.createCurrentEdgeStyle();ia.push(G.insertEdge(null,null,g||"",c.invert?f:a,c.invert?a:f,k));mxUtils.remove(c.invert?a:f,oa)}}});pa(K,K,sa);if(null!=f[K.id])for(ha=0;ha<f[K.id].length;ha++)pa(K,f[K.id][ha],sa)}if(null!=ma)for(Q=0;Q<d.length;Q++)for(K=d[Q],ha=0;ha<ma.length;ha++)G.setAttributeForCell(K,mxUtils.trim(ma[ha]),null);if(0<e.length){var ua=new mxParallelEdgeLayout(G);ua.spacing=N;var wa=function(){0<ua.spacing&&ua.execute(G.getDefaultParent());for(var a=0;a<e.length;a++){var b= -G.getCellGeometry(e[a]);b.x=Math.round(G.snap(b.x));b.y=Math.round(G.snap(b.y));"auto"==I&&(b.width=Math.round(G.snap(b.width)));"auto"==P&&(b.height=Math.round(G.snap(b.height)))}};if("["==Z.charAt(0)){var qa=Y;G.view.validate();this.executeLayoutList(JSON.parse(Z),function(){wa();qa()});Y=null}else if("circle"==Z){var Ca=new mxCircleLayout(G);Ca.resetEdges=!1;var Ma=Ca.isVertexIgnored;Ca.isVertexIgnored=function(a){return Ma.apply(this,arguments)||0>mxUtils.indexOf(e,a)};this.executeLayout(function(){Ca.execute(G.getDefaultParent()); -wa()},!0,Y);Y=null}else if("horizontaltree"==Z||"verticaltree"==Z||"auto"==Z&&ia.length==2*e.length-1&&1==oa.length){G.view.validate();var Da=new mxCompactTreeLayout(G,"horizontaltree"==Z);Da.levelDistance=U;Da.edgeRouting=!1;Da.resetEdges=!1;this.executeLayout(function(){Da.execute(G.getDefaultParent(),0<oa.length?oa[0]:null)},!0,Y);Y=null}else if("horizontalflow"==Z||"verticalflow"==Z||"auto"==Z&&1==oa.length){G.view.validate();var xa=new mxHierarchicalLayout(G,"horizontalflow"==Z?mxConstants.DIRECTION_WEST: -mxConstants.DIRECTION_NORTH);xa.intraCellSpacing=U;xa.parallelEdgeSpacing=N;xa.interRankCellSpacing=ba;xa.disableEdgeStyle=!1;this.executeLayout(function(){xa.execute(G.getDefaultParent(),ia);G.moveCells(ia,ja,O)},!0,Y);Y=null}else if("organic"==Z||"auto"==Z&&ia.length>e.length){G.view.validate();var ya=new mxFastOrganicLayout(G);ya.forceConstant=3*U;ya.resetEdges=!1;var Ha=ya.isVertexIgnored;ya.isVertexIgnored=function(a){return Ha.apply(this,arguments)||0>mxUtils.indexOf(e,a)};ua=new mxParallelEdgeLayout(G); -ua.spacing=N;this.executeLayout(function(){ya.execute(G.getDefaultParent());wa()},!0,Y);Y=null}}this.hideDialog()}finally{G.model.endUpdate()}null!=Y&&Y()}}catch(Ia){this.handleError(Ia)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b=window.location.search;return b};EditorUi.prototype.getUrl= +p=null,u=null,y=null,A=null,C=null,t=null,B=null,M="",G="auto",P="auto",E=null,D=null,N=40,U=40,ba=100,V=0,H=this.editor.graph;H.getGraphBounds();for(var Y=function(){null!=b?b(ia):(H.setSelectionCells(ia),H.scrollCellToVisible(H.getSelectionCell()))},fa=H.getFreeInsertPoint(),ja=fa.x,O=fa.y,fa=O,ga=null,Z="auto",B=null,T=[],da=null,ma=null,W=0;W<c.length&&"#"==c[W].charAt(0);){a=c[W];for(W++;W<c.length&&"\\"==a.charAt(a.length-1)&&"#"==c[W].charAt(0);)a=a.substring(0,a.length-1)+mxUtils.trim(c[W].substring(1)), +W++;if("#"!=a.charAt(1)){var aa=a.indexOf(":");if(0<aa){var R=mxUtils.trim(a.substring(1,aa)),L=mxUtils.trim(a.substring(aa+1));"label"==R?ga=H.sanitizeHtml(L):"labelname"==R&&0<L.length&&"-"!=L?y=L:"labels"==R&&0<L.length&&"-"!=L?A=JSON.parse(L):"style"==R?m=L:"parentstyle"==R?C=L:"stylename"==R&&0<L.length&&"-"!=L?u=L:"styles"==R&&0<L.length&&"-"!=L?p=JSON.parse(L):"identity"==R&&0<L.length&&"-"!=L?t=L:"parent"==R&&0<L.length&&"-"!=L?B=L:"namespace"==R&&0<L.length&&"-"!=L?M=L:"width"==R?G=L:"height"== +R?P=L:"left"==R&&0<L.length?E=L:"top"==R&&0<L.length?D=L:"ignore"==R?ma=L.split(","):"connect"==R?T.push(JSON.parse(L)):"link"==R?da=L:"padding"==R?V=parseFloat(L):"edgespacing"==R?N=parseFloat(L):"nodespacing"==R?U=parseFloat(L):"levelspacing"==R?ba=parseFloat(L):"layout"==R&&(Z=L)}}}if(null==c[W])throw Error(mxResources.get("invalidOrMissingFile"));for(var ka=this.editor.csvToArray(c[W]),R=aa=null,L=[],Q=0;Q<ka.length;Q++)t==ka[Q]&&(aa=Q),B==ka[Q]&&(R=Q),L.push(mxUtils.trim(ka[Q]).replace(/[^a-z0-9]+/ig, +"_").replace(/^\d+/,"").replace(/_+$/,""));null==ga&&(ga="%"+L[0]+"%");if(null!=T)for(var S=0;S<T.length;S++)null==l[T[S].to]&&(l[T[S].to]={});t=[];for(Q=W+1;Q<c.length;Q++){var ca=this.editor.csvToArray(c[Q]);if(null==ca){var ta=40<c[Q].length?c[Q].substring(0,40)+"...":c[Q];throw Error(ta+" ("+Q+"):\n"+mxResources.get("containsValidationErrors"));}0<ca.length&&t.push(ca)}H.model.beginUpdate();try{for(Q=0;Q<t.length;Q++){var ca=t[Q],K=null,la=null!=aa?M+ca[aa]:null;null!=la&&(K=H.model.getCell(la)); +var c=null!=K,ea=new mxCell(ga,new mxGeometry(ja,fa,0,0),m||"whiteSpace=wrap;html=1;");ea.vertex=!0;ea.id=la;for(var ha=0;ha<ca.length;ha++)H.setAttributeForCell(ea,L[ha],ca[ha]);if(null!=y&&null!=A){var Aa=A[ea.getAttribute(y)];null!=Aa&&H.labelChanged(ea,Aa)}if(null!=u&&null!=p){var Ba=p[ea.getAttribute(u)];null!=Ba&&(ea.style=Ba)}H.setAttributeForCell(ea,"placeholders","1");ea.style=H.replacePlaceholders(ea,ea.style);c&&(H.model.setGeometry(K,ea.geometry),H.model.setStyle(K,ea.style),0>mxUtils.indexOf(e, +K)&&e.push(K));K=ea;if(!c)for(S=0;S<T.length;S++)l[T[S].to][K.getAttribute(T[S].to)]=K;null!=da&&"link"!=da&&(H.setLinkForCell(K,K.getAttribute(da)),H.setAttributeForCell(K,da,null));H.fireEvent(new mxEventObject("cellsInserted","cells",[K]));var za=this.editor.graph.getPreferredSizeForCell(K);K.vertex&&(null!=E&&null!=K.getAttribute(E)&&(K.geometry.x=ja+parseFloat(K.getAttribute(E))),null!=D&&null!=K.getAttribute(D)&&(K.geometry.y=O+parseFloat(K.getAttribute(D))),"@"==G.charAt(0)&&null!=K.getAttribute(G.substring(1))? +K.geometry.width=parseFloat(K.getAttribute(G.substring(1))):K.geometry.width="auto"==G?za.width+V:parseFloat(G),"@"==P.charAt(0)&&null!=K.getAttribute(P.substring(1))?K.geometry.height=parseFloat(K.getAttribute(P.substring(1))):K.geometry.height="auto"==P?za.height+V:parseFloat(P),fa+=K.geometry.height+U);c?(null==f[la]&&(f[la]=[]),f[la].push(K)):(B=null!=R?H.model.getCell(M+ca[R]):null,d.push(K),null!=B?(B.style=H.replacePlaceholders(B,C),H.addCell(K,B)):e.push(H.addCell(K)))}for(var oa=e.slice(), +ia=e.slice(),S=0;S<T.length;S++)for(var sa=T[S],Q=0;Q<d.length;Q++){var K=d[Q],pa=mxUtils.bind(this,function(a,b,c){var d=b.getAttribute(c.from);if(null!=d&&(H.setAttributeForCell(b,c.from,null),""!=d))for(var d=d.split(","),e=0;e<d.length;e++){var f=l[c.to][d[e]];if(null!=f){var g=c.label;null!=c.fromlabel&&(g=(b.getAttribute(c.fromlabel)||"")+(g||""));null!=c.tolabel&&(g=(g||"")+(f.getAttribute(c.tolabel)||""));var k="target"==c.placeholders==!c.invert?f:a,k=null!=c.style?H.replacePlaceholders(k, +c.style):H.createCurrentEdgeStyle();ia.push(H.insertEdge(null,null,g||"",c.invert?f:a,c.invert?a:f,k));mxUtils.remove(c.invert?a:f,oa)}}});pa(K,K,sa);if(null!=f[K.id])for(ha=0;ha<f[K.id].length;ha++)pa(K,f[K.id][ha],sa)}if(null!=ma)for(Q=0;Q<d.length;Q++)for(K=d[Q],ha=0;ha<ma.length;ha++)H.setAttributeForCell(K,mxUtils.trim(ma[ha]),null);if(0<e.length){var ua=new mxParallelEdgeLayout(H);ua.spacing=N;var wa=function(){0<ua.spacing&&ua.execute(H.getDefaultParent());for(var a=0;a<e.length;a++){var b= +H.getCellGeometry(e[a]);b.x=Math.round(H.snap(b.x));b.y=Math.round(H.snap(b.y));"auto"==G&&(b.width=Math.round(H.snap(b.width)));"auto"==P&&(b.height=Math.round(H.snap(b.height)))}};if("["==Z.charAt(0)){var qa=Y;H.view.validate();this.executeLayoutList(JSON.parse(Z),function(){wa();qa()});Y=null}else if("circle"==Z){var Ca=new mxCircleLayout(H);Ca.resetEdges=!1;var Ma=Ca.isVertexIgnored;Ca.isVertexIgnored=function(a){return Ma.apply(this,arguments)||0>mxUtils.indexOf(e,a)};this.executeLayout(function(){Ca.execute(H.getDefaultParent()); +wa()},!0,Y);Y=null}else if("horizontaltree"==Z||"verticaltree"==Z||"auto"==Z&&ia.length==2*e.length-1&&1==oa.length){H.view.validate();var Da=new mxCompactTreeLayout(H,"horizontaltree"==Z);Da.levelDistance=U;Da.edgeRouting=!1;Da.resetEdges=!1;this.executeLayout(function(){Da.execute(H.getDefaultParent(),0<oa.length?oa[0]:null)},!0,Y);Y=null}else if("horizontalflow"==Z||"verticalflow"==Z||"auto"==Z&&1==oa.length){H.view.validate();var xa=new mxHierarchicalLayout(H,"horizontalflow"==Z?mxConstants.DIRECTION_WEST: +mxConstants.DIRECTION_NORTH);xa.intraCellSpacing=U;xa.parallelEdgeSpacing=N;xa.interRankCellSpacing=ba;xa.disableEdgeStyle=!1;this.executeLayout(function(){xa.execute(H.getDefaultParent(),ia);H.moveCells(ia,ja,O)},!0,Y);Y=null}else if("organic"==Z||"auto"==Z&&ia.length>e.length){H.view.validate();var ya=new mxFastOrganicLayout(H);ya.forceConstant=3*U;ya.resetEdges=!1;var Ha=ya.isVertexIgnored;ya.isVertexIgnored=function(a){return Ha.apply(this,arguments)||0>mxUtils.indexOf(e,a)};ua=new mxParallelEdgeLayout(H); +ua.spacing=N;this.executeLayout(function(){ya.execute(H.getDefaultParent());wa()},!0,Y);Y=null}}this.hideDialog()}finally{H.model.endUpdate()}null!=Y&&Y()}}catch(Ia){this.handleError(Ia)}};EditorUi.prototype.getSearch=function(a){var b="";if("1"!=urlParams.offline&&"1"!=urlParams.demo&&null!=a&&0<window.location.search.length){var c="?",d;for(d in urlParams)0>mxUtils.indexOf(a,d)&&null!=urlParams[d]&&(b+=c+d+"="+urlParams[d],c="&")}else b=window.location.search;return b};EditorUi.prototype.getUrl= function(a){a=null!=a?a:window.location.pathname;var b=0<a.indexOf("?")?1:0;if("1"==urlParams.offline)a+=window.location.search;else{var c="tmp libs clibs state fileId code share notitle data url embed client create title splash".split(" "),d;for(d in urlParams)0>mxUtils.indexOf(c,d)&&(a=0==b?a+"?":a+"&",null!=urlParams[d]&&(a+=d+"="+urlParams[d],b++))}return a};EditorUi.prototype.showLinkDialog=function(a,b,d){a=new LinkDialog(this,a,b,d,!0);this.showDialog(a.container,560,130,!0,!0);a.init()};var u= EditorUi.prototype.createOutline;EditorUi.prototype.createOutline=function(a){var b=u.apply(this,arguments),c=this.editor.graph,d=b.getSourceGraphBounds;b.getSourceGraphBounds=function(){if(mxUtils.hasScrollbars(c.container)&&c.pageVisible&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width-2*a.x/b),Math.ceil(this.source.minimumGraphSize.height-2*a.y/b))}return d.apply(this,arguments)}; var f=b.getSourceContainerSize;b.getSourceContainerSize=function(){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var a=this.source.getPagePadding(),b=this.source.view.scale;return new mxRectangle(0,0,Math.ceil(this.source.minimumGraphSize.width*b-2*a.x),Math.ceil(this.source.minimumGraphSize.height*b-2*a.y))}return f.apply(this,arguments)};b.getOutlineOffset=function(a){if(mxUtils.hasScrollbars(c.container)&&null!=this.source.minimumGraphSize){var d=this.source.getPagePadding(); @@ -3337,7 +3338,7 @@ this.offlineStatus.className="geItem";this.offlineStatus.style.position="absolut function(){var a=this.offlineStatus.getElementsByTagName("img");null!=a&&0<a.length&&this.alert(a[0].getAttribute("title"))}));var l=null,b=mxUtils.bind(this,function(){var a=f.status,b;a==f.CHECKING&&(a=f.DOWNLOADING);switch(a){case f.UNCACHED:b="";break;case f.IDLE:b="min"==uiTheme?"":'<img title="draw.io is up to date." border="0" src="'+IMAGE_PATH+'/checkmark.gif"/>';break;case f.DOWNLOADING:b='<img title="Downloading new version..." border="0" src="'+IMAGE_PATH+'/spin.gif"/>';break;case f.UPDATEREADY:b= '<img title="'+mxUtils.htmlEntities(mxResources.get("restartForChangeRequired"))+'" border="0" src="'+IMAGE_PATH+'/download.png"/>';break;case f.OBSOLETE:b='<img title="Obsolete" border="0" src="'+IMAGE_PATH+'/clear.gif"/>';break;default:b='<img title="Unknown" border="0" src="'+IMAGE_PATH+'/clear.gif"/>'}a!=l&&(this.offlineStatus.innerHTML=b,l=a)});mxEvent.addListener(f,"checking",b);mxEvent.addListener(f,"noupdate",b);mxEvent.addListener(f,"downloading",b);mxEvent.addListener(f,"progress",b);mxEvent.addListener(f, "cached",b);mxEvent.addListener(f,"updateready",b);mxEvent.addListener(f,"obsolete",b);mxEvent.addListener(f,"error",b);b()}}else this.updateUserElement()};EditorUi.prototype.updateButtonContainer=function(){};EditorUi.prototype.updateUserElement=function(){};EditorUi.prototype.scheduleSanityCheck=function(){};EditorUi.prototype.stopSanityCheck=function(){};EditorUi.prototype.isDiagramActive=function(){var a=this.getCurrentFile();return null!=a&&a.isEditable()||"1"==urlParams.embed&&this.editor.graph.isEnabled()}; -var z=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){z.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),d=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=d&&d.isEditable()&&d.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b); +var A=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){A.apply(this,arguments);var a=this.editor.graph,b=this.isDiagramActive(),d=this.getCurrentFile();this.actions.get("pageSetup").setEnabled(b);this.actions.get("autosave").setEnabled(null!=d&&d.isEditable()&&d.isAutosaveOptional());this.actions.get("guides").setEnabled(b);this.actions.get("editData").setEnabled(b);this.actions.get("shadowVisible").setEnabled(b);this.actions.get("connectionArrows").setEnabled(b); this.actions.get("connectionPoints").setEnabled(b);this.actions.get("copyStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("pasteStyle").setEnabled(b&&!a.isSelectionEmpty());this.actions.get("editGeometry").setEnabled(a.getModel().isVertex(a.getSelectionCell()));this.actions.get("createShape").setEnabled(b);this.actions.get("createRevision").setEnabled(b);this.actions.get("moveToFolder").setEnabled(null!=d);this.actions.get("makeCopy").setEnabled(null!=d&&!d.isRestricted());this.actions.get("editDiagram").setEnabled(b&& (null==d||!d.isRestricted()));this.actions.get("publishLink").setEnabled(null!=d&&!d.isRestricted());this.actions.get("tags").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("find").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("layers").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("outline").setEnabled("hidden"!=this.diagramContainer.style.visibility);this.actions.get("rename").setEnabled(null!=d&&d.isRenamable()|| "1"==urlParams.embed);this.actions.get("close").setEnabled(null!=d);this.menus.get("publish").setEnabled(null!=d&&!d.isRestricted());a=a.view.getState(a.getSelectionCell());this.actions.get("editShape").setEnabled(b&&null!=a&&null!=a.shape&&null!=a.shape.stencil)};var B=EditorUi.prototype.destroy;EditorUi.prototype.destroy=function(){null!=this.exportDialog&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);B.apply(this,arguments)};null!=window.ExportDialog&&(ExportDialog.showXmlOption= @@ -3345,43 +3346,43 @@ this.actions.get("connectionPoints").setEnabled(b);this.actions.get("copyStyle") "png"!=d&&"jpg"!=d&&"jpeg"!=d||!a.isExportToCanvas()){var q={globalVars:c.getExportVariables()};a.saveRequest(b,d,function(a,b){return new mxXmlRequest(EXPORT_URL,"format="+d+"&base64="+(b||"0")+(null!=a?"&filename="+encodeURIComponent(a):"")+"&extras="+encodeURIComponent(JSON.stringify(q))+(0<m?"&dpi="+m:"")+"&bg="+(null!=f?f:"none")+"&w="+n+"&h="+p+"&border="+g+"&xml="+encodeURIComponent(e))})}else"png"==d?a.exportImage(l,null==f||"none"==f,!0,!1,!1,g,!0,!1,null,null,m):a.exportImage(l,!1,!0,!1, !1,g,!0,!1,"jpeg");else mxUtils.alert(mxResources.get("drawingTooLarge"))}});EditorUi.prototype.getDiagramTextContent=function(){this.editor.graph.setEnabled(!1);var a=this.editor.graph,b="";if(null!=this.pages)for(var d=0;d<this.pages.length;d++){var f=a;this.currentPage!=this.pages[d]&&(f=this.createTemporaryGraph(a.getStylesheet()),f.model.setRoot(this.pages[d].root));b+=this.pages[d].getName()+" "+f.getIndexableText()+" "}else b=a.getIndexableText();this.editor.graph.setEnabled(!0);return b}; EditorUi.prototype.showRemotelyStoredLibrary=function(a){var b={},c=document.createElement("div");c.style.whiteSpace="nowrap";var d=document.createElement("h3");mxUtils.write(d,mxUtils.htmlEntities(a));d.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:12px";c.appendChild(d);var f=document.createElement("div");f.style.cssText="border:1px solid lightGray;overflow: auto;height:300px";f.innerHTML='<div style="text-align:center;padding:8px;"><img src="/images/spin.gif"></div>'; -var g={};try{var l=mxSettings.getCustomLibraries();for(a=0;a<l.length;a++){var m=l[a];if("R"==m.substring(0,1)){var p=JSON.parse(decodeURIComponent(m.substring(1)));g[p[0]]={id:p[0],title:p[1],downloadUrl:p[2]}}}}catch(H){}this.remoteInvoke("getCustomLibraries",null,null,function(a){f.innerHTML="";if(0==a.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var c=0;c<a.length;c++){var d=a[c];g[d.id]&& +var g={};try{var l=mxSettings.getCustomLibraries();for(a=0;a<l.length;a++){var m=l[a];if("R"==m.substring(0,1)){var p=JSON.parse(decodeURIComponent(m.substring(1)));g[p[0]]={id:p[0],title:p[1],downloadUrl:p[2]}}}}catch(I){}this.remoteInvoke("getCustomLibraries",null,null,function(a){f.innerHTML="";if(0==a.length)f.innerHTML='<div style="text-align:center;padding-top:20px;color:gray;">'+mxUtils.htmlEntities(mxResources.get("noLibraries"))+"</div>";else for(var c=0;c<a.length;c++){var d=a[c];g[d.id]&& (b[d.id]=d);var e=this.addCheckbox(f,d.title,g[d.id]);(function(a,c){mxEvent.addListener(c,"change",function(){this.checked?b[a.id]=a:delete b[a.id]})})(d,e)}},mxUtils.bind(this,function(a){f.innerHTML="";var b=document.createElement("div");b.style.padding="8px";b.style.textAlign="center";mxUtils.write(b,mxResources.get("error")+": ");mxUtils.write(b,null!=a&&null!=a.message?a.message:mxResources.get("unknownError"));f.appendChild(b)}));c.appendChild(f);c=new CustomDialog(this,c,mxUtils.bind(this, -function(){this.spinner.spin(document.body,mxResources.get("loading"));var a=0,c;for(c in b)null==g[c]&&(a++,mxUtils.bind(this,function(b){this.remoteInvoke("getFileContent",[b.downloadUrl],null,mxUtils.bind(this,function(c){a--;0==a&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,c,b))}catch(v){this.handleError(v,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){a--;0==a&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(b[c])); +function(){this.spinner.spin(document.body,mxResources.get("loading"));var a=0,c;for(c in b)null==g[c]&&(a++,mxUtils.bind(this,function(b){this.remoteInvoke("getFileContent",[b.downloadUrl],null,mxUtils.bind(this,function(c){a--;0==a&&this.spinner.stop();try{this.loadLibrary(new RemoteLibrary(this,c,b))}catch(t){this.handleError(t,mxResources.get("errorLoadingFile"))}}),mxUtils.bind(this,function(){a--;0==a&&this.spinner.stop();this.handleError(null,mxResources.get("errorLoadingFile"))}))})(b[c])); for(c in g)b[c]||this.closeLibrary(new RemoteLibrary(this,null,g[c]));0==a&&this.spinner.stop()}),null,null,"https://desk.draw.io/support/solutions/articles/16000092763");this.showDialog(c.container,340,375,!0,!0,null,null,null,null,!0)};EditorUi.prototype.remoteInvokableFns={getDiagramTextContent:{isAsync:!1}};EditorUi.prototype.remoteInvokeCallbacks=[];EditorUi.prototype.remoteInvokeQueue=[];EditorUi.prototype.handleRemoteInvokeReady=function(a){this.remoteWin=a;for(var b=0;b<this.remoteInvokeQueue.length;b++)a.postMessage(this.remoteInvokeQueue[b], "*");this.remoteInvokeQueue=[]};EditorUi.prototype.handleRemoteInvokeResponse=function(a){var b=a.msgMarkers,c=this.remoteInvokeCallbacks[b.callbackId];if(null==c)throw Error("No callback for "+(null!=b?b.callbackId:"null"));a.error?c.error&&c.error(a.error.errResp):c.callback&&c.callback.apply(this,a.resp);this.remoteInvokeCallbacks[b.callbackId]=null};EditorUi.prototype.remoteInvoke=function(a,b,d,f,l){var c=!0,e=window.setTimeout(mxUtils.bind(this,function(){c=!1;l({code:App.ERROR_TIMEOUT,message:mxResources.get("timeout")})}), this.timeout),k=mxUtils.bind(this,function(){window.clearTimeout(e);c&&f.apply(this,arguments)});d=d||{};d.callbackId=this.remoteInvokeCallbacks.length;this.remoteInvokeCallbacks.push({callback:k,error:l});a=JSON.stringify({event:"remoteInvoke",funtionName:a,functionArgs:b,msgMarkers:d});null!=this.remoteWin?this.remoteWin.postMessage(a,"*"):this.remoteInvokeQueue.push(a)};EditorUi.prototype.handleRemoteInvoke=function(a){var b=mxUtils.bind(this,function(b,c){var d={event:"remoteInvokeResponse",msgMarkers:a.msgMarkers}; -null!=c?d.error={errResp:c}:null!=b&&(d.resp=b);this.remoteWin.postMessage(JSON.stringify(d),"*")});try{var c=a.funtionName,d=this.remoteInvokableFns[c];if(null!=d&&"function"===typeof this[c]){var f=a.functionArgs;Array.isArray(f)||(f=[]);if(d.isAsync)f.push(function(){b(Array.prototype.slice.apply(arguments))}),f.push(function(a){b(null,a||"Unkown Error")}),this[c].apply(this,f);else{var g=this[c].apply(this,f);b([g])}}else b(null,"Invalid Call: "+c+" is not found.")}catch(A){b(null,"Invalid Call: An error occured, "+ -A.message)}};EditorUi.prototype.openDatabase=function(a,b){if(null==this.database){var c=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=c)try{var d=c.open("database","1.0");d.onupgradeneeded=function(a){a.target.result.createObjectStore("objects",{keyPath:"key"})};d.onsuccess=mxUtils.bind(this,function(b){this.database=b.target.result;a(this.database)});d.onerror=b}catch(n){b(n)}else b()}else a(this.database)};EditorUi.prototype.setDatabaseItem=function(a,b,d,f){this.openDatabase(mxUtils.bind(this, -function(c){c=c.transaction(["objects"],"readwrite").objectStore("objects").put({key:a,data:b});c.onsuccess=d;c.onerror=f}),f)};EditorUi.prototype.removeDatabaseItem=function(a,b,d){this.openDatabase(mxUtils.bind(this,function(c){c=c.transaction(["objects"],"readwrite").objectStore("objects")["delete"](a);c.onsuccess=b;c.onerror=d}),d)};EditorUi.prototype.getDatabaseItems=function(a,b){this.openDatabase(mxUtils.bind(this,function(c){c=c.transaction(["objects"],"readwrite").objectStore("objects").openCursor(IDBKeyRange.lowerBound(0)); -var d=[];c.onsuccess=function(b){null==b.target.result?a(d):(d.push(b.target.result.value),b.target.result["continue"]())};c.onerror=b}),b)};EditorUi.prototype.commentsSupported=function(){var a=this.getCurrentFile();return null!=a?a.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsRefreshNeeded():!0};EditorUi.prototype.commentsSaveNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsSaveNeeded():!1}; -EditorUi.prototype.getComments=function(a,b){var c=this.getCurrentFile();null!=c?c.getComments(a,b):a([])};EditorUi.prototype.addComment=function(a,b,d){var c=this.getCurrentFile();null!=c?c.addComment(a,b,d):b(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var a=this.getCurrentFile();return null!=a?a.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var a=this.getCurrentFile();return null!=a?a.canComment():!0};EditorUi.prototype.newComment=function(a,b){var c=this.getCurrentFile(); -return null!=c?c.newComment(a,b):new DrawioComment(this,null,a,Date.now(),Date.now(),!1,b)};EditorUi.prototype.isRevisionHistorySupported=function(){var a=this.getCurrentFile();return null!=a&&a.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(a,b){var c=this.getCurrentFile();null!=c&&c.getRevisions?c.getRevisions(a,b):b({message:mxResources.get("unknownError")})};EditorUi.prototype.isRevisionHistoryEnabled=function(){var a=this.getCurrentFile();return null!=a&&(a.constructor== -DriveFile&&a.isEditable()||a.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(a){a.setRequestHeader("Content-Language","da, mi, en, de-DE")}})(); -var CommentsWindow=function(a,b,f,d,l,m){function p(){for(var a=t.getElementsByTagName("div"),b=0,c=0;c<a.length;c++)"none"!=a[c].style.display&&a[c].parentNode==t&&b++;H.style.display=0==b?"block":"none"}function u(a,b,c,d){function e(){b.removeChild(l);b.removeChild(m);k.style.display="block";f.style.display="block"}g={div:b,comment:a,saveCallback:c,deleteOnCancel:d};var f=b.querySelector(".geCommentTxt"),k=b.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className= +null!=c?d.error={errResp:c}:null!=b&&(d.resp=b);this.remoteWin.postMessage(JSON.stringify(d),"*")});try{var c=a.funtionName,d=this.remoteInvokableFns[c];if(null!=d&&"function"===typeof this[c]){var f=a.functionArgs;Array.isArray(f)||(f=[]);if(d.isAsync)f.push(function(){b(Array.prototype.slice.apply(arguments))}),f.push(function(a){b(null,a||"Unkown Error")}),this[c].apply(this,f);else{var g=this[c].apply(this,f);b([g])}}else b(null,"Invalid Call: "+c+" is not found.")}catch(z){b(null,"Invalid Call: An error occured, "+ +z.message)}};EditorUi.prototype.openDatabase=function(a,b){if(null==this.database){var c=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB;if(null!=c)try{var d=c.open("database","1.0");d.onupgradeneeded=function(a){a.target.result.createObjectStore("objects",{keyPath:"key"})};d.onsuccess=mxUtils.bind(this,function(b){this.database=b.target.result;a(this.database)});d.onerror=b}catch(n){null!=b&&b(n)}else null!=b&&b()}else a(this.database)};EditorUi.prototype.setDatabaseItem=function(a, +b,d,f){this.openDatabase(mxUtils.bind(this,function(c){try{var e=c.transaction(["objects"],"readwrite").objectStore("objects").put({key:a,data:b});e.onsuccess=d;e.onerror=f}catch(z){null!=f&&f(z)}}),f)};EditorUi.prototype.removeDatabaseItem=function(a,b,d){this.openDatabase(mxUtils.bind(this,function(c){c=c.transaction(["objects"],"readwrite").objectStore("objects")["delete"](a);c.onsuccess=b;c.onerror=d}),d)};EditorUi.prototype.getDatabaseItems=function(a,b){this.openDatabase(mxUtils.bind(this,function(c){try{var d= +c.transaction(["objects"],"readwrite").objectStore("objects").openCursor(IDBKeyRange.lowerBound(0)),e=[];d.onsuccess=function(b){null==b.target.result?a(e):(e.push(b.target.result.value),b.target.result["continue"]())};d.onerror=b}catch(g){null!=b&&b(g)}}),b)};EditorUi.prototype.commentsSupported=function(){var a=this.getCurrentFile();return null!=a?a.commentsSupported():!1};EditorUi.prototype.commentsRefreshNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsRefreshNeeded():!0}; +EditorUi.prototype.commentsSaveNeeded=function(){var a=this.getCurrentFile();return null!=a?a.commentsSaveNeeded():!1};EditorUi.prototype.getComments=function(a,b){var c=this.getCurrentFile();null!=c?c.getComments(a,b):a([])};EditorUi.prototype.addComment=function(a,b,d){var c=this.getCurrentFile();null!=c?c.addComment(a,b,d):b(Date.now())};EditorUi.prototype.canReplyToReplies=function(){var a=this.getCurrentFile();return null!=a?a.canReplyToReplies():!0};EditorUi.prototype.canComment=function(){var a= +this.getCurrentFile();return null!=a?a.canComment():!0};EditorUi.prototype.newComment=function(a,b){var c=this.getCurrentFile();return null!=c?c.newComment(a,b):new DrawioComment(this,null,a,Date.now(),Date.now(),!1,b)};EditorUi.prototype.isRevisionHistorySupported=function(){var a=this.getCurrentFile();return null!=a&&a.isRevisionHistorySupported()};EditorUi.prototype.getRevisions=function(a,b){var c=this.getCurrentFile();null!=c&&c.getRevisions?c.getRevisions(a,b):b({message:mxResources.get("unknownError")})}; +EditorUi.prototype.isRevisionHistoryEnabled=function(){var a=this.getCurrentFile();return null!=a&&(a.constructor==DriveFile&&a.isEditable()||a.constructor==DropboxFile)};EditorUi.prototype.getServiceName=function(){return"draw.io"};EditorUi.prototype.addRemoteServiceSecurityCheck=function(a){a.setRequestHeader("Content-Language","da, mi, en, de-DE")}})(); +var CommentsWindow=function(a,b,f,d,l,m){function p(){for(var a=v.getElementsByTagName("div"),b=0,c=0;c<a.length;c++)"none"!=a[c].style.display&&a[c].parentNode==v&&b++;I.style.display=0==b?"block":"none"}function u(a,b,c,d){function e(){b.removeChild(l);b.removeChild(m);k.style.display="block";f.style.display="block"}g={div:b,comment:a,saveCallback:c,deleteOnCancel:d};var f=b.querySelector(".geCommentTxt"),k=b.querySelector(".geCommentActionsList"),l=document.createElement("textarea");l.className= "geCommentEditTxtArea";l.style.minHeight=f.offsetHeight+"px";l.value=a.content;b.insertBefore(l,f);var m=document.createElement("div");m.className="geCommentEditBtns";var n=mxUtils.button(mxResources.get("cancel"),function(){d?(b.parentNode.removeChild(b),p()):e();g=null});n.className="geCommentEditBtn";m.appendChild(n);var q=mxUtils.button(mxResources.get("save"),function(){f.innerHTML="";a.content=l.value;mxUtils.write(f,a.content);e();c(a);g=null});mxEvent.addListener(l,"keydown",mxUtils.bind(this, -function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(q.click(),mxEvent.consume(a)):27==a.keyCode&&(n.click(),mxEvent.consume(a)))}));q.focus();q.className="geCommentEditBtn gePrimaryBtn";m.appendChild(q);b.insertBefore(m,f);k.style.display="none";f.style.display="none";l.focus()}function z(b,c){c.innerHTML="";var d=new Date(b.modifiedDate),e=a.timeSince(d);null==e&&(e=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo", -[e],"{1} ago"));c.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString())}function B(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function c(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function e(a){a.style.border="";a.removeChild(a.busyImg)}function k(b,d,f,l,m){function y(a,c,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className= -"geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,"click",function(a){c(a,b);a.preventDefault();mxEvent.consume(a)});D.appendChild(e);d&&(e.style.display="none")}function v(){function a(b){c.push(d);if(null!=b.replies)for(var e=0;e<b.replies.length;e++)d=d.nextSibling,a(b.replies[e])}var c=[],d=A;a(b);return{pdiv:d,replies:c}}function x(d,f,g,m,n){function p(){B(x);b.addReply(t,function(a){t.id=a;b.replies.push(t);e(x);g&&g()},function(b){q();c(x);a.handleError(b,null, -null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},m,n)}function q(){u(t,x,function(a){p()},!0)}var y=v().pdiv,t=a.newComment(d,a.getCurrentUser());t.pCommentId=b.id;null==b.replies&&(b.replies=[]);var x=k(t,b.replies,y,l+1);f?q():p()}if(m||!b.isResolved){H.style.display="none";var A=document.createElement("div");A.className="geCommentContainer";A.setAttribute("data-commentId",b.id);A.style.marginLeft=20*l+5+"px";b.isResolved&&"dark"!=uiTheme&&(A.style.backgroundColor="ghostWhite"); -var E=document.createElement("div");E.className="geCommentHeader";var F=document.createElement("img");F.className="geCommentUserImg";F.src=b.user.pictureUrl||Editor.userImage;E.appendChild(F);F=document.createElement("div");F.className="geCommentHeaderTxt";E.appendChild(F);var N=document.createElement("div");N.className="geCommentUsername";mxUtils.write(N,b.user.displayName||"");F.appendChild(N);N=document.createElement("div");N.className="geCommentDate";N.setAttribute("data-commentId",b.id);z(b, -N);F.appendChild(N);A.appendChild(E);E=document.createElement("div");E.className="geCommentTxt";mxUtils.write(E,b.content||"");A.appendChild(E);E=document.createElement("div");E.className="geCommentActions";var D=document.createElement("ul");D.className="geCommentActionsList";E.appendChild(D);q||0!=l&&!n||y(mxResources.get("reply"),function(){x("",!0)},b.isResolved);F=a.getCurrentUser();null==F||F.id!=b.user.id||q||(y(mxResources.get("edit"),function(){function d(){u(b,A,function(){B(A);b.editComment(b.content, -function(){e(A)},function(b){c(A);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}d()},b.isResolved),y(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){B(A);b.deleteComment(function(){for(var a=v(b).replies,c=0;c<a.length;c++)t.removeChild(a[c]);for(c=0;c<d.length;c++)if(d[c]==b){d.splice(c,1);break}H.style.display=0==t.getElementsByTagName("div").length?"block":"none"},function(b){c(A);a.handleError(b,null,null, -null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},b.isResolved));q||0!=l||y(b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function c(){var c=a.target;c.innerHTML="";b.isResolved=!b.isResolved;mxUtils.write(c,b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var d=b.isResolved?"none":"",e=v(b).replies,f="dark"==uiTheme?"transparent":b.isResolved?"ghostWhite":"white",g=0;g<e.length;g++){e[g].style.backgroundColor=f;for(var k=e[g].querySelectorAll(".geCommentAction"), -l=0;l<k.length;l++)k[l]!=c.parentNode&&(k[l].style.display=d);C||(e[g].style.display="none")}p()}b.isResolved?x(mxResources.get("reOpened")+": ",!0,c,!1,!0):x(mxResources.get("markedAsResolved"),!1,c,!0)});A.appendChild(E);null!=f?t.insertBefore(A,f.nextSibling):t.appendChild(A);for(f=0;null!=b.replies&&f<b.replies.length;f++)E=b.replies[f],E.isResolved=b.isResolved,k(E,b.replies,null,l+1,m);null!=g&&(g.comment.id==b.id?(m=b.content,b.content=g.comment.content,u(b,A,g.saveCallback,g.deleteOnCancel), -b.content=m):null==g.comment.id&&g.comment.pCommentId==b.id&&(t.appendChild(g.div),u(g.comment,g.div,g.saveCallback,g.deleteOnCancel)));return A}}var q=!a.canComment(),n=a.canReplyToReplies(),g=null,A=document.createElement("div");A.className="geCommentsWin";A.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var x=EditorUi.compactUi?"26px":"30px",t=document.createElement("div");t.className="geCommentsList";t.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke": -Dialog.backdropColor;t.style.bottom=parseInt(x)+7+"px";A.appendChild(t);var H=document.createElement("span");H.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(H,mxResources.get("noCommentsFound"));var y=document.createElement("div");y.className="geToolbarContainer geCommentsToolbar";y.style.height=x;y.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";y.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;mxClient.IS_QUIRKS&&(y.style.filter= -"none");x=document.createElement("a");x.className="geButton";mxClient.IS_QUIRKS&&(x.style.filter="none");if(!q){var F=x.cloneNode();F.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';F.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(F,"click",function(b){function d(){u(f,g,function(b){B(g);a.addComment(b,function(a){b.id=a;v.push(b);e(g)},function(b){c(g);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})}, -!0)}var f=a.newComment("",a.getCurrentUser()),g=k(f,v,null,0);d();b.preventDefault();mxEvent.consume(b)});y.appendChild(F)}F=x.cloneNode();F.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';F.setAttribute("title",mxResources.get("showResolved"));var C=!1;"dark"==uiTheme&&(F.style.filter="invert(100%)");mxEvent.addListener(F,"click",function(a){this.className=(C=!C)?"geButton geCheckedBtn":"geButton";J();a.preventDefault();mxEvent.consume(a)});y.appendChild(F);a.commentsRefreshNeeded()&& +function(a){mxEvent.isConsumed(a)||((mxEvent.isControlDown(a)||mxClient.IS_MAC&&mxEvent.isMetaDown(a))&&13==a.keyCode?(q.click(),mxEvent.consume(a)):27==a.keyCode&&(n.click(),mxEvent.consume(a)))}));q.focus();q.className="geCommentEditBtn gePrimaryBtn";m.appendChild(q);b.insertBefore(m,f);k.style.display="none";f.style.display="none";l.focus()}function A(b,c){c.innerHTML="";var d=new Date(b.modifiedDate),e=a.timeSince(d);null==e&&(e=mxResources.get("lessThanAMinute"));mxUtils.write(c,mxResources.get("timeAgo", +[e],"{1} ago"));c.setAttribute("title",d.toLocaleDateString()+" "+d.toLocaleTimeString())}function B(a){var b=document.createElement("img");b.className="geCommentBusyImg";b.src=IMAGE_PATH+"/spin.gif";a.appendChild(b);a.busyImg=b}function c(a){a.style.border="1px solid red";a.removeChild(a.busyImg)}function e(a){a.style.border="";a.removeChild(a.busyImg)}function k(b,d,f,l,m){function t(a,c,d){var e=document.createElement("li");e.className="geCommentAction";var f=document.createElement("a");f.className= +"geCommentActionLnk";mxUtils.write(f,a);e.appendChild(f);mxEvent.addListener(f,"click",function(a){c(a,b);a.preventDefault();mxEvent.consume(a)});G.appendChild(e);d&&(e.style.display="none")}function y(){function a(b){c.push(d);if(null!=b.replies)for(var e=0;e<b.replies.length;e++)d=d.nextSibling,a(b.replies[e])}var c=[],d=z;a(b);return{pdiv:d,replies:c}}function x(d,f,g,m,p){function n(){B(x);b.addReply(v,function(a){v.id=a;b.replies.push(v);e(x);g&&g()},function(b){q();c(x);a.handleError(b,null, +null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))},m,p)}function q(){u(v,x,function(a){n()},!0)}var t=y().pdiv,v=a.newComment(d,a.getCurrentUser());v.pCommentId=b.id;null==b.replies&&(b.replies=[]);var x=k(v,b.replies,t,l+1);f?q():n()}if(m||!b.isResolved){I.style.display="none";var z=document.createElement("div");z.className="geCommentContainer";z.setAttribute("data-commentId",b.id);z.style.marginLeft=20*l+5+"px";b.isResolved&&"dark"!=uiTheme&&(z.style.backgroundColor="ghostWhite"); +var D=document.createElement("div");D.className="geCommentHeader";var F=document.createElement("img");F.className="geCommentUserImg";F.src=b.user.pictureUrl||Editor.userImage;D.appendChild(F);F=document.createElement("div");F.className="geCommentHeaderTxt";D.appendChild(F);var N=document.createElement("div");N.className="geCommentUsername";mxUtils.write(N,b.user.displayName||"");F.appendChild(N);N=document.createElement("div");N.className="geCommentDate";N.setAttribute("data-commentId",b.id);A(b, +N);F.appendChild(N);z.appendChild(D);D=document.createElement("div");D.className="geCommentTxt";mxUtils.write(D,b.content||"");z.appendChild(D);D=document.createElement("div");D.className="geCommentActions";var G=document.createElement("ul");G.className="geCommentActionsList";D.appendChild(G);q||0!=l&&!n||t(mxResources.get("reply"),function(){x("",!0)},b.isResolved);F=a.getCurrentUser();null==F||F.id!=b.user.id||q||(t(mxResources.get("edit"),function(){function d(){u(b,z,function(){B(z);b.editComment(b.content, +function(){e(z)},function(b){c(z);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})}d()},b.isResolved),t(mxResources.get("delete"),function(){a.confirm(mxResources.get("areYouSure"),function(){B(z);b.deleteComment(function(){for(var a=y(b).replies,c=0;c<a.length;c++)v.removeChild(a[c]);for(c=0;c<d.length;c++)if(d[c]==b){d.splice(c,1);break}I.style.display=0==v.getElementsByTagName("div").length?"block":"none"},function(b){c(z);a.handleError(b,null,null, +null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})})},b.isResolved));q||0!=l||t(b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"),function(a){function c(){var c=a.target;c.innerHTML="";b.isResolved=!b.isResolved;mxUtils.write(c,b.isResolved?mxResources.get("reopen"):mxResources.get("resolve"));for(var d=b.isResolved?"none":"",e=y(b).replies,f="dark"==uiTheme?"transparent":b.isResolved?"ghostWhite":"white",g=0;g<e.length;g++){e[g].style.backgroundColor=f;for(var k=e[g].querySelectorAll(".geCommentAction"), +l=0;l<k.length;l++)k[l]!=c.parentNode&&(k[l].style.display=d);C||(e[g].style.display="none")}p()}b.isResolved?x(mxResources.get("reOpened")+": ",!0,c,!1,!0):x(mxResources.get("markedAsResolved"),!1,c,!0)});z.appendChild(D);null!=f?v.insertBefore(z,f.nextSibling):v.appendChild(z);for(f=0;null!=b.replies&&f<b.replies.length;f++)D=b.replies[f],D.isResolved=b.isResolved,k(D,b.replies,null,l+1,m);null!=g&&(g.comment.id==b.id?(m=b.content,b.content=g.comment.content,u(b,z,g.saveCallback,g.deleteOnCancel), +b.content=m):null==g.comment.id&&g.comment.pCommentId==b.id&&(v.appendChild(g.div),u(g.comment,g.div,g.saveCallback,g.deleteOnCancel)));return z}}var q=!a.canComment(),n=a.canReplyToReplies(),g=null,z=document.createElement("div");z.className="geCommentsWin";z.style.background="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;var x=EditorUi.compactUi?"26px":"30px",v=document.createElement("div");v.className="geCommentsList";v.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke": +Dialog.backdropColor;v.style.bottom=parseInt(x)+7+"px";z.appendChild(v);var I=document.createElement("span");I.style.cssText="display:none;padding-top:10px;text-align:center;";mxUtils.write(I,mxResources.get("noCommentsFound"));var y=document.createElement("div");y.className="geToolbarContainer geCommentsToolbar";y.style.height=x;y.style.padding=EditorUi.compactUi?"4px 0px 3px 0px":"1px";y.style.backgroundColor="white"==Dialog.backdropColor?"whiteSmoke":Dialog.backdropColor;mxClient.IS_QUIRKS&&(y.style.filter= +"none");x=document.createElement("a");x.className="geButton";mxClient.IS_QUIRKS&&(x.style.filter="none");if(!q){var F=x.cloneNode();F.innerHTML='<div class="geSprite geSprite-plus" style="display:inline-block;"></div>';F.setAttribute("title",mxResources.get("create")+"...");mxEvent.addListener(F,"click",function(b){function d(){u(f,g,function(b){B(g);a.addComment(b,function(a){b.id=a;t.push(b);e(g)},function(b){c(g);d();a.handleError(b,null,null,null,mxUtils.htmlEntities(mxResources.get("objectNotFound")))})}, +!0)}var f=a.newComment("",a.getCurrentUser()),g=k(f,t,null,0);d();b.preventDefault();mxEvent.consume(b)});y.appendChild(F)}F=x.cloneNode();F.innerHTML='<img src="'+IMAGE_PATH+'/check.png" style="width: 16px; padding: 2px;">';F.setAttribute("title",mxResources.get("showResolved"));var C=!1;"dark"==uiTheme&&(F.style.filter="invert(100%)");mxEvent.addListener(F,"click",function(a){this.className=(C=!C)?"geButton geCheckedBtn":"geButton";J();a.preventDefault();mxEvent.consume(a)});y.appendChild(F);a.commentsRefreshNeeded()&& (F=x.cloneNode(),F.innerHTML='<img src="'+IMAGE_PATH+'/update16.png" style="width: 16px; padding: 2px;">',F.setAttribute("title",mxResources.get("refresh")),"dark"==uiTheme&&(F.style.filter="invert(100%)"),mxEvent.addListener(F,"click",function(a){J();a.preventDefault();mxEvent.consume(a)}),y.appendChild(F));a.commentsSaveNeeded()&&(x=x.cloneNode(),x.innerHTML='<img src="'+IMAGE_PATH+'/save.png" style="width: 20px; padding: 2px;">',x.setAttribute("title",mxResources.get("save")),"dark"==uiTheme&& -(x.style.filter="invert(100%)"),mxEvent.addListener(x,"click",function(a){m();a.preventDefault();mxEvent.consume(a)}),y.appendChild(x));A.appendChild(y);var v=[],J=mxUtils.bind(this,function(){this.hasError=!1;if(null!=g)try{g.div=g.div.cloneNode(!0);var b=g.div.querySelector(".geCommentEditTxtArea"),c=g.div.querySelector(".geCommentEditBtns");g.comment.content=b.value;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}catch(D){a.handleError(D)}t.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+ -IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";n=a.canReplyToReplies();a.commentsSupported()?a.getComments(function(a){function b(a){if(null!=a){a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});for(var c=0;c<a.length;c++)b(a[c].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});t.innerHTML="";t.appendChild(H);H.style.display="block";v=a;for(a=0;a<v.length;a++)b(v[a].replies), -k(v[a],v,null,0,C);null!=g&&null==g.comment.id&&null==g.comment.pCommentId&&(t.appendChild(g.div),u(g.comment,g.div,g.saveCallback,g.deleteOnCancel))},mxUtils.bind(this,function(a){t.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(a&&a.message?": "+a.message:""));this.hasError=!0})):t.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});J();this.refreshComments=J;y=mxUtils.bind(this,function(){function a(b){var d=c[b.id];if(null!=d)for(z(b,d),d=0;null!=b.replies&&d<b.replies.length;d++)a(b.replies[d])} -if(this.window.isVisible()){for(var b=t.querySelectorAll(".geCommentDate"),c={},d=0;d<b.length;d++){var e=b[d];c[e.getAttribute("data-commentId")]=e}for(d=0;d<v.length;d++)a(v[d])}});setInterval(y,6E4);this.refreshCommentsTime=y;this.window=new mxWindow(mxResources.get("comments"),A,b,f,d,l,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW, +(x.style.filter="invert(100%)"),mxEvent.addListener(x,"click",function(a){m();a.preventDefault();mxEvent.consume(a)}),y.appendChild(x));z.appendChild(y);var t=[],J=mxUtils.bind(this,function(){this.hasError=!1;if(null!=g)try{g.div=g.div.cloneNode(!0);var b=g.div.querySelector(".geCommentEditTxtArea"),c=g.div.querySelector(".geCommentEditBtns");g.comment.content=b.value;b.parentNode.removeChild(b);c.parentNode.removeChild(c)}catch(E){a.handleError(E)}v.innerHTML='<div style="padding-top:10px;text-align:center;"><img src="'+ +IMAGE_PATH+'/spin.gif" valign="middle"> '+mxUtils.htmlEntities(mxResources.get("loading"))+"...</div>";n=a.canReplyToReplies();a.commentsSupported()?a.getComments(function(a){function b(a){if(null!=a){a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});for(var c=0;c<a.length;c++)b(a[c].replies)}}a.sort(function(a,b){return new Date(a.modifiedDate)-new Date(b.modifiedDate)});v.innerHTML="";v.appendChild(I);I.style.display="block";t=a;for(a=0;a<t.length;a++)b(t[a].replies), +k(t[a],t,null,0,C);null!=g&&null==g.comment.id&&null==g.comment.pCommentId&&(v.appendChild(g.div),u(g.comment,g.div,g.saveCallback,g.deleteOnCancel))},mxUtils.bind(this,function(a){v.innerHTML=mxUtils.htmlEntities(mxResources.get("error")+(a&&a.message?": "+a.message:""));this.hasError=!0})):v.innerHTML=mxUtils.htmlEntities(mxResources.get("error"))});J();this.refreshComments=J;y=mxUtils.bind(this,function(){function a(b){var d=c[b.id];if(null!=d)for(A(b,d),d=0;null!=b.replies&&d<b.replies.length;d++)a(b.replies[d])} +if(this.window.isVisible()){for(var b=v.querySelectorAll(".geCommentDate"),c={},d=0;d<b.length;d++){var e=b[d];c[e.getAttribute("data-commentId")]=e}for(d=0;d<t.length;d++)a(t[d])}});setInterval(y,6E4);this.refreshCommentsTime=y;this.window=new mxWindow(mxResources.get("comments"),z,b,f,d,l,!0,!0);this.window.minimumSize=new mxRectangle(0,0,300,200);this.window.destroyOnClose=!1;this.window.setMaximizable(!1);this.window.setResizable(!0);this.window.setClosable(!0);this.window.setVisible(!0);this.window.addListener(mxEvent.SHOW, mxUtils.bind(this,function(){this.window.fit()}));this.window.setLocation=function(a,b){var c=window.innerHeight||document.body.clientHeight||document.documentElement.clientHeight;a=Math.max(0,Math.min(a,(window.innerWidth||document.body.clientWidth||document.documentElement.clientWidth)-this.table.clientWidth));b=Math.max(0,Math.min(b,c-this.table.clientHeight-48));this.getX()==a&&this.getY()==b||mxWindow.prototype.setLocation.apply(this,arguments)};var M=mxUtils.bind(this,function(){var a=this.window.getX(), -b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",M);this.destroy=function(){mxEvent.removeListener(window,"resize",M);this.window.destroy()}},ConfirmDialog=function(a,b,f,d,l,m,p,u,z,B,c){var e=document.createElement("div");e.style.textAlign="center";c=null!=c?c:44;var k=document.createElement("div");k.style.padding="6px";k.style.overflow="auto";k.style.maxHeight=c+"px";k.style.lineHeight="1.2em";mxClient.IS_QUIRKS&&(k.style.height="60px");mxUtils.write(k,b); +b=this.window.getY();this.window.setLocation(a,b)});mxEvent.addListener(window,"resize",M);this.destroy=function(){mxEvent.removeListener(window,"resize",M);this.window.destroy()}},ConfirmDialog=function(a,b,f,d,l,m,p,u,A,B,c){var e=document.createElement("div");e.style.textAlign="center";c=null!=c?c:44;var k=document.createElement("div");k.style.padding="6px";k.style.overflow="auto";k.style.maxHeight=c+"px";k.style.lineHeight="1.2em";mxClient.IS_QUIRKS&&(k.style.height="60px");mxUtils.write(k,b); e.appendChild(k);null!=B&&(k=document.createElement("div"),k.style.padding="6px 0 6px 0",b=document.createElement("img"),b.setAttribute("src",B),k.appendChild(b),e.appendChild(k));B=document.createElement("div");B.style.textAlign="center";B.style.whiteSpace="nowrap";var q=document.createElement("input");q.setAttribute("type","checkbox");m=mxUtils.button(m||mxResources.get("cancel"),function(){a.hideDialog();null!=d&&d(q.checked)});m.className="geBtn";null!=u&&(m.innerHTML=u+"<br>"+m.innerHTML,m.style.paddingBottom= -"8px",m.style.paddingTop="8px",m.style.height="auto",m.style.width="40%");a.editor.cancelFirst&&B.appendChild(m);var n=mxUtils.button(l||mxResources.get("ok"),function(){a.hideDialog();null!=f&&f(q.checked)});B.appendChild(n);null!=p?(n.innerHTML=p+"<br>"+n.innerHTML+"<br>",n.style.paddingBottom="8px",n.style.paddingTop="8px",n.style.height="auto",n.className="geBtn",n.style.width="40%"):n.className="geBtn gePrimaryBtn";a.editor.cancelFirst||B.appendChild(m);e.appendChild(B);z?(B.style.marginTop= +"8px",m.style.paddingTop="8px",m.style.height="auto",m.style.width="40%");a.editor.cancelFirst&&B.appendChild(m);var n=mxUtils.button(l||mxResources.get("ok"),function(){a.hideDialog();null!=f&&f(q.checked)});B.appendChild(n);null!=p?(n.innerHTML=p+"<br>"+n.innerHTML+"<br>",n.style.paddingBottom="8px",n.style.paddingTop="8px",n.style.height="auto",n.className="geBtn",n.style.width="40%"):n.className="geBtn gePrimaryBtn";a.editor.cancelFirst||B.appendChild(m);e.appendChild(B);A?(B.style.marginTop= "10px",k=document.createElement("p"),k.style.marginTop="20px",k.appendChild(q),l=document.createElement("span"),mxUtils.write(l," "+mxResources.get("rememberThisSetting")),k.appendChild(l),e.appendChild(k),mxEvent.addListener(l,"click",function(a){q.checked=!q.checked;mxEvent.consume(a)})):B.style.marginTop="12px";this.init=function(){n.focus()};this.container=e};function DiagramPage(a,b){this.node=a;null!=b?this.node.setAttribute("id",b):null==this.getId()&&this.node.setAttribute("id",Editor.guid())}DiagramPage.prototype.node=null;DiagramPage.prototype.root=null;DiagramPage.prototype.viewState=null;DiagramPage.prototype.getId=function(){return this.node.getAttribute("id")};DiagramPage.prototype.getName=function(){return this.node.getAttribute("name")}; DiagramPage.prototype.setName=function(a){null==a?this.node.removeAttribute("name"):this.node.setAttribute("name",a)};function RenamePage(a,b,f){this.ui=a;this.page=b;this.previous=this.name=f}RenamePage.prototype.execute=function(){var a=this.page.getName();this.page.setName(this.previous);this.name=this.previous;this.previous=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageRenamed"))}; function MovePage(a,b,f){this.ui=a;this.oldIndex=b;this.newIndex=f}MovePage.prototype.execute=function(){this.ui.pages.splice(this.newIndex,0,this.ui.pages.splice(this.oldIndex,1)[0]);var a=this.oldIndex;this.oldIndex=this.newIndex;this.newIndex=a;this.ui.editor.graph.updatePlaceholders();this.ui.editor.fireEvent(new mxEventObject("pageMoved"))}; @@ -3396,7 +3397,7 @@ this.tabContainer.style.height=null==this.fileNode||null==this.pages||1==this.pa a.container.scrollTop=0,this.chromelessResize())):(a.container.scrollLeft=a.view.translate.x*a.view.scale+b.viewState.scrollLeft,a.container.scrollTop=a.view.translate.y*a.view.scale+b.viewState.scrollTop),f=b);null!=this.actions.layersWindow&&this.actions.layersWindow.refreshLayers();"undefined"!==typeof MathJax&&"undefined"!==typeof MathJax.Hub?1!=MathJax.Hub.queue.pending||null==this.editor||this.editor.graph.mathEnabled||MathJax.Hub.Queue(mxUtils.bind(this,function(){null!=this.editor&&this.editor.graph.refresh()})): "undefined"===typeof Editor.MathJaxClear||null!=this.editor&&this.editor.graph.mathEnabled||Editor.MathJaxClear()});this.editor.graph.model.addListener(mxEvent.CHANGE,mxUtils.bind(this,function(a,b){for(var f=b.getProperty("edit").changes,l=0;l<f.length;l++)if(f[l]instanceof SelectPage||f[l]instanceof RenamePage||f[l]instanceof MovePage||f[l]instanceof mxRootChange){d();break}}));null!=this.toolbar&&this.editor.addListener("pageSelected",this.toolbar.updateZoom)}}; EditorUi.prototype.restoreViewState=function(a,b,f){a=null!=a?this.getPageById(a.getId()):null;var d=this.editor.graph;null!=a&&null!=this.currentPage&&null!=this.pages&&(a!=this.currentPage?this.selectPage(a,!0,b):(d.setViewState(b),this.editor.updateGraphComponents(),d.view.revalidate(),d.sizeDidChange()),d.container.scrollLeft=d.view.translate.x*d.view.scale+b.scrollLeft,d.container.scrollTop=d.view.translate.y*d.view.scale+b.scrollTop,d.restoreSelection(f))}; -Graph.prototype.createViewState=function(a){var b=a.getAttribute("page"),f=parseFloat(a.getAttribute("pageScale")),d=parseFloat(a.getAttribute("pageWidth")),l=parseFloat(a.getAttribute("pageHeight")),m=a.getAttribute("background"),p=a.getAttribute("backgroundImage"),p=null!=p&&0<p.length?JSON.parse(p):null,u=a.getAttribute("extFonts");if(u)try{u=u.split("|").map(function(a){a=a.split("^");return{name:a[0],url:a[1]}})}catch(z){console.log("ExtFonts format error: "+z.message)}return{gridEnabled:"0"!= +Graph.prototype.createViewState=function(a){var b=a.getAttribute("page"),f=parseFloat(a.getAttribute("pageScale")),d=parseFloat(a.getAttribute("pageWidth")),l=parseFloat(a.getAttribute("pageHeight")),m=a.getAttribute("background"),p=a.getAttribute("backgroundImage"),p=null!=p&&0<p.length?JSON.parse(p):null,u=a.getAttribute("extFonts");if(u)try{u=u.split("|").map(function(a){a=a.split("^");return{name:a[0],url:a[1]}})}catch(A){console.log("ExtFonts format error: "+A.message)}return{gridEnabled:"0"!= a.getAttribute("grid"),gridSize:parseFloat(a.getAttribute("gridSize"))||mxGraph.prototype.gridSize,guidesEnabled:"0"!=a.getAttribute("guides"),foldingEnabled:"0"!=a.getAttribute("fold"),shadowVisible:"1"==a.getAttribute("shadow"),pageVisible:this.isLightboxView()?!1:null!=b?"0"!=b:this.defaultPageVisible,background:null!=m&&0<m.length?m:null,backgroundImage:null!=p?new mxImage(p.src,p.width,p.height):null,pageScale:isNaN(f)?mxGraph.prototype.pageScale:f,pageFormat:isNaN(d)||isNaN(l)?"undefined"=== typeof mxSettings?mxGraph.prototype.pageFormat:mxSettings.getPageFormat():new mxRectangle(0,0,d,l),tooltips:"0"!=a.getAttribute("tooltips"),connect:"0"!=a.getAttribute("connect"),arrows:"0"!=a.getAttribute("arrows"),mathEnabled:"1"==a.getAttribute("math"),selectionCells:null,defaultParent:null,scrollbars:this.defaultScrollbars,scale:1,extFonts:u||[]}}; Graph.prototype.saveViewState=function(a,b,f){f||(b.setAttribute("grid",null==a||a.gridEnabled?"1":"0"),b.setAttribute("gridSize",null!=a?a.gridSize:mxGraph.prototype.gridSize),b.setAttribute("guides",null==a||a.guidesEnabled?"1":"0"),b.setAttribute("tooltips",null==a||a.tooltips?"1":"0"),b.setAttribute("connect",null==a||a.connect?"1":"0"),b.setAttribute("arrows",null==a||a.arrows?"1":"0"),b.setAttribute("page",null==a&&this.defaultPageVisible||null!=a&&a.pageVisible?"1":"0"),b.setAttribute("fold", @@ -3425,8 +3426,8 @@ EditorUi.prototype.updateTabContainer=function(){if(null!=this.tabContainer&&nul f)/this.pages.length)+1),l=null,m=0;m<this.pages.length;m++)mxUtils.bind(this,function(d,c){this.pages[d]==this.currentPage?(c.className="geActivePage",c.style.backgroundColor="dark"==uiTheme?"#2a2a2a":"#fff"):c.className="geInactivePage";c.setAttribute("draggable","true");mxEvent.addListener(c,"dragstart",mxUtils.bind(this,function(b){a.isEnabled()?(mxClient.IS_FF&&b.dataTransfer.setData("Text","<diagram/>"),l=d):mxEvent.consume(b)}));mxEvent.addListener(c,"dragend",mxUtils.bind(this,function(a){l= null;a.stopPropagation();a.preventDefault()}));mxEvent.addListener(c,"dragover",mxUtils.bind(this,function(a){null!=l&&(a.dataTransfer.dropEffect="move");a.stopPropagation();a.preventDefault()}));mxEvent.addListener(c,"drop",mxUtils.bind(this,function(a){null!=l&&d!=l&&this.movePage(l,d);a.stopPropagation();a.preventDefault()}));b.appendChild(c)})(m,this.createTabForPage(this.pages[m],d,this.pages[m]!=this.currentPage,m+1));this.tabContainer.innerHTML="";this.tabContainer.appendChild(b);d=this.createPageMenuTab(); this.tabContainer.appendChild(d);d=null;this.isPageInsertTabVisible()&&(d=this.createPageInsertTab(),this.tabContainer.appendChild(d));if(b.clientWidth>this.tabContainer.clientWidth-f){null!=d&&(d.style.position="absolute",d.style.right="0px",b.style.marginRight="30px");var p=this.createControlTab(4," ❮ ");p.style.position="absolute";p.style.right=this.editor.chromeless?"29px":"55px";p.style.fontSize="13pt";this.tabContainer.appendChild(p);var u=this.createControlTab(4," ❯"); -u.style.position="absolute";u.style.right=this.editor.chromeless?"0px":"29px";u.style.fontSize="13pt";this.tabContainer.appendChild(u);var z=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));b.style.width=z+"px";mxEvent.addListener(p,"click",mxUtils.bind(this,function(a){b.scrollLeft-=Math.max(20,z-20);mxUtils.setOpacity(p,0<b.scrollLeft?100:50);mxUtils.setOpacity(u,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(p,0<b.scrollLeft?100: -50);mxUtils.setOpacity(u,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.addListener(u,"click",mxUtils.bind(this,function(a){b.scrollLeft+=Math.max(20,z-20);mxUtils.setOpacity(p,0<b.scrollLeft?100:50);mxUtils.setOpacity(u,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()}; +u.style.position="absolute";u.style.right=this.editor.chromeless?"0px":"29px";u.style.fontSize="13pt";this.tabContainer.appendChild(u);var A=Math.max(0,this.tabContainer.clientWidth-(this.editor.chromeless?86:116));b.style.width=A+"px";mxEvent.addListener(p,"click",mxUtils.bind(this,function(a){b.scrollLeft-=Math.max(20,A-20);mxUtils.setOpacity(p,0<b.scrollLeft?100:50);mxUtils.setOpacity(u,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}));mxUtils.setOpacity(p,0<b.scrollLeft?100: +50);mxUtils.setOpacity(u,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.addListener(u,"click",mxUtils.bind(this,function(a){b.scrollLeft+=Math.max(20,A-20);mxUtils.setOpacity(p,0<b.scrollLeft?100:50);mxUtils.setOpacity(u,b.scrollLeft<b.scrollWidth-b.clientWidth?100:50);mxEvent.consume(a)}))}}};EditorUi.prototype.isPageInsertTabVisible=function(){return 1==urlParams.embed||null!=this.getCurrentFile()&&this.getCurrentFile().isEditable()}; EditorUi.prototype.createTab=function(a){var b=document.createElement("div");b.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";b.style.whiteSpace="nowrap";b.style.boxSizing="border-box";b.style.position="relative";b.style.overflow="hidden";b.style.textAlign="center";b.style.marginLeft="-1px";b.style.height=this.tabContainer.clientHeight+"px";b.style.padding="12px 4px 8px 4px";b.style.border="dark"==uiTheme?"1px solid #505759":"1px solid #e8eaed";b.style.borderTopStyle="none";b.style.borderBottomStyle= "none";b.style.backgroundColor=this.tabContainer.style.backgroundColor;b.style.cursor="move";b.style.color="gray";a&&(mxEvent.addListener(b,"mouseenter",mxUtils.bind(this,function(a){this.editor.graph.isMouseDown||(b.style.backgroundColor="dark"==uiTheme?"black":"#e8eaed",mxEvent.consume(a))})),mxEvent.addListener(b,"mouseleave",mxUtils.bind(this,function(a){b.style.backgroundColor=this.tabContainer.style.backgroundColor;mxEvent.consume(a)})));return b}; EditorUi.prototype.createControlTab=function(a,b){var f=this.createTab(!0);f.style.lineHeight=this.tabContainerHeight+"px";f.style.paddingTop=a+"px";f.style.cursor="pointer";f.style.width="30px";f.innerHTML=b;null!=f.firstChild&&null!=f.firstChild.style&&mxUtils.setOpacity(f.firstChild,40);return f}; @@ -3436,7 +3437,7 @@ function(){this.removePage(f)}),b),a.addItem(mxResources.get("rename"),null,mxUt mxEvent.getClientX(a),l=mxEvent.getClientY(a);b.popup(d,l,null,a);this.setCurrentMenu(b);mxEvent.consume(a)}));return a};EditorUi.prototype.createPageInsertTab=function(){var a=this.createControlTab(4,'<div class="geSprite geSprite-plus" style="display:inline-block;width:21px;height:21px;"></div>');a.setAttribute("title",mxResources.get("insertPage"));mxEvent.addListener(a,"click",mxUtils.bind(this,function(a){this.insertPage();mxEvent.consume(a)}));return a}; EditorUi.prototype.createTabForPage=function(a,b,f,d){f=this.createTab(f);var l=a.getName()||mxResources.get("untitled"),m=a.getId();f.setAttribute("title",l+(null!=m?" ("+m+")":"")+" ["+d+"]");mxUtils.write(f,l);f.style.maxWidth=b+"px";f.style.width=b+"px";this.addTabListeners(a,f);42<b&&(f.style.textOverflow="ellipsis");return f}; EditorUi.prototype.addTabListeners=function(a,b){mxEvent.disableContextMenu(b);var f=this.editor.graph;mxEvent.addListener(b,"dblclick",mxUtils.bind(this,function(b){this.renamePage(a);mxEvent.consume(b)}));var d=!1,l=!1;mxEvent.addGestureListeners(b,mxUtils.bind(this,function(b){d=null!=this.currentMenu;l=a==this.currentPage;f.isMouseDown||l||this.selectPage(a)}),null,mxUtils.bind(this,function(m){if(f.isEnabled()&&!f.isMouseDown&&(mxEvent.isTouchEvent(m)&&l||mxEvent.isPopupTrigger(m))){f.popupMenuHandler.hideMenu(); -this.hideCurrentMenu();if(!mxEvent.isTouchEvent(m)||!d){var p=new mxPopupMenu(this.createPageMenu(a));p.div.className+=" geMenubarMenu";p.smartSeparators=!0;p.showDisabled=!0;p.autoExpand=!0;p.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(p,arguments);this.resetCurrentMenu();p.destroy()});var u=mxEvent.getClientX(m),z=mxEvent.getClientY(m);p.popup(u,z,null,m);this.setCurrentMenu(p,b)}mxEvent.consume(m)}}))}; +this.hideCurrentMenu();if(!mxEvent.isTouchEvent(m)||!d){var p=new mxPopupMenu(this.createPageMenu(a));p.div.className+=" geMenubarMenu";p.smartSeparators=!0;p.showDisabled=!0;p.autoExpand=!0;p.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(p,arguments);this.resetCurrentMenu();p.destroy()});var u=mxEvent.getClientX(m),A=mxEvent.getClientY(m);p.popup(u,A,null,m);this.setCurrentMenu(p,b)}mxEvent.consume(m)}}))}; EditorUi.prototype.getLinkForPage=function(a){if(!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp){var b=this.getCurrentFile();if(null!=b&&b.constructor!=LocalFile&&"draw.io"==this.getServiceName()){var f=this.getSearch("create title mode url drive splash state".split(" ")),f=f+((0==f.length?"?":"&")+"page-id="+a.getId());return window.location.protocol+"//"+window.location.host+"/"+f+"#"+b.getHash()}}return null}; EditorUi.prototype.createPageMenu=function(a,b){return mxUtils.bind(this,function(f,d){f.addItem(mxResources.get("insert"),null,mxUtils.bind(this,function(){this.insertPage(null,mxUtils.indexOf(this.pages,a)+1)}),d);f.addItem(mxResources.get("delete"),null,mxUtils.bind(this,function(){this.removePage(a)}),d);f.addItem(mxResources.get("rename"),null,mxUtils.bind(this,function(){this.renamePage(a,b)}),d);var l=this.getLinkForPage(a);null!=l&&(f.addSeparator(d),f.addItem(mxResources.get("link"),null, mxUtils.bind(this,function(){var a=new EmbedDialog(this,l);this.showDialog(a.container,440,240,!0,!0);a.init()}),d));f.addSeparator(d);f.addItem(mxResources.get("duplicate"),null,mxUtils.bind(this,function(){this.duplicatePage(a,mxResources.get("copyOf",[a.getName()]))}),d);mxClient.IS_CHROMEAPP||EditorUi.isElectronApp||"draw.io"!=this.getServiceName()||(f.addSeparator(d),f.addItem(mxResources.get("openInNewWindow"),null,mxUtils.bind(this,function(){this.editor.editAsNew(this.getFileData(!0,null, @@ -3445,34 +3446,34 @@ null,null,!0,!0))}),d))})};(function(){var a=EditorUi.prototype.refresh;EditorUi (function(){var a=new mxObjectCodec(new ChangePage,"ui relatedPage index neverShown page previousPage".split(" ")),b="defaultParent currentRoot scrollLeft scrollTop scale translate lastPasteXml pasteCounter".split(" ");a.afterEncode=function(a,d,l){l.setAttribute("relatedPage",d.relatedPage.getId());null==d.index&&(l.setAttribute("name",d.relatedPage.getName()),null!=d.relatedPage.viewState&&l.setAttribute("viewState",JSON.stringify(d.relatedPage.viewState,function(a,d){return 0>mxUtils.indexOf(b, a)?d:void 0})),null!=d.relatedPage.root&&a.encodeCell(d.relatedPage.root,l));return l};a.beforeDecode=function(a,b,l){l.ui=a.ui;l.relatedPage=l.ui.getPageById(b.getAttribute("relatedPage"));if(null==l.relatedPage){var d=b.ownerDocument.createElement("diagram");d.setAttribute("id",b.getAttribute("relatedPage"));d.setAttribute("name",b.getAttribute("name"));l.relatedPage=new DiagramPage(d);d=b.getAttribute("viewState");null!=d&&(l.relatedPage.viewState=JSON.parse(d),b.removeAttribute("viewState")); b=b.cloneNode(!0);d=b.firstChild;if(null!=d)for(l.relatedPage.root=a.decodeCell(d,!1),l=d.nextSibling,d.parentNode.removeChild(d),d=l;null!=d;){l=d.nextSibling;if(d.nodeType==mxConstants.NODETYPE_ELEMENT){var f=d.getAttribute("id");null==a.lookup(f)&&a.decodeCell(d)}d.parentNode.removeChild(d);d=l}}return b};a.afterDecode=function(a,b,l){l.index=l.previousIndex;return l};mxCodecRegistry.register(a)})();(function(){var a=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAASFBMVEUAAAAAAAB/f3/9/f319fUfHx/7+/s+Pj69vb0AAAAAAAAAAAAAAAAAAAAAAAAAAAB2dnZ1dXUAAAAAAAAVFRX///8ZGRkGBgbOcI1hAAAAE3RSTlMA+vr9/f38+fb1893Bo00u+/tFvPJUBQAAAIRJREFUGNM0jEcSxCAQAxlydGqD///TNWxZBx1aXVIrWysplbapL3sFxgDq/idXBnHgBPK1nIxwc55vCXl6dRFtrV6svs/A/UjsPcpzA5tqyByD92HqQlMFh45BG6ND1DiKSoPDdm96N77bg5F+wyaEqRGb8ZiOwHQqdg9hehszcLAEIQB2lQ4p/sEpnAAAAABJRU5ErkJggg==":IMAGE_PATH+"/move.png";EditorUi.prototype.altShiftActions[68]= -"selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,d,f,u,z){d=null!=d?d:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var l=f.slice(),c=[],e=0;e<f.length;e++){var k=this.view.getState(f[e]),m=null!=k?k.style:this.getCellStyle(f[e]);"1"==mxUtils.getValue(m,"treeFolding","0")&&(this.traverse(f[e],!0,mxUtils.bind(this,function(a,b){null!=b&&c.push(b);a!=f[e]&&c.push(a);return a==f[e]||!this.model.isCollapsed(a)})), -this.model.setCollapsed(f[e],a))}for(e=0;e<c.length;e++)this.model.setVisible(c[e],!a);f=l;f=b.apply(this,arguments)}finally{this.model.endUpdate()}return f};var f=EditorUi.prototype.init;EditorUi.prototype.init=function(){f.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return A.isVertex(a)&&f(a)}function d(a){var b=!1;null!=a&&(b=g.view.getState(a),b="1"==(null!=b?b.style:g.getCellStyle(a)).treeMoving); -return b}function f(a){var b=!1;null!=a&&(a=A.getParent(a),b=g.view.getState(a),b="tree"==(null!=b?b.style:g.getCellStyle(a)).containerType);return b}function u(a){var b=!1;null!=a&&(a=A.getParent(a),b=g.view.getState(a),g.view.getState(a),b=null!=(null!=b?b.style:g.getCellStyle(a)).childLayout);return b}function z(a){a=g.view.getState(a);if(null!=a){var b=g.getIncomingEdges(a.cell);if(0<b.length&&(b=g.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y== -a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function B(a,b){b=null!=b?b:!0;g.model.beginUpdate();try{var c=g.model.getParent(a),d=g.getIncomingEdges(a),e=g.cloneCells([d[0],a]);g.model.setTerminal(e[0],g.model.getTerminal(d[0],!0),!0);var f=z(a),k=c.geometry;f==mxConstants.DIRECTION_SOUTH|| +"selectDescendants";var b=Graph.prototype.foldCells;Graph.prototype.foldCells=function(a,d,f,u,A){d=null!=d?d:!1;null==f&&(f=this.getFoldableCells(this.getSelectionCells(),a));this.stopEditing();this.model.beginUpdate();try{for(var l=f.slice(),c=[],e=0;e<f.length;e++){var k=this.view.getState(f[e]),m=null!=k?k.style:this.getCellStyle(f[e]);"1"==mxUtils.getValue(m,"treeFolding","0")&&(this.traverse(f[e],!0,mxUtils.bind(this,function(a,b){null!=b&&c.push(b);a!=f[e]&&c.push(a);return a==f[e]||!this.model.isCollapsed(a)})), +this.model.setCollapsed(f[e],a))}for(e=0;e<c.length;e++)this.model.setVisible(c[e],!a);f=l;f=b.apply(this,arguments)}finally{this.model.endUpdate()}return f};var f=EditorUi.prototype.init;EditorUi.prototype.init=function(){f.apply(this,arguments);this.editor.isChromelessView()&&!this.editor.editable||this.addTrees()};EditorUi.prototype.addTrees=function(){function b(a){return z.isVertex(a)&&f(a)}function d(a){var b=!1;null!=a&&(b=g.view.getState(a),b="1"==(null!=b?b.style:g.getCellStyle(a)).treeMoving); +return b}function f(a){var b=!1;null!=a&&(a=z.getParent(a),b=g.view.getState(a),b="tree"==(null!=b?b.style:g.getCellStyle(a)).containerType);return b}function u(a){var b=!1;null!=a&&(a=z.getParent(a),b=g.view.getState(a),g.view.getState(a),b=null!=(null!=b?b.style:g.getCellStyle(a)).childLayout);return b}function A(a){a=g.view.getState(a);if(null!=a){var b=g.getIncomingEdges(a.cell);if(0<b.length&&(b=g.view.getState(b[0]),null!=b&&(b=b.absolutePoints,null!=b&&0<b.length&&(b=b[b.length-1],null!=b)))){if(b.y== +a.y&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_SOUTH;if(b.y==a.y+a.height&&Math.abs(b.x-a.getCenterX())<a.width/2)return mxConstants.DIRECTION_NORTH;if(b.x>a.getCenterX())return mxConstants.DIRECTION_WEST}}return mxConstants.DIRECTION_EAST}function B(a,b){b=null!=b?b:!0;g.model.beginUpdate();try{var c=g.model.getParent(a),d=g.getIncomingEdges(a),e=g.cloneCells([d[0],a]);g.model.setTerminal(e[0],g.model.getTerminal(d[0],!0),!0);var f=A(a),k=c.geometry;f==mxConstants.DIRECTION_SOUTH|| f==mxConstants.DIRECTION_NORTH?e[1].geometry.x+=b?a.geometry.width+10:-e[1].geometry.width-10:e[1].geometry.y+=b?a.geometry.height+10:-e[1].geometry.height-10;g.view.currentRoot!=c&&(e[1].geometry.x-=k.x,e[1].geometry.y-=k.y);var l=g.view.getState(a),m=g.view.scale;if(null!=l){var n=mxRectangle.fromRectangle(l);f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH?n.x+=(b?a.geometry.width+10:-e[1].geometry.width-10)*m:n.y+=(b?a.geometry.height+10:-e[1].geometry.height-10)*m;var p=g.getOutgoingEdges(g.model.getTerminal(d[0], -!0));if(null!=p){for(var q=f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH,y=k=d=0;y<p.length;y++){var u=g.model.getTerminal(p[y],!1);if(f==z(u)){var t=g.view.getState(u);u!=a&&null!=t&&(q&&b!=t.getCenterX()<l.getCenterX()||!q&&b!=t.getCenterY()<l.getCenterY())&&mxUtils.intersects(n,t)&&(d=10+Math.max(d,(Math.min(n.x+n.width,t.x+t.width)-Math.max(n.x,t.x))/m),k=10+Math.max(k,(Math.min(n.y+n.height,t.y+t.height)-Math.max(n.y,t.y))/m))}}q?k=0:d=0;for(y=0;y<p.length;y++)if(u=g.model.getTerminal(p[y], -!1),f==z(u)&&(t=g.view.getState(u),u!=a&&null!=t&&(q&&b!=t.getCenterX()<l.getCenterX()||!q&&b!=t.getCenterY()<l.getCenterY()))){var v=[];g.traverse(t.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});g.moveCells(v,(b?1:-1)*d,(b?1:-1)*k)}}}return g.addCells(e,c)}finally{g.model.endUpdate()}}function c(a){g.model.beginUpdate();try{var b=z(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0],a]);g.model.setTerminal(c[0],d[1],!1);g.model.setTerminal(d[0],d[1],!0);g.model.setTerminal(d[0],a,!1); +!0));if(null!=p){for(var q=f==mxConstants.DIRECTION_SOUTH||f==mxConstants.DIRECTION_NORTH,t=k=d=0;t<p.length;t++){var y=g.model.getTerminal(p[t],!1);if(f==A(y)){var u=g.view.getState(y);y!=a&&null!=u&&(q&&b!=u.getCenterX()<l.getCenterX()||!q&&b!=u.getCenterY()<l.getCenterY())&&mxUtils.intersects(n,u)&&(d=10+Math.max(d,(Math.min(n.x+n.width,u.x+u.width)-Math.max(n.x,u.x))/m),k=10+Math.max(k,(Math.min(n.y+n.height,u.y+u.height)-Math.max(n.y,u.y))/m))}}q?k=0:d=0;for(t=0;t<p.length;t++)if(y=g.model.getTerminal(p[t], +!1),f==A(y)&&(u=g.view.getState(y),y!=a&&null!=u&&(q&&b!=u.getCenterX()<l.getCenterX()||!q&&b!=u.getCenterY()<l.getCenterY()))){var v=[];g.traverse(u.cell,!0,function(a,b){null!=b&&v.push(b);v.push(a);return!0});g.moveCells(v,(b?1:-1)*d,(b?1:-1)*k)}}}return g.addCells(e,c)}finally{g.model.endUpdate()}}function c(a){g.model.beginUpdate();try{var b=A(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0],a]);g.model.setTerminal(c[0],d[1],!1);g.model.setTerminal(d[0],d[1],!0);g.model.setTerminal(d[0],a,!1); var e=g.model.getParent(a),f=e.geometry,k=[];g.view.currentRoot!=e&&(d[1].geometry.x-=f.x,d[1].geometry.y-=f.y);g.traverse(a,!0,function(a,b){null!=b&&k.push(b);k.push(a);return!0});var l=a.geometry.width+40,m=a.geometry.height+40;b==mxConstants.DIRECTION_SOUTH?l=0:b==mxConstants.DIRECTION_NORTH?(l=0,m=-m):b==mxConstants.DIRECTION_WEST?(l=-l,m=0):b==mxConstants.DIRECTION_EAST&&(m=0);g.moveCells(k,l,m);return g.addCells(d,e)}finally{g.model.endUpdate()}}function e(a){g.model.beginUpdate();try{var b= -g.model.getParent(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0],a]);g.model.setTerminal(d[0],a,!0);var c=g.getOutgoingEdges(a),e=b.geometry,f=[];g.view.currentRoot==b&&(e=new mxRectangle);for(var k=0;k<c.length;k++){var l=g.model.getTerminal(c[k],!1);null!=l&&f.push(l)}var m=g.view.getBounds(f),n=z(a),p=g.view.translate,q=g.view.scale;n==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/q-p.x-e.x+10,d[1].geometry.y+=d[1].geometry.height- +g.model.getParent(a),c=g.getIncomingEdges(a),d=g.cloneCells([c[0],a]);g.model.setTerminal(d[0],a,!0);var c=g.getOutgoingEdges(a),e=b.geometry,f=[];g.view.currentRoot==b&&(e=new mxRectangle);for(var k=0;k<c.length;k++){var l=g.model.getTerminal(c[k],!1);null!=l&&f.push(l)}var m=g.view.getBounds(f),n=A(a),p=g.view.translate,q=g.view.scale;n==mxConstants.DIRECTION_SOUTH?(d[1].geometry.x=null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/q-p.x-e.x+10,d[1].geometry.y+=d[1].geometry.height- e.y+40):n==mxConstants.DIRECTION_NORTH?(d[1].geometry.x=null==m?a.geometry.x+(a.geometry.width-d[1].geometry.width)/2:(m.x+m.width)/q-p.x+-e.x+10,d[1].geometry.y-=d[1].geometry.height+e.y+40):(d[1].geometry.x=n==mxConstants.DIRECTION_WEST?d[1].geometry.x-(d[1].geometry.width+e.x+40):d[1].geometry.x+(d[1].geometry.width-e.x+40),d[1].geometry.y=null==m?a.geometry.y+(a.geometry.height-d[1].geometry.height)/2:(m.y+m.height)/q-p.y+-e.y+10);return g.addCells(d,b)}finally{g.model.endUpdate()}}function k(a, -b,c){a=g.getOutgoingEdges(a);c=g.view.getState(c);var d=[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=g.view.getState(g.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function q(a,b){var c=z(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST|| -c==mxConstants.DIRECTION_WEST)==d&&c!=b?n.actions.get("selectParent").funct():c==b?(d=g.getOutgoingEdges(a),null!=d&&0<d.length&&g.setSelectionCell(g.model.getTerminal(d[0],!1))):(c=g.getIncomingEdges(a),null!=c&&0<c.length&&(d=k(g.model.getTerminal(c[0],!0),d,a),c=g.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&g.setSelectionCell(d[c].cell)))))}var n=this,g=n.editor.graph,A=g.getModel(),x=n.menus.createPopupMenu; +b,c){a=g.getOutgoingEdges(a);c=g.view.getState(c);var d=[];if(null!=c&&null!=a){for(var e=0;e<a.length;e++){var f=g.view.getState(g.model.getTerminal(a[e],!1));null!=f&&(!b&&Math.min(f.x+f.width,c.x+c.width)>=Math.max(f.x,c.x)||b&&Math.min(f.y+f.height,c.y+c.height)>=Math.max(f.y,c.y))&&d.push(f)}d.sort(function(a,c){return b?a.x+a.width-c.x-c.width:a.y+a.height-c.y-c.height})}return d}function q(a,b){var c=A(a),d=b==mxConstants.DIRECTION_EAST||b==mxConstants.DIRECTION_WEST;(c==mxConstants.DIRECTION_EAST|| +c==mxConstants.DIRECTION_WEST)==d&&c!=b?n.actions.get("selectParent").funct():c==b?(d=g.getOutgoingEdges(a),null!=d&&0<d.length&&g.setSelectionCell(g.model.getTerminal(d[0],!1))):(c=g.getIncomingEdges(a),null!=c&&0<c.length&&(d=k(g.model.getTerminal(c[0],!0),d,a),c=g.view.getState(a),null!=c&&(c=mxUtils.indexOf(d,c),0<=c&&(c+=b==mxConstants.DIRECTION_NORTH||b==mxConstants.DIRECTION_WEST?-1:1,0<=c&&c<=d.length-1&&g.setSelectionCell(d[c].cell)))))}var n=this,g=n.editor.graph,z=g.getModel(),x=n.menus.createPopupMenu; n.menus.createPopupMenu=function(a,c,d){x.apply(this,arguments);if(1==g.getSelectionCount()){c=g.getSelectionCell();var e=g.getOutgoingEdges(c);a.addSeparator();null!=e&&0<e.length&&(b(g.getSelectionCell())&&this.addMenuItems(a,["selectChildren"],null,d),this.addMenuItems(a,["selectDescendants"],null,d));b(g.getSelectionCell())&&(a.addSeparator(),0<g.getIncomingEdges(c).length&&this.addMenuItems(a,["selectSiblings","selectParent"],null,d))}};n.actions.addAction("selectChildren",function(){if(g.isEnabled()&& 1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getOutgoingEdges(a);if(null!=a){for(var b=[],c=0;c<a.length;c++)b.push(g.model.getTerminal(a[c],!1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+X");n.actions.addAction("selectSiblings",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);if(null!=a&&0<a.length&&(a=g.getOutgoingEdges(g.model.getTerminal(a[0],!0)),null!=a)){for(var b=[],c=0;c<a.length;c++)b.push(g.model.getTerminal(a[c], !1));g.setSelectionCells(b)}}},null,null,"Alt+Shift+S");n.actions.addAction("selectParent",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),a=g.getIncomingEdges(a);null!=a&&0<a.length&&g.setSelectionCell(g.model.getTerminal(a[0],!0))}},null,null,"Alt+Shift+P");n.actions.addAction("selectDescendants",function(){if(g.isEnabled()&&1==g.getSelectionCount()){var a=g.getSelectionCell(),b=[];g.traverse(a,!0,function(a,c){null!=c&&b.push(c);b.push(a);return!0});g.setSelectionCells(b)}}, -null,null,"Alt+Shift+D");var t=g.removeCells;g.removeCells=function(a,c){c=null!=c?c:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));c&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var d=[],e=0;e<a.length;e++){var k=a[e];A.isEdge(k)&&f(k)&&(d.push(k),k=A.getTerminal(k,!1));b(k)?(g.traverse(k,!0,function(a,b){null!=b&&d.push(b);d.push(a);return!0}),k=g.getIncomingEdges(a[e]),a=a.concat(k)):d.push(a[e])}a=d;return t.apply(this,arguments)};n.hoverIcons.getStateAt=function(a,c, -d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var H=g.duplicateCells;g.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),e=0;e<d.length;e++){var f=g.view.getState(d[e]);if(null!=f&&b(f.cell))for(var k=g.getIncomingEdges(f.cell),f=0;f<k.length;f++)mxUtils.remove(k[f],a)}this.model.beginUpdate();try{var l=H.call(this,a,c);if(l.length==a.length)for(e=0;e<a.length;e++)if(b(a[e])){var m=g.getIncomingEdges(l[e]),k=g.getIncomingEdges(a[e]); -if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,g.getDefaultParent(),this.model.getTerminal(k[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var y=g.moveCells;g.moveCells=function(a,c,d,e,f,k,l){var m=null;this.model.beginUpdate();try{var n=f,p=this.view.getState(f),q=null!=p?p.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(q,"treeFolding","0")){for(var u=0;u<a.length;u++)if(b(a[u])||g.model.isEdge(a[u])&&null==g.model.getTerminal(a[u],!0)){f=g.model.getParent(a[u]); -break}if(null!=n&&f!=n&&null!=this.view.getState(a[0])){var t=g.getIncomingEdges(a[0]);if(0<t.length){var v=g.view.getState(g.model.getTerminal(t[0],!0));if(null!=v){var x=g.view.getState(n);null!=x&&(c=(x.getCenterX()-v.getCenterX())/g.view.scale,d=(x.getCenterY()-v.getCenterY())/g.view.scale)}}}}m=y.apply(this,arguments);if(null!=m&&null!=a&&m.length==a.length)for(u=0;u<m.length;u++)if(this.model.isEdge(m[u]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[u],!0))&&this.model.setTerminal(m[u], -n,!0);else if(b(a[u])&&(t=g.getIncomingEdges(a[u]),0<t.length))if(!e)b(n)&&0>mxUtils.indexOf(a,this.model.getTerminal(t[0],!0))&&this.model.setTerminal(t[0],n,!0);else if(0==g.getIncomingEdges(m[u]).length){p=n;if(null==p||p==g.model.getParent(a[u]))p=g.model.getTerminal(t[0],!0);e=this.cloneCell(t[0]);this.addEdge(e,g.getDefaultParent(),p,m[u])}}finally{this.model.endUpdate()}return m};if(null!=n.sidebar){var F=n.sidebar.dropAndConnect;n.sidebar.dropAndConnect=function(a,c,d,e){var f=g.model,k=null; -f.beginUpdate();try{if(k=F.apply(this,arguments),b(a))for(var l=0;l<k.length;l++)if(f.isEdge(k[l])&&null==f.getTerminal(k[l],!0)){f.setTerminal(k[l],a,!0);var m=g.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return k}}var C={88:n.actions.get("selectChildren"),84:n.actions.get("selectSubtree"),80:n.actions.get("selectParent"),83:n.actions.get("selectSiblings")},v=n.onKeyDown;n.onKeyDown=function(a){try{if(g.isEnabled()&&!g.isEditing()&& +null,null,"Alt+Shift+D");var v=g.removeCells;g.removeCells=function(a,c){c=null!=c?c:!0;null==a&&(a=this.getDeletableCells(this.getSelectionCells()));c&&(a=this.getDeletableCells(this.addAllEdges(a)));for(var d=[],e=0;e<a.length;e++){var k=a[e];z.isEdge(k)&&f(k)&&(d.push(k),k=z.getTerminal(k,!1));b(k)?(g.traverse(k,!0,function(a,b){null!=b&&d.push(b);d.push(a);return!0}),k=g.getIncomingEdges(a[e]),a=a.concat(k)):d.push(a[e])}a=d;return v.apply(this,arguments)};n.hoverIcons.getStateAt=function(a,c, +d){return b(a.cell)?null:this.graph.view.getState(this.graph.getCellAt(c,d))};var I=g.duplicateCells;g.duplicateCells=function(a,c){a=null!=a?a:this.getSelectionCells();for(var d=a.slice(0),e=0;e<d.length;e++){var f=g.view.getState(d[e]);if(null!=f&&b(f.cell))for(var k=g.getIncomingEdges(f.cell),f=0;f<k.length;f++)mxUtils.remove(k[f],a)}this.model.beginUpdate();try{var l=I.call(this,a,c);if(l.length==a.length)for(e=0;e<a.length;e++)if(b(a[e])){var m=g.getIncomingEdges(l[e]),k=g.getIncomingEdges(a[e]); +if(0==m.length&&0<k.length){var n=this.cloneCell(k[0]);this.addEdge(n,g.getDefaultParent(),this.model.getTerminal(k[0],!0),l[e])}}}finally{this.model.endUpdate()}return l};var y=g.moveCells;g.moveCells=function(a,c,d,e,f,k,l){var m=null;this.model.beginUpdate();try{var n=f,p=this.view.getState(f),q=null!=p?p.style:this.getCellStyle(f);if(null!=a&&b(f)&&"1"==mxUtils.getValue(q,"treeFolding","0")){for(var t=0;t<a.length;t++)if(b(a[t])||g.model.isEdge(a[t])&&null==g.model.getTerminal(a[t],!0)){f=g.model.getParent(a[t]); +break}if(null!=n&&f!=n&&null!=this.view.getState(a[0])){var u=g.getIncomingEdges(a[0]);if(0<u.length){var v=g.view.getState(g.model.getTerminal(u[0],!0));if(null!=v){var x=g.view.getState(n);null!=x&&(c=(x.getCenterX()-v.getCenterX())/g.view.scale,d=(x.getCenterY()-v.getCenterY())/g.view.scale)}}}}m=y.apply(this,arguments);if(null!=m&&null!=a&&m.length==a.length)for(t=0;t<m.length;t++)if(this.model.isEdge(m[t]))b(n)&&0>mxUtils.indexOf(m,this.model.getTerminal(m[t],!0))&&this.model.setTerminal(m[t], +n,!0);else if(b(a[t])&&(u=g.getIncomingEdges(a[t]),0<u.length))if(!e)b(n)&&0>mxUtils.indexOf(a,this.model.getTerminal(u[0],!0))&&this.model.setTerminal(u[0],n,!0);else if(0==g.getIncomingEdges(m[t]).length){p=n;if(null==p||p==g.model.getParent(a[t]))p=g.model.getTerminal(u[0],!0);e=this.cloneCell(u[0]);this.addEdge(e,g.getDefaultParent(),p,m[t])}}finally{this.model.endUpdate()}return m};if(null!=n.sidebar){var F=n.sidebar.dropAndConnect;n.sidebar.dropAndConnect=function(a,c,d,e){var f=g.model,k=null; +f.beginUpdate();try{if(k=F.apply(this,arguments),b(a))for(var l=0;l<k.length;l++)if(f.isEdge(k[l])&&null==f.getTerminal(k[l],!0)){f.setTerminal(k[l],a,!0);var m=g.getCellGeometry(k[l]);m.points=null;null!=m.getTerminalPoint(!0)&&m.setTerminalPoint(null,!0)}}finally{f.endUpdate()}return k}}var C={88:n.actions.get("selectChildren"),84:n.actions.get("selectSubtree"),80:n.actions.get("selectParent"),83:n.actions.get("selectSiblings")},t=n.onKeyDown;n.onKeyDown=function(a){try{if(g.isEnabled()&&!g.isEditing()&& b(g.getSelectionCell())&&1==g.getSelectionCount()){var d=null;0<g.getIncomingEdges(g.getSelectionCell()).length&&(9==a.which?d=mxEvent.isShiftDown(a)?c(g.getSelectionCell()):e(g.getSelectionCell()):13==a.which&&(d=B(g.getSelectionCell(),!mxEvent.isShiftDown(a))));if(null!=d&&0<d.length)1==d.length&&g.model.isEdge(d[0])?g.setSelectionCell(g.model.getTerminal(d[0],!1)):g.setSelectionCell(d[d.length-1]),null!=n.hoverIcons&&n.hoverIcons.update(g.view.getState(g.getSelectionCell())),g.startEditingAtCell(g.getSelectionCell()), mxEvent.consume(a);else if(mxEvent.isAltDown(a)&&mxEvent.isShiftDown(a)){var f=C[a.keyCode];null!=f&&(f.funct(a),mxEvent.consume(a))}else 37==a.keyCode?(q(g.getSelectionCell(),mxConstants.DIRECTION_WEST),mxEvent.consume(a)):38==a.keyCode?(q(g.getSelectionCell(),mxConstants.DIRECTION_NORTH),mxEvent.consume(a)):39==a.keyCode?(q(g.getSelectionCell(),mxConstants.DIRECTION_EAST),mxEvent.consume(a)):40==a.keyCode&&(q(g.getSelectionCell(),mxConstants.DIRECTION_SOUTH),mxEvent.consume(a))}}catch(ba){console.log("error", -ba)}mxEvent.isConsumed(a)||v.apply(this,arguments)};var J=g.connectVertex;g.connectVertex=function(a,d,f,k,l,m){var n=g.getIncomingEdges(a);return b(a)&&0<n.length?(f=z(a),k=f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST,l=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,f==d?e(a):k==l?c(a):B(a,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)):J.call(this,a,d,f,k,l,m)};g.getSubtree=function(a){var c=[a];!d(a)&&!b(a)||u(a)||g.traverse(a,!0,function(a,b){null!= +ba)}mxEvent.isConsumed(a)||t.apply(this,arguments)};var J=g.connectVertex;g.connectVertex=function(a,d,f,k,l,m){var n=g.getIncomingEdges(a);return b(a)&&0<n.length?(f=A(a),k=f==mxConstants.DIRECTION_EAST||f==mxConstants.DIRECTION_WEST,l=d==mxConstants.DIRECTION_EAST||d==mxConstants.DIRECTION_WEST,f==d?e(a):k==l?c(a):B(a,d!=mxConstants.DIRECTION_NORTH&&d!=mxConstants.DIRECTION_WEST)):J.call(this,a,d,f,k,l,m)};g.getSubtree=function(a){var c=[a];!d(a)&&!b(a)||u(a)||g.traverse(a,!0,function(a,b){null!= b&&0>mxUtils.indexOf(c,b)&&c.push(b);0>mxUtils.indexOf(c,a)&&c.push(a);return!0});return c};var M=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){M.apply(this,arguments);(d(this.state.cell)||b(this.state.cell))&&0<this.graph.getOutgoingEdges(this.state.cell).length&&(this.moveHandle=mxUtils.createImage(a),this.moveHandle.setAttribute("title","Move Subtree"),this.moveHandle.style.position="absolute",this.moveHandle.style.cursor="pointer",this.moveHandle.style.width="18px", -this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;n.hoverIcons.reset();mxEvent.consume(a)})))};var I=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles= -function(){I.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var P=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(a){P.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=a?"":"none")};var D=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy= -function(a,b){D.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var d=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=d.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex= +this.moveHandle.style.height="18px",this.graph.container.appendChild(this.moveHandle),mxEvent.addGestureListeners(this.moveHandle,mxUtils.bind(this,function(a){this.graph.graphHandler.start(this.state.cell,mxEvent.getClientX(a),mxEvent.getClientY(a),this.graph.getSubtree(this.state.cell));this.graph.graphHandler.cellWasClicked=!0;this.graph.isMouseTrigger=mxEvent.isMouseEvent(a);this.graph.isMouseDown=!0;n.hoverIcons.reset();mxEvent.consume(a)})))};var G=mxVertexHandler.prototype.redrawHandles;mxVertexHandler.prototype.redrawHandles= +function(){G.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.left=this.state.x+this.state.width+(40>this.state.width?10:0)+2+"px",this.moveHandle.style.top=this.state.y+this.state.height+(40>this.state.height?10:0)+2+"px")};var P=mxVertexHandler.prototype.setHandlesVisible;mxVertexHandler.prototype.setHandlesVisible=function(a){P.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.style.display=a?"":"none")};var E=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy= +function(a,b){E.apply(this,arguments);null!=this.moveHandle&&(this.moveHandle.parentNode.removeChild(this.moveHandle),this.moveHandle=null)}};if("undefined"!==typeof Sidebar){var d=Sidebar.prototype.createAdvancedShapes;Sidebar.prototype.createAdvancedShapes=function(){var a=d.apply(this,arguments),b=this.graph;return a.concat([this.addEntry("tree container",function(){var a=new mxCell("Tree Container",new mxGeometry(0,0,220,160),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex= !0;return sb.createVertexTemplateFromCells([a],a.geometry.width,a.geometry.height,a.value)}),this.addEntry("tree mindmap mindmaps central idea branch topic",function(){var a=new mxCell("Mindmap",new mxGeometry(0,0,420,126),"swimlane;html=1;startSize=20;horizontal=1;containerType=tree;");a.vertex=!0;var b=new mxCell("Central Idea",new mxGeometry(160,60,100,40),"ellipse;whiteSpace=wrap;html=1;align=center;container=1;recursiveResize=0;treeFolding=1;treeMoving=1;");b.vertex=!0;var d=new mxCell("Topic", new mxGeometry(320,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;");d.vertex=!0;var f=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");f.geometry.relative=!0;f.edge=!0;b.insertEdge(f,!0);d.insertEdge(f,!1);var c=new mxCell("Branch",new mxGeometry(320,80,72,26),"whiteSpace=wrap;html=1;shape=partialRectangle;top=0;left=0;bottom=1;right=0;points=[[0,1],[1,1]];strokeColor=#000000;fillColor=none;align=center;verticalAlign=bottom;routingCenterY=0.5;snapToPoint=1;container=1;recursiveResize=0;autosize=1;treeFolding=1;treeMoving=1;"); c.vertex=!0;var e=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;");e.geometry.relative=!0;e.edge=!0;b.insertEdge(e,!0);c.insertEdge(e,!1);var k=new mxCell("Topic",new mxGeometry(20,40,80,20),"whiteSpace=wrap;html=1;rounded=1;arcSize=50;align=center;verticalAlign=middle;container=1;recursiveResize=0;strokeWidth=1;autosize=1;spacing=4;treeFolding=1;treeMoving=1;");k.vertex=!0;var l=new mxCell("",new mxGeometry(0,0,0,0),"edgeStyle=entityRelationEdgeStyle;startArrow=none;endArrow=none;segment=10;curved=1;"); @@ -3502,7 +3503,7 @@ mxWindow.prototype.minimizeImage=Graph.createSvgImage(14,10,'<path d="M 3 7 L 7 "#C0C0C0";mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff";mxConstants.DEFAULT_VALID_COLOR="#29b6f2";mxConstants.GUIDE_COLOR="#C0C0C0";mxConstants.HIGHLIGHT_STROKEWIDTH=5;mxConstants.HIGHLIGHT_OPACITY=35;mxConstants.OUTLINE_COLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_FILLCOLOR="#29b6f2";mxConstants.OUTLINE_HANDLE_STROKECOLOR="#fff";Graph.prototype.svgShadowColor="#3D4574";Graph.prototype.svgShadowOpacity="0.4";Graph.prototype.svgShadowSize="0.6";Graph.prototype.svgShadowBlur="1.2";Format.prototype.inactiveTabBackgroundColor= "#f0f0f0";mxGraphHandler.prototype.previewColor="#C0C0C0";mxRubberband.prototype.defaultOpacity=50;HoverIcons.prototype.inactiveOpacity=25;Format.prototype.showCloseButton=!1;EditorUi.prototype.closableScratchpad=!1;EditorUi.prototype.toolbarHeight=46;EditorUi.prototype.footerHeight=0;Graph.prototype.editAfterInsert=!mxClient.IS_IOS&&!mxClient.IS_ANDROID;Editor.prototype.isChromelessView=function(){return!1};Graph.prototype.isLightboxView=function(){return!1};var m=EditorUi.prototype.updateTabContainer; EditorUi.prototype.updateTabContainer=function(){null!=this.tabContainer&&(this.tabContainer.style.right="70px",this.diagramContainer.style.bottom=this.tabContainerHeight+"px");m.apply(this,arguments)};var p=EditorUi.prototype.updateActionStates;EditorUi.prototype.updateActionStates=function(){p.apply(this,arguments);this.menus.get("save").setEnabled(null!=this.getCurrentFile()||"1"==urlParams.embed)};var u=Menus.prototype.addShortcut;Menus.prototype.addShortcut=function(a,b){null!=b.shortcut&&900> -f&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title",b.shortcut):u.apply(this,arguments)};var z=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){z.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+a.style.display;a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat= +f&&!mxClient.IS_IOS?a.firstChild.nextSibling.setAttribute("title",b.shortcut):u.apply(this,arguments)};var A=App.prototype.updateUserElement;App.prototype.updateUserElement=function(){A.apply(this,arguments);if(null!=this.userElement){var a=this.userElement;a.style.cssText="position:relative;margin-right:4px;cursor:pointer;display:"+a.style.display;a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.userImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat= "no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px";a.style.cssFloat="right";a.setAttribute("title",mxResources.get("changeUser"));"none"!=a.style.display&&(a.style.display="inline-block")}};var B=App.prototype.updateButtonContainer;App.prototype.updateButtonContainer=function(){B.apply(this,arguments);if(null!=this.shareButton){var a=this.shareButton;a.style.cssText="display:inline-block;position:relative;box-sizing:border-box;margin-right:4px;cursor:pointer;"; a.className="geToolbarButton";a.innerHTML="";a.style.backgroundImage="url("+Editor.shareImage+")";a.style.backgroundPosition="center center";a.style.backgroundRepeat="no-repeat";a.style.backgroundSize="24px 24px";a.style.height="24px";a.style.width="24px"}};EditorUi.prototype.addEmbedButtons=function(){if(null!=this.buttonContainer){var a=document.createElement("div");a.style.display="inline-block";a.style.position="relative";a.style.marginTop="8px";a.style.marginRight="4px";var b=document.createElement("a"); b.className="geMenuItem gePrimaryBtn";b.style.marginLeft="8px";b.style.padding="6px";"1"==urlParams.noSaveBtn?(mxUtils.write(b,mxResources.get("saveAndExit")),b.setAttribute("title",mxResources.get("saveAndExit")),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("saveAndExit").funct()})),a.appendChild(b)):(mxUtils.write(b,mxResources.get("save")),b.setAttribute("title",mxResources.get("save")+" ("+Editor.ctrlKey+"+S)"),mxEvent.addListener(b,"click",mxUtils.bind(this,function(){this.actions.get("save").funct()})), @@ -3539,14 +3540,14 @@ null,640<=f?c("",e.funct,!0,mxResources.get("zoomOut")+" ("+Editor.ctrlKey+" -)" null],60)}b=l.menus.get("language");null!=b&&!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&600<=f?(null==N&&(e=u.addMenu("",b.funct),e.setAttribute("title",mxResources.get("language")),e.className="geToolbarButton",e.style.backgroundImage="url("+Editor.globeImage+")",e.style.backgroundPosition="center center",e.style.backgroundRepeat="no-repeat",e.style.backgroundSize="24px 24px",e.style.position="absolute",e.style.height="24px",e.style.width="24px",e.style.zIndex="1",e.style.right="8px",e.style.cursor= "pointer",e.style.top="1"==urlParams.embed?"12px":"11px",p.appendChild(e),N=e),l.buttonContainer.style.paddingRight="34px"):(l.buttonContainer.style.paddingRight="4px",null!=N&&(N.parentNode.removeChild(N),N=null))}n.apply(this,arguments);var k=document.createElement("div");k.style.cssText="position:absolute;left:0px;right:0px;top:0px;overflow-y:auto;overflow-x:hidden;";k.style.bottom="1"!=urlParams.embed||"1"==urlParams.libraries?"63px":"32px";this.sidebar=this.createSidebar(k);null==urlParams.clibs&& null==urlParams.libs||b(this);var l=this,m=l.editor.graph;l.toolbar=this.createToolbar(l.createDiv("geToolbar"));l.defaultLibraryName=mxResources.get("untitledLibrary");var p=document.createElement("div");p.style.cssText="position:absolute;left:0px;right:0px;top:0px;height:30px;padding:8px;border-bottom:1px solid lightgray;background-color:#ffffff;text-align:left;white-space:nowrap;";var q=null,u=new Menubar(l,p);l.statusContainer=l.createStatusContainer();l.statusContainer.style.position="relative"; -l.statusContainer.style.maxWidth="";l.statusContainer.style.marginTop="7px";l.statusContainer.style.marginLeft="6px";l.statusContainer.style.color="gray";l.statusContainer.style.cursor="default";l.editor.addListener("statusChanged",mxUtils.bind(this,function(){l.setStatusText(l.editor.getStatus())}));var z=l.descriptorChanged;l.descriptorChanged=function(){z.apply(this,arguments);var a=l.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub": +l.statusContainer.style.maxWidth="";l.statusContainer.style.marginTop="7px";l.statusContainer.style.marginLeft="6px";l.statusContainer.style.color="gray";l.statusContainer.style.cursor="default";l.editor.addListener("statusChanged",mxUtils.bind(this,function(){l.setStatusText(l.editor.getStatus())}));var A=l.descriptorChanged;l.descriptorChanged=function(){A.apply(this,arguments);var a=l.getCurrentFile();if(null!=a&&null!=a.getTitle()){var b=a.getMode();"google"==b?b="googleDrive":"github"==b?b="gitHub": "gitlab"==b?b="gitLab":"onedrive"==b&&(b="oneDrive");b=mxResources.get(b);p.setAttribute("title",a.getTitle()+(null!=b?" ("+b+")":""))}else p.removeAttribute("title")};l.setStatusText(l.editor.getStatus());p.appendChild(l.statusContainer);l.buttonContainer=document.createElement("div");l.buttonContainer.style.cssText="position:absolute;right:0px;padding-right:34px;top:10px;white-space:nowrap;padding-top:2px;background-color:inherit;";p.appendChild(l.buttonContainer);l.menubarContainer=l.buttonContainer; l.tabContainer=document.createElement("div");l.tabContainer.style.cssText="position:absolute;left:0px;right:0px;bottom:0px;height:30px;white-space:nowrap;border-bottom:1px solid lightgray;background-color:#ffffff;border-top:1px solid lightgray;margin-bottom:-2px;visibility:hidden;";var k=l.diagramContainer.parentNode,B=document.createElement("div");B.style.cssText="position:absolute;top:0px;left:0px;right:0px;bottom:0px;overflow:hidden;";l.diagramContainer.style.top="47px";var P=l.menus.get("viewZoom"); -if(null!=P){this.tabContainer.style.right="70px";var D=u.addMenu("100%",P.funct);D.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");D.style.whiteSpace="nowrap";D.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";D.style.backgroundPosition="right 6px center";D.style.backgroundRepeat="no-repeat";D.style.backgroundColor="#ffffff";D.style.paddingRight="10px";D.style.display="block";D.style.position="absolute";D.style.textDecoration="none";D.style.textDecoration="none"; -D.style.right="0px";D.style.bottom="0px";D.style.overflow="hidden";D.style.visibility="hidden";D.style.textAlign="center";D.style.color="#000";D.style.fontSize="12px";D.style.color="#707070";D.style.width="59px";D.style.cursor="pointer";D.style.borderTop="1px solid lightgray";D.style.borderLeft="1px solid lightgray";D.style.height=parseInt(l.tabContainerHeight)-1+"px";D.style.lineHeight=parseInt(l.tabContainerHeight)+1+"px";B.appendChild(D);P=mxUtils.bind(this,function(){D.innerHTML=Math.round(100* -l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,P);l.editor.addListener("resetGraphView",P);l.editor.addListener("pageSelected",P);var E=l.setGraphEnabled;l.setGraphEnabled=function(){E.apply(this,arguments);null!=this.tabContainer&&(D.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}B.appendChild(l.tabContainer);B.appendChild(p);B.appendChild(l.diagramContainer); +if(null!=P){this.tabContainer.style.right="70px";var E=u.addMenu("100%",P.funct);E.setAttribute("title",mxResources.get("zoom")+" (Alt+Mousewheel)");E.style.whiteSpace="nowrap";E.style.backgroundImage="url("+mxWindow.prototype.minimizeImage+")";E.style.backgroundPosition="right 6px center";E.style.backgroundRepeat="no-repeat";E.style.backgroundColor="#ffffff";E.style.paddingRight="10px";E.style.display="block";E.style.position="absolute";E.style.textDecoration="none";E.style.textDecoration="none"; +E.style.right="0px";E.style.bottom="0px";E.style.overflow="hidden";E.style.visibility="hidden";E.style.textAlign="center";E.style.color="#000";E.style.fontSize="12px";E.style.color="#707070";E.style.width="59px";E.style.cursor="pointer";E.style.borderTop="1px solid lightgray";E.style.borderLeft="1px solid lightgray";E.style.height=parseInt(l.tabContainerHeight)-1+"px";E.style.lineHeight=parseInt(l.tabContainerHeight)+1+"px";B.appendChild(E);P=mxUtils.bind(this,function(){E.innerHTML=Math.round(100* +l.editor.graph.view.scale)+"%"});l.editor.graph.view.addListener(mxEvent.EVENT_SCALE,P);l.editor.addListener("resetGraphView",P);l.editor.addListener("pageSelected",P);var D=l.setGraphEnabled;l.setGraphEnabled=function(){D.apply(this,arguments);null!=this.tabContainer&&(E.style.visibility=this.tabContainer.style.visibility,this.diagramContainer.style.bottom="hidden"!=this.tabContainer.style.visibility?this.tabContainerHeight+"px":"0px")}}B.appendChild(l.tabContainer);B.appendChild(p);B.appendChild(l.diagramContainer); k.appendChild(B);l.updateTabContainer();var N=null;e();mxEvent.addListener(window,"resize",function(){e();null!=l.sidebarWindow&&l.sidebarWindow.window.fit();null!=l.formatWindow&&l.formatWindow.window.fit();null!=l.actions.outlineWindow&&l.actions.outlineWindow.window.fit();null!=l.actions.layersWindow&&l.actions.layersWindow.window.fit();null!=l.menus.tagsWindow&&l.menus.tagsWindow.window.fit();null!=l.menus.findWindow&&l.menus.findWindow.window.fit()})}}}; -(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,b,f,d,l,m,p){this.file=a;this.id=b;this.content=f;this.modifiedDate=d;this.createdDate=l;this.isResolved=m;this.user=p;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,b,f,d,l){b()};DrawioComment.prototype.editComment=function(a,b,f){b()};DrawioComment.prototype.deleteComment=function(a,b){a()};DrawioUser=function(a,b,f,d,l){this.id=a;this.email=b;this.displayName=f;this.pictureUrl=d;this.locale=l};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncsv=CSV\ndark=Dark\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get draw.io Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallDrawio=Install draw.io\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished.\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully.\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed.\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add></mxStylesheet>').documentElement; +(function(){var a=!1;"min"!=uiTheme||a||mxClient.IS_CHROMEAPP||(EditorUi.initMinimalTheme(),a=!0);var b=EditorUi.initTheme;EditorUi.initTheme=function(){b.apply(this,arguments);"min"!=uiTheme||a||(this.initMinimalTheme(),a=!0)}})();DrawioComment=function(a,b,f,d,l,m,p){this.file=a;this.id=b;this.content=f;this.modifiedDate=d;this.createdDate=l;this.isResolved=m;this.user=p;this.replies=[]};DrawioComment.prototype.addReplyDirect=function(a){null!=a&&this.replies.push(a)};DrawioComment.prototype.addReply=function(a,b,f,d,l){b()};DrawioComment.prototype.editComment=function(a,b,f){b()};DrawioComment.prototype.deleteComment=function(a,b){a()};DrawioUser=function(a,b,f,d,l){this.id=a;this.email=b;this.displayName=f;this.pictureUrl=d;this.locale=l};mxResources.parse('# *DO NOT DIRECTLY EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND IT IS BASED ON:*\n# https://docs.google.com/spreadsheet/ccc?key=0AmQEO36liL4FdDJLWVNMaVV2UmRKSnpXU09MYkdGbEE\naboutDrawio=About draw.io\naccessDenied=Access Denied\naction=Action\nactualSize=Actual Size\nadd=Add\naddAccount=Add account\naddedFile=Added {1}\naddImages=Add Images\naddImageUrl=Add Image URL\naddLayer=Add Layer\naddProperty=Add Property\naddress=Address\naddToExistingDrawing=Add to Existing Drawing\naddWaypoint=Add Waypoint\nadjustTo=Adjust to\nadvanced=Advanced\nalign=Align\nalignment=Alignment\nallChangesLost=All changes will be lost!\nallPages=All Pages\nallProjects=All Projects\nallSpaces=All Spaces\nallTags=All Tags\nanchor=Anchor\nandroid=Android\nangle=Angle\narc=Arc\nareYouSure=Are you sure?\nensureDataSaved=Please ensure your data is saved before closing.\nallChangesSaved=All changes saved\nallChangesSavedInDrive=All changes saved in Drive\nallowPopups=Allow pop-ups to avoid this dialog.\nallowRelativeUrl=Allow relative URL\nalreadyConnected=Nodes already connected\napply=Apply\narchiMate21=ArchiMate 2.1\narrange=Arrange\narrow=Arrow\narrows=Arrows\nasNew=As New\natlas=Atlas\nauthor=Author\nauthorizationRequired=Authorization required\nauthorizeThisAppIn=Authorize this app in {1}:\nauthorize=Authorize\nauthorizing=Authorizing\nautomatic=Automatic\nautosave=Autosave\nautosize=Autosize\nattachments=Attachments\naws=AWS\naws3d=AWS 3D\nazure=Azure\nback=Back\nbackground=Background\nbackgroundColor=Background Color\nbackgroundImage=Background Image\nbasic=Basic\nblankDrawing=Blank Drawing\nblankDiagram=Blank Diagram\nblock=Block\nblockquote=Blockquote\nblog=Blog\nbold=Bold\nbootstrap=Bootstrap\nborder=Border\nborderColor=Border Color\nborderWidth=Border Width\nbottom=Bottom\nbottomAlign=Bottom Align\nbottomLeft=Bottom Left\nbottomRight=Bottom Right\nbpmn=BPMN\nbrowser=Browser\nbulletedList=Bulleted List\nbusiness=Business\nbusy=Operation in progress\ncabinets=Cabinets\ncancel=Cancel\ncenter=Center\ncannotLoad=Load attempts failed. Please try again later.\ncannotLogin=Log in attempts failed. Please try again later.\ncannotOpenFile=Cannot open file\nchange=Change\nchangeOrientation=Change Orientation\nchangeUser=Change user\nchangeStorage=Change storage\nchangesNotSaved=Changes have not been saved\nclassDiagram=Class Diagram\nuserJoined={1} has joined\nuserLeft={1} has left\nchatWindowTitle=Chat\nchooseAnOption=Choose an option\nchromeApp=Chrome App\ncollaborativeEditingNotice=Important Notice for Collaborative Editing\ncompressed=Compressed\ncommitMessage=Commit Message\nconfigLinkWarn=This link configures draw.io. Only click OK if you trust whoever gave you it!\nconfigLinkConfirm=Click OK to configure and restart draw.io.\ncsv=CSV\ndark=Dark\ndidYouMeanToExportToPdf=Did you mean to export to PDF?\ndraftFound=A draft for \'{1}\' has been found. Load it into the editor or discard it to continue.\nselectDraft=Select a draft to continue editing:\ndragAndDropNotSupported=Drag and drop not supported for images. Would you like to import instead?\ndropboxCharsNotAllowed=The following characters are not allowed: / : ? * " |\ncheck=Check\nchecksum=Checksum\ncircle=Circle\ncisco=Cisco\nclassic=Classic\nclearDefaultStyle=Clear Default Style\nclearWaypoints=Clear Waypoints\nclipart=Clipart\nclose=Close\nclosingFile=Closing file\ncollaborator=Collaborator\ncollaborators=Collaborators\ncollapse=Collapse\ncollapseExpand=Collapse/Expand\ncollapse-expand=Click to collapse/expand\nShift-click to move neighbors \nAlt-click to protect group size\ncollapsible=Collapsible\ncomic=Comic\ncomment=Comment\ncommentsNotes=Comments/Notes\ncompress=Compress\nconnect=Connect\nconnecting=Connecting\nconnectWithDrive=Connect with Google Drive\nconnection=Connection\nconnectionArrows=Connection Arrows\nconnectionPoints=Connection Points\nconstrainProportions=Constrain Proportions\ncontainsValidationErrors=Contains validation errors\ncopiedToClipboard=Copied to clipboard\ncopy=Copy\ncopyConnect=Copy on connect\ncopyCreated=A copy of the file was created.\ncopyOf=Copy of {1}\ncopyOfDrawing=Copy of Drawing\ncopySize=Copy Size\ncopyStyle=Copy Style\ncreate=Create\ncreateNewDiagram=Create New Diagram\ncreateRevision=Create Revision\ncreateShape=Create Shape\ncrop=Crop\ncurved=Curved\ncustom=Custom\ncurrent=Current\ncurrentPage=Current page\ncut=Cut\ndashed=Dashed\ndecideLater=Decide later\ndefault=Default\ndelete=Delete\ndeleteColumn=Delete Column\ndeleteLibrary401=Insufficient permissions to delete this library\ndeleteLibrary404=Selected library could not be found\ndeleteLibrary500=Error deleting library\ndeleteLibraryConfirm=You are about to permanently delete this library. Are you sure you want to do this?\ndeleteRow=Delete Row\ndescription=Description\ndevice=Device\ndiagram=Diagram\ndiagramContent=Diagram Content\ndiagramLocked=Diagram has been locked to prevent further data loss.\ndiagramLockedBySince=The diagram is locked by {1} since {2} ago\ndiagramName=Diagram Name\ndiagramIsPublic=Diagram is public\ndiagramIsNotPublic=Diagram is not public\ndiamond=Diamond\ndiamondThin=Diamond (thin)\ndidYouKnow=Did you know...\ndirection=Direction\ndiscard=Discard\ndiscardChangesAndReconnect=Discard Changes and Reconnect\ngoogleDriveMissingClickHere=Google Drive missing? Click here!\ndiscardChanges=Discard Changes\ndisconnected=Disconnected\ndistribute=Distribute\ndone=Done\ndotted=Dotted\ndoubleClickOrientation=Doubleclick to change orientation\ndoubleClickTooltip=Doubleclick to insert text\ndoubleClickChangeProperty=Doubleclick to change property name\ndownload=Download\ndownloadDesktop=Get draw.io Desktop\ndownloadAs=Download as\nclickHereToSave=Click here to save.\ndpi=DPI\ndraftDiscarded=Draft discarded\ndraftSaved=Draft saved\ndragElementsHere=Drag elements here\ndragImagesHere=Drag images or URLs here\ndragUrlsHere=Drag URLs here\ndraw.io=draw.io\ndrawing=Drawing{1}\ndrawingEmpty=Drawing is empty\ndrawingTooLarge=Drawing is too large\ndrawioForWork=Draw.io for GSuite\ndropbox=Dropbox\nduplicate=Duplicate\nduplicateIt=Duplicate {1}\ndivider=Divider\ndx=Dx\ndy=Dy\neast=East\nedit=Edit\neditData=Edit Data\neditDiagram=Edit Diagram\neditGeometry=Edit Geometry\neditImage=Edit Image\neditImageUrl=Edit Image URL\neditLink=Edit Link\neditShape=Edit Shape\neditStyle=Edit Style\neditText=Edit Text\neditTooltip=Edit Tooltip\nglass=Glass\ngoogleImages=Google Images\nimageSearch=Image Search\neip=EIP\nembed=Embed\nembedImages=Embed Images\nmainEmbedNotice=Paste this into the page\nelectrical=Electrical\nellipse=Ellipse\nembedNotice=Paste this once at the end of the page\nenterGroup=Enter Group\nenterName=Enter Name\nenterPropertyName=Enter Property Name\nenterValue=Enter Value\nentityRelation=Entity Relation\nentityRelationshipDiagram=Entity Relationship Diagram\nerror=Error\nerrorDeletingFile=Error deleting file\nerrorLoadingFile=Error loading file\nerrorRenamingFile=Error renaming file\nerrorRenamingFileNotFound=Error renaming file. File was not found.\nerrorRenamingFileForbidden=Error renaming file. Insufficient access rights.\nerrorSavingDraft=Error saving draft\nerrorSavingFile=Error saving file\nerrorSavingFileUnknown=Error authorizing with Google\'s servers. Please refresh the page to re-attempt.\nerrorSavingFileForbidden=Error saving file. Insufficient access rights.\nerrorSavingFileNameConflict=Could not save diagram. Current page already contains file named \'{1}\'.\nerrorSavingFileNotFound=Error saving file. File was not found.\nerrorSavingFileReadOnlyMode=Could not save diagram while read-only mode is active.\nerrorSavingFileSessionTimeout=Your session has ended. Please <a target=\'_blank\' href=\'{1}\'>{2}</a> and return to this tab to try to save again.\nerrorSendingFeedback=Error sending feedback.\nerrorUpdatingPreview=Error updating preview.\nexit=Exit\nexitGroup=Exit Group\nexpand=Expand\nexport=Export\nexporting=Exporting\nexportAs=Export as\nexportOptionsDisabled=Export options disabled\nexportOptionsDisabledDetails=The owner has disabled options to download, print or copy for commenters and viewers on this file.\nexternalChanges=External Changes\nextras=Extras\nfacebook=Facebook\nfailedToSaveTryReconnect=Failed to save, trying to reconnect\nfeatureRequest=Feature Request\nfeedback=Feedback\nfeedbackSent=Feedback successfully sent.\nfloorplans=Floorplans\nfile=File\nfileChangedOverwriteDialog=The file has been modified. Do you want to save the file and overwrite those changes?\nfileChangedSyncDialog=The file has been modified. Do you want to synchronize those changes?\nfileChangedSync=The file has been modified. Click here to synchronize.\noverwrite=Overwrite\nsynchronize=Synchronize\nfilename=Filename\nfileExists=File already exists\nfileMovedToTrash=File was moved to trash\nfileNearlyFullSeeFaq=File nearly full, please see FAQ\nfileNotFound=File not found\nrepositoryNotFound=Repository not found\nfileNotFoundOrDenied=The file was not found. It does not exist or you do not have access.\nfileNotLoaded=File not loaded\nfileNotSaved=File not saved\nfileOpenLocation=How would you like to open these file(s)?\nfiletypeHtml=.html causes file to save as HTML with redirect to cloud URL\nfiletypePng=.png causes file to save as PNG with embedded data\nfiletypeSvg=.svg causes file to save as SVG with embedded data\nfileWillBeSavedInAppFolder={1} will be saved in the app folder.\nfill=Fill\nfillColor=Fill Color\nfilterCards=Filter Cards\nfind=Find\nfit=Fit\nfitContainer=Resize Container\nfitIntoContainer=Fit into Container\nfitPage=Fit Page\nfitPageWidth=Fit Page Width\nfitTo=Fit to\nfitToSheetsAcross=sheet(s) across\nfitToBy=by\nfitToSheetsDown=sheet(s) down\nfitTwoPages=Two Pages\nfitWindow=Fit Window\nflip=Flip\nflipH=Flip Horizontal\nflipV=Flip Vertical\nflowchart=Flowchart\nfolder=Folder\nfont=Font\nfontColor=Font Color\nfontFamily=Font Family\nfontSize=Font Size\nforbidden=You are not authorized to access this file\nformat=Format\nformatPanel=Format Panel\nformatted=Formatted\nformattedText=Formatted Text\nformatPng=PNG\nformatGif=GIF\nformatJpg=JPEG\nformatPdf=PDF\nformatSql=SQL\nformatSvg=SVG\nformatHtmlEmbedded=HTML\nformatSvgEmbedded=SVG (with XML)\nformatVsdx=VSDX\nformatVssx=VSSX\nformatXmlPlain=XML (Plain)\nformatXml=XML\nforum=Discussion/Help Forums\nfreehand=Freehand\nfromTemplate=From Template\nfromTemplateUrl=From Template URL\nfromText=From Text\nfromUrl=From URL\nfromThisPage=From this page\nfullscreen=Fullscreen\ngap=Gap\ngcp=GCP\ngeneral=General\ngithub=GitHub\ngitlab=GitLab\ngliffy=Gliffy\nglobal=Global\ngoogleDocs=Google Docs\ngoogleDrive=Google Drive\ngoogleGadget=Google Gadget\ngooglePlus=Google+\ngoogleSharingNotAvailable=Sharing is only available via Google Drive. Please click Open below and share from the more actions menu:\ngoogleSlides=Google Slides\ngoogleSites=Google Sites\ngoogleSheets=Google Sheets\ngradient=Gradient\ngradientColor=Color\ngrid=Grid\ngridColor=Grid Color\ngridSize=Grid Size\ngroup=Group\nguides=Guides\nhateApp=I hate draw.io\nheading=Heading\nheight=Height\nhelp=Help\nhelpTranslate=Help us translate this application\nhide=Hide\nhideIt=Hide {1}\nhidden=Hidden\nhome=Home\nhorizontal=Horizontal\nhorizontalFlow=Horizontal Flow\nhorizontalTree=Horizontal Tree\nhowTranslate=How good is the translation in your language?\nhtml=HTML\nhtmlText=HTML Text\nid=ID\niframe=IFrame\nignore=Ignore\nimage=Image\nimageUrl=Image URL\nimages=Images\nimagePreviewError=This image couldn\'t be loaded for preview. Please check the URL.\nimageTooBig=Image too big\nimgur=Imgur\nimport=Import\nimportFrom=Import from\nincludeCopyOfMyDiagram=Include a copy of my diagram\nincreaseIndent=Increase Indent\ndecreaseIndent=Decrease Indent\ninsert=Insert\ninsertColumnBefore=Insert Column Left\ninsertColumnAfter=Insert Column Right\ninsertEllipse=Insert Ellipse\ninsertImage=Insert Image\ninsertHorizontalRule=Insert Horizontal Rule\ninsertLink=Insert Link\ninsertPage=Insert Page\ninsertRectangle=Insert Rectangle\ninsertRhombus=Insert Rhombus\ninsertRowBefore=Insert Row Above\ninsertRowAfter=Insert Row After\ninsertText=Insert Text\ninserting=Inserting\ninstallDrawio=Install draw.io\ninvalidFilename=Diagram names must not contain the following characters: / | : ; { } < > & + ? = "\ninvalidLicenseSeeThisPage=Your license is invalid, please see this <a target="_blank" href="https://support.draw.io/display/DFCS/Licensing+your+draw.io+plugin">page</a>.\ninvalidInput=Invalid input\ninvalidName=Invalid name\ninvalidOrMissingFile=Invalid or missing file\ninvalidPublicUrl=Invalid public URL\nisometric=Isometric\nios=iOS\nitalic=Italic\nkennedy=Kennedy\nkeyboardShortcuts=Keyboard Shortcuts\nlayers=Layers\nlandscape=Landscape\nlanguage=Language\nleanMapping=Lean Mapping\nlastChange=Last change {1} ago\nlessThanAMinute=less than a minute\nlicensingError=Licensing Error\nlicenseHasExpired=The license for {1} has expired on {2}. Click here.\nlicenseWillExpire=The license for {1} will expire on {2}. Click here.\nlineJumps=Line jumps\nlinkAccountRequired=If the diagram is not public a Google account is required to view the link.\nlinkText=Link Text\nlist=List\nminute=minute\nminutes=minutes\nhours=hours\ndays=days\nmonths=months\nyears=years\nrestartForChangeRequired=Changes will take effect after a restart of the application.\nlaneColor=Lanecolor\nlastModified=Last modified\nlayout=Layout\nleft=Left\nleftAlign=Left Align\nleftToRight=Left to right\nlibraryTooltip=Drag and drop shapes here or click + to insert. Double click to edit.\nlightbox=Lightbox\nline=Line\nlineend=Line end\nlineheight=Line Height\nlinestart=Line start\nlinewidth=Linewidth\nlink=Link\nlinks=Links\nloading=Loading\nlockUnlock=Lock/Unlock\nloggedOut=Logged Out\nlogIn=log in\nloveIt=I love {1}\nlucidchart=Lucidchart\nmaps=Maps\nmathematicalTypesetting=Mathematical Typesetting\nmakeCopy=Make a Copy\nmanual=Manual\nmicrosoftOffice=Microsoft Office\nmicrosoftExcel=Microsoft Excel\nmicrosoftPowerPoint=Microsoft PowerPoint\nmicrosoftWord=Microsoft Word\nmiddle=Middle\nminimal=Minimal\nmisc=Misc\nmockups=Mockups\nmodificationDate=Modification date\nmodifiedBy=Modified by\nmore=More\nmoreResults=More Results\nmoreShapes=More Shapes\nmove=Move\nmoveToFolder=Move to Folder\nmoving=Moving\nmoveSelectionTo=Move selection to {1}\nname=Name\nnavigation=Navigation\nnetwork=Network\nnetworking=Networking\nnew=New\nnewLibrary=New Library\nnextPage=Next Page\nno=No\nnoPickFolder=No, pick folder\nnoAttachments=No attachments found\nnoColor=No Color\nnoFiles=No Files\nnoFileSelected=No file selected\nnoLibraries=No libraries found\nnoMoreResults=No more results\nnone=None\nnoOtherViewers=No other viewers\nnoPlugins=No plugins\nnoPreview=No preview\nnoResponse=No response from server\nnoResultsFor=No results for \'{1}\'\nnoRevisions=No revisions\nnoSearchResults=No search results found\nnoPageContentOrNotSaved=No anchors found on this page or it hasn\'t been saved yet\nnormal=Normal\nnorth=North\nnotADiagramFile=Not a diagram file\nnotALibraryFile=Not a library file\nnotAvailable=Not available\nnotAUtf8File=Not a UTF-8 file\nnotConnected=Not connected\nnote=Note\nnotUsingService=Not using {1}?\nnumberedList=Numbered list\noffline=Offline\nok=OK\noneDrive=OneDrive\nonline=Online\nopacity=Opacity\nopen=Open\nopenArrow=Open Arrow\nopenExistingDiagram=Open Existing Diagram\nopenFile=Open File\nopenFrom=Open from\nopenLibrary=Open Library\nopenLibraryFrom=Open Library from\nopenLink=Open Link\nopenInNewWindow=Open in New Window\nopenInThisWindow=Open in This Window\nopenIt=Open {1}\nopenRecent=Open Recent\nopenSupported=Supported formats are files saved from this software (.xml), .vsdx and .gliffy\noptions=Options\norganic=Organic\norgChart=Org Chart\northogonal=Orthogonal\notherViewer=other viewer\notherViewers=other viewers\noutline=Outline\noval=Oval\npage=Page\npageContent=Page Content\npageNotFound=Page not found\npageWithNumber=Page-{1}\npages=Pages\npageView=Page View\npageSetup=Page Setup\npageScale=Page Scale\npan=Pan\npanTooltip=Space+Drag to pan\npaperSize=Paper Size\npattern=Pattern\npaste=Paste\npasteHere=Paste here\npasteSize=Paste Size\npasteStyle=Paste Style\nperimeter=Perimeter\npermissionAnyone=Anyone can edit\npermissionAuthor=Owner and admins can edit\npickFolder=Pick a folder\npickLibraryDialogTitle=Select Library\npublicDiagramUrl=Public URL of the diagram\nplaceholders=Placeholders\nplantUml=PlantUML\nplugins=Plugins\npluginUrl=Plugin URL\npluginWarning=The page has requested to load the following plugin(s):\n \n {1}\n \n Would you like to load these plugin(s) now?\n \n NOTE : Only allow plugins to run if you fully understand the security implications of doing so.\n\nplusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone).\nportrait=Portrait\nposition=Position\nposterPrint=Poster Print\npreferences=Preferences\npreview=Preview\npreviousPage=Previous Page\nprint=Print\nprintAllPages=Print All Pages\nprocEng=Proc. Eng.\nproject=Project\npriority=Priority\nproperties=Properties\npublish=Publish\nquickStart=Quick Start Video\nrack=Rack\nradialTree=Radial Tree\nreadOnly=Read-only\nreconnecting=Reconnecting\nrecentlyUpdated=Recently Updated\nrecentlyViewed=Recently Viewed\nrectangle=Rectangle\nredirectToNewApp=This file was created or modified in a newer version of this app. You will be redirected now.\nrealtimeTimeout=It looks like you\'ve made a few changes while offline. We\'re sorry, these changes cannot be saved.\nredo=Redo\nrefresh=Refresh\nregularExpression=Regular Expression\nrelative=Relative\nrelativeUrlNotAllowed=Relative URL not allowed\nrememberMe=Remember me\nrememberThisSetting=Remember this setting\nremoveFormat=Clear Formatting\nremoveFromGroup=Remove from Group\nremoveIt=Remove {1}\nremoveWaypoint=Remove Waypoint\nrename=Rename\nrenamed=Renamed\nrenameIt=Rename {1}\nrenaming=Renaming\nreplace=Replace\nreplaceIt={1} already exists. Do you want to replace it?\nreplaceExistingDrawing=Replace existing drawing\nrequired=required\nreset=Reset\nresetView=Reset View\nresize=Resize\nresizeLargeImages=Do you want to resize large images to make the application run faster?\nretina=Retina\nresponsive=Responsive\nrestore=Restore\nrestoring=Restoring\nretryingIn=Retrying in {1} second(s)\nretryingLoad=Load failed. Retrying...\nretryingLogin=Login time out. Retrying...\nreverse=Reverse\nrevision=Revision\nrevisionHistory=Revision History\nrhombus=Rhombus\nright=Right\nrightAlign=Right Align\nrightToLeft=Right to left\nrotate=Rotate\nrotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees\nrotation=Rotation\nrounded=Rounded\nsave=Save\nsaveAndExit=Save & Exit\nsaveAs=Save as\nsaveAsXmlFile=Save as XML file?\nsaved=Saved\nsaveDiagramFirst=Please save the diagram first\nsaveDiagramsTo=Save diagrams to\nsaveLibrary403=Insufficient permissions to edit this library\nsaveLibrary500=There was an error while saving the library\nsaveLibraryReadOnly=Could not save library while read-only mode is active\nsaving=Saving\nscratchpad=Scratchpad\nscrollbars=Scrollbars\nsearch=Search\nsearchShapes=Search Shapes\nselectAll=Select All\nselectionOnly=Selection Only\nselectCard=Select Card\nselectEdges=Select Edges\nselectFile=Select File\nselectFolder=Select Folder\nselectFont=Select Font\nselectNone=Select None\nselectTemplate=Select Template\nselectVertices=Select Vertices\nsendMessage=Send\nsendYourFeedbackToDrawIo=Send your feedback to draw.io\nserviceUnavailableOrBlocked=Service unavailable or blocked\nsessionExpired=Your session has expired. Please refresh the browser window.\nsessionTimeoutOnSave=Your session has timed out and you have been disconnected from the Google Drive. Press OK to login and save. \nsetAsDefaultStyle=Set as Default Style\nshadow=Shadow\nshape=Shape\nshapes=Shapes\nshare=Share\nshareLink=Link for shared editing\nsharp=Sharp\nshow=Show\nshowStartScreen=Show Start Screen\nsidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect.\nsigns=Signs\nsignOut=Sign out\nsimple=Simple\nsimpleArrow=Simple Arrow\nsimpleViewer=Simple Viewer\nsize=Size\nsolid=Solid\nsourceSpacing=Source Spacing\nsouth=South\nsoftware=Software\nspace=Space\nspacing=Spacing\nspecialLink=Special Link\nstandard=Standard\nstartDrawing=Start drawing\nstopDrawing=Stop drawing\nstarting=Starting\nstraight=Straight\nstrikethrough=Strikethrough\nstrokeColor=Line Color\nstyle=Style\nsubscript=Subscript\nsummary=Summary\nsuperscript=Superscript\nsupport=Support\nswimlaneDiagram=Swimlane Diagram\nsysml=SysML\ntags=Tags\ntable=Table\ntables=Tables\ntakeOver=Take Over\ntargetSpacing=Target Spacing\ntemplate=Template\ntemplates=Templates\ntext=Text\ntextAlignment=Text Alignment\ntextOpacity=Text Opacity\ntheme=Theme\ntimeout=Timeout\ntitle=Title\nto=to\ntoBack=To Back\ntoFront=To Front\ntoolbar=Toolbar\ntooltips=Tooltips\ntop=Top\ntopAlign=Top Align\ntopLeft=Top Left\ntopRight=Top Right\ntransparent=Transparent\ntransparentBackground=Transparent Background\ntrello=Trello\ntryAgain=Try again\ntryOpeningViaThisPage=Try opening via this page\nturn=Rotate shape only by 90°\ntype=Type\ntwitter=Twitter\numl=UML\nunderline=Underline\nundo=Undo\nungroup=Ungroup\nunsavedChanges=Unsaved changes\nunsavedChangesClickHereToSave=Unsaved changes. Click here to save.\nuntitled=Untitled\nuntitledDiagram=Untitled Diagram\nuntitledLayer=Untitled Layer\nuntitledLibrary=Untitled Library\nunknownError=Unknown error\nupdateFile=Update {1}\nupdatingDocument=Updating Document. Please wait...\nupdatingPreview=Updating Preview. Please wait...\nupdatingSelection=Updating Selection. Please wait...\nupload=Upload\nurl=URL\nuseOffline=Use Offline\nuseRootFolder=Use root folder?\nuserManual=User Manual\nvertical=Vertical\nverticalFlow=Vertical Flow\nverticalTree=Vertical Tree\nview=View\nviewerSettings=Viewer Settings\nviewUrl=Link to view: {1}\nvoiceAssistant=Voice Assistant (beta)\nwarning=Warning\nwaypoints=Waypoints\nwest=West\nwidth=Width\nwiki=Wiki\nwordWrap=Word Wrap\nwritingDirection=Writing Direction\nyes=Yes\nyourEmailAddress=Your email address\nzoom=Zoom\nzoomIn=Zoom In\nzoomOut=Zoom Out\nbasic=Basic\nbusinessprocess=Business Processes\ncharts=Charts\nengineering=Engineering\nflowcharts=Flowcharts\ngmdl=Material Design\nmindmaps=Mindmaps\nmockups=Mockups\nnetworkdiagrams=Network Diagrams\nnothingIsSelected=Nothing is selected\nother=Other\nsoftwaredesign=Software Design\nvenndiagrams=Venn Diagrams\nwebEmailOrOther=Web, email or any other internet address\nwebLink=Web Link\nwireframes=Wireframes\nproperty=Property\nvalue=Value\nshowMore=Show More\nshowLess=Show Less\nmyDiagrams=My Diagrams\nallDiagrams=All Diagrams\nrecentlyUsed=Recently used\nlistView=List view\ngridView=Grid view\nresultsFor=Results for \'{1}\'\noneDriveCharsNotAllowed=The following characters are not allowed: ~ " # % * : < > ? / { | }\noneDriveInvalidDeviceName=The specified device name is invalid\nofficeNotLoggedOD=You are not logged in to OneDrive. Please open draw.io task pane and login first.\nofficeSelectSingleDiag=Please select a single draw.io diagram only without other contents.\nofficeSelectDiag=Please select a draw.io diagram.\nofficeCannotFindDiagram=Cannot find a draw.io diagram in the selection\nnoDiagrams=No diagrams found\nauthFailed=Authentication failed\nofficeFailedAuthMsg=Unable to successfully authenticate user or authorize application.\nconvertingDiagramFailed=Converting diagram failed\nofficeCopyImgErrMsg=Due to some limitations in the host application, the image could not be inserted. Please manually copy the image then paste it to the document.\ninsertingImageFailed=Inserting image failed\nofficeCopyImgInst=Instructions: Right-click the image below. Select "Copy image" from the context menu. Then, in the document, right-click and select "Paste" from the context menu.\nfolderEmpty=Folder is empty\nrecent=Recent\nsharedWithMe=Shared With Me\nsharepointSites=Sharepoint Sites\nerrorFetchingFolder=Error fetching folder items\nerrorAuthOD=Error authenticating to OneDrive\nofficeMainHeader=Adds draw.io diagrams to your document.\nofficeStepsHeader=This add-in performs the following steps:\nofficeStep1=Connects to Microsoft OneDrive, Google Drive or your device.\nofficeStep2=Select a draw.io diagram.\nofficeStep3=Insert the diagram into the document.\nofficeAuthPopupInfo=Please complete the authentication in the pop-up window.\nofficeSelDiag=Select draw.io Diagram:\nfiles=Files\nshared=Shared\nsharepoint=Sharepoint\nofficeManualUpdateInst=Instructions: Copy draw.io diagram from the document. Then, in the box below, right-click and select "Paste" from the context menu.\nofficeClickToEdit=Click icon to start editing:\npasteDiagram=Paste draw.io diagram here\nconnectOD=Connect to OneDrive\nselectChildren=Select Children\nselectSiblings=Select Siblings\nselectParent=Select Parent\nselectDescendants=Select Descendants\nlastSaved=Last saved {1} ago\nresolve=Resolve\nreopen=Re-open\nshowResolved=Show Resolved\nreply=Reply\nobjectNotFound=Object not found\nreOpened=Re-opened\nmarkedAsResolved=Marked as resolved\nnoCommentsFound=No comments found\ncomments=Comments\ntimeAgo={1} ago\nconfluenceCloud=Confluence Cloud\nlibraries=Libraries\nconfAnchor=Confluence Page Anchor\nconfTimeout=The connection has timed out\nconfSrvTakeTooLong=The server at {1} is taking too long to respond.\nconfCannotInsertNew=Cannot insert draw.io diagram to a new Confluence page\nconfSaveTry=Please save the page and try again.\nconfCannotGetID=Unable to determine page ID\nconfContactAdmin=Please contact your Confluence administrator.\nreadErr=Read Error\neditingErr=Editing Error\nconfExtEditNotPossible=This diagram cannot be edited externally. Please try editing it while editing the page\nconfEditedExt=Diagram/Page edited externally\ndiagNotFound=Diagram Not Found\nconfEditedExtRefresh=Diagram/Page is edited externally. Please refresh the page.\nconfCannotEditDraftDelOrExt=Cannot edit diagrams in a draft page, diagram is deleted from the page, or diagram is edited externally. Please check the page.\nretBack=Return back\nconfDiagNotPublished=The diagram does not belong to a published page\ncreatedByDraw=Created by draw.io\nfilenameShort=Filename too short\ninvalidChars=Invalid characters\nalreadyExst={1} already exists\ndraftReadErr=Draft Read Error\ndiagCantLoad=Diagram cannot be loaded\ndraftWriteErr=Draft Write Error\ndraftCantCreate=Draft could not be created\nconfDuplName=Duplicate diagram name detected. Please pick another name.\nconfSessionExpired=Looks like your session expired. Log in again to keep working.\nlogin=Login\ndrawPrev=draw.io preview\ndrawDiag=draw.io diagram\ninvalidCallFnNotFound=Invalid Call: {1} not found\ninvalidCallErrOccured=Invalid Call: An error occurred, {1}\nanonymous=Anonymous\nconfGotoPage=Go to containing page\nshowComments=Show Comments\nconfError=Error: {1}\ngliffyImport=Gliffy Import\ngliffyImportInst1=Click the "Start Import" button to import all Gliffy diagrams to draw.io.\ngliffyImportInst2=Please note that the import procedure will take some time and the browser window must remain open until the import is completed.\nstartImport=Start Import\ndrawConfig=draw.io Configuration\ncustomLib=Custom Libraries\ncustomTemp=Custom Templates\npageIdsExp=Page IDs Export\ndrawReindex=draw.io re-indexing (beta)\nworking=Working\ndrawConfigNotFoundInst=draw.io Configuration Space (DRAWIOCONFIG) does not exist. This space is needed to store draw.io configuration files and custom libraries/templates.\ncreateConfSp=Create Config Space\nunexpErrRefresh=Unexpected error, please refresh the page and try again.\nconfigJSONInst=Write draw.io JSON configuration in the editor below then click save. If you need help, please refer to\nthisPage=this page\ncurCustLib=Current Custom Libraries\nlibName=Library Name\naction=Action\ndrawConfID=draw.io Config ID\naddLibInst=Click the "Add Library" button to upload a new library.\naddLib=Add Library\ncustomTempInst1=Custom templates are draw.io diagrams saved in children pages of\ncustomTempInst2=For more details, please refer to\ntempsPage=Templates page\npageIdsExpInst1=Select export target, then click the "Start Export" button to export all pages IDs.\npageIdsExpInst2=Please note that the export procedure will take some time and the browser window must remain open until the export is completed.\nstartExp=Start Export\nrefreshDrawIndex=Refresh draw.io Diagrams Index\nreindexInst1=Click the "Start Indexing" button to refresh draw.io diagrams index.\nreindexInst2=Please note that the indexing procedure will take some time and the browser window must remain open until the indexing is completed.\nstartIndexing=Start Indexing\nconfAPageFoundFetch=Page "{1}" found. Fetching\nconfAAllDiagDone=All {1} diagrams processed. Process finished.\nconfAStartedProcessing=Started processing page "{1}"\nconfAAllDiagInPageDone=All {1} diagrams in page "{2}" processed successfully.\nconfAPartialDiagDone={1} out of {2} {3} diagrams in page "{4}" processed successfully.\nconfAUpdatePageFailed=Updating page "{1}" failed.\nconfANoDiagFoundInPage=No {1} diagrams found in page "{2}".\nconfAFetchPageFailed=Fetching the page failed.\nconfANoDiagFound=No {1} diagrams found. Process finished.\nconfASearchFailed=Searching for {1} diagrams failed. Please try again later.\nconfAGliffyDiagFound={2} diagram "{1}" found. Importing\nconfAGliffyDiagImported={2} diagram "{1}" imported successfully.\nconfASavingImpGliffyFailed=Saving imported {2} diagram "{1}" failed.\nconfAImportedFromByDraw=Imported from "{1}" by draw.io\nconfAImportGliffyFailed=Importing {2} diagram "{1}" failed.\nconfAFetchGliffyFailed=Fetching {2} diagram "{1}" failed.\nconfACheckBrokenDiagLnk=Checking for broken diagrams links.\nconfADelDiagLinkOf=Deleting diagram link of "{1}"\nconfADupLnk=(duplicate link)\nconfADelDiagLnkFailed=Deleting diagram link of "{1}" failed.\nconfAUnexpErrProcessPage=Unexpected error during processing the page with id: {1}\nconfADiagFoundIndex=Diagram "{1}" found. Indexing\nconfADiagIndexSucc=Diagram "{1}" indexed successfully.\nconfAIndexDiagFailed=Indexing diagram "{1}" failed.\nconfASkipDiagOtherPage=Skipped "{1}" as it belongs to another page!\nconfADiagUptoDate=Diagram "{1}" is up to date.\nconfACheckPagesWDraw=Checking pages having draw.io diagrams.\nconfAErrOccured=An error occurred!\nsavedSucc=Saved successfully\nconfASaveFailedErr=Saving Failed (Unexpected Error)\ncharacter=Character\nconfAConfPageDesc=This page contains draw.io configuration file (configuration.json) as attachment\nconfALibPageDesc=This page contains draw.io custom libraries as attachments\nconfATempPageDesc=This page contains draw.io custom templates as attachments\nworking=Working\nconfAConfSpaceDesc=This space is used to store draw.io configuration files and custom libraries/templates\nconfANoCustLib=No Custom Libraries\ndelFailed=Delete failed!\nshowID=Show ID\nconfAIncorrectLibFileType=Incorrect file type. Libraries should be XML files.\nuploading=Uploading\nconfALibExist=This library already exists\nconfAUploadSucc=Uploaded successfully\nconfAUploadFailErr=Upload Failed (Unexpected Error)\nhiResPreview=High Res Preview\nofficeNotLoggedGD=You are not logged in to Google Drive. Please open draw.io task pane and login first.\nofficePopupInfo=Please complete the process in the pop-up window.\npickODFile=Pick OneDrive File\npickGDriveFile=Pick Google Drive File\npickDeviceFile=Pick Device File\nvsdNoConfig="vsdurl" is not configured\nruler=Ruler\nunits=Units\npoints=Points\ninches=Inches\nmillimeters=Millimeters\nconfEditDraftDelOrExt=This diagram is in a draft page, is deleted from the page, or is edited externally. It will be saved as a new attachment version and may not be reflected in the page.\nconfDiagEditedExt=Diagram is edited in another session. It will be saved as a new attachment version but the page will show other session\'s modifications.\nmacroNotFound=Macro Not Found\nconfAInvalidPageIdsFormat=Incorrect Page IDs file format\nconfACollectingCurPages=Collecting current pages\nconfABuildingPagesMap=Building pages mapping\nconfAProcessDrawDiag=Started processing imported draw.io diagrams\nconfAProcessDrawDiagDone=Finished processing imported draw.io diagrams\nconfAProcessImpPages=Started processing imported pages\nconfAErrPrcsDiagInPage=Error processing draw.io diagrams in page "{1}"\nconfAPrcsDiagInPage=Processing draw.io diagrams in page "{1}"\nconfAImpDiagram=Importing diagram "{1}"\nconfAImpDiagramFailed=Importing diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \nconfAImpDiagramError=Error importing diagram "{1}". Cannot fetch or save the diagram. Cannot fix this diagram links.\nconfAUpdateDgrmCCFailed=Updating link to diagram "{1}" failed.\nconfImpDiagramSuccess=Updating diagram "{1}" done successfully.\nconfANoLnksInDrgm=No links to update in: {1}\nconfAUpdateLnkToPg=Updated link to page: "{1}" in diagram: "{2}"\nconfAUpdateLBLnkToPg=Updated lightbox link to page: "{1}" in diagram: "{2}"\nconfAUpdateLnkBase=Updated base URL from: "{1}" to: "{2}" in diagram: "{3}"\nconfAPageIdsImpDone=Page IDs Import finished.\nconfAPrcsMacrosInPage=Processing draw.io macros in page "{1}"\nconfAErrFetchPage=Error fetching page "{1}"\nconfAFixingMacro=Fixing macro of diagram "{1}"\nconfAErrReadingExpFile=Error reading export file\nconfAPrcsDiagInPageDone=Processing draw.io diagrams in page "{1}" finished\nconfAFixingMacroSkipped=Fixing macro of diagram "{1}" failed. Cannot find its new page ID. Maybe it points to a page that is not imported. \npageIdsExpTrg=Export target\nconfALucidDiagImgImported={2} diagram "{1}" image extracted successfully.\nconfASavingLucidDiagImgFailed=Extracting {2} diagram "{1}" image failed.\nconfGetInfoFailed=Fetching file info from {1} failed.\nconfCheckCacheFailed=Cannot get cached file info.\nconfReadFileErr=Cannot read "{1}" file from {2}.\nconfSaveCacheFailed=Unexpected error. Cannot save cached file\norgChartType=Org Chart Type\nlinear=Linear\nhanger2=Hanger 2\nhanger4=Hanger 4\nfishbone1=Fishbone 1\nfishbone2=Fishbone 2\n1ColumnLeft=Single Column Left\n1ColumnRight=Single Column Right\nsmart=Smart\nparentChildSpacing=Parent Child Spacing\nsiblingSpacing=Sibling Spacing\n');Graph.prototype.defaultThemes["default-style2"]=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#ffffff"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#ffffff"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#000000"/><add as="fontColor" value="#000000"/></add><add as="fancy"><add as="shadow" value="1"/><add as="glass" value="1"/></add><add as="gray" extend="fancy"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="blue" extend="fancy"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="green" extend="fancy"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="turquoise" extend="fancy"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="yellow" extend="fancy"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="orange" extend="fancy"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="red" extend="fancy"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="pink" extend="fancy"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="purple" extend="fancy"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="plain-gray"><add as="gradientColor" value="#B3B3B3"/><add as="fillColor" value="#F5F5F5"/><add as="strokeColor" value="#666666"/></add><add as="plain-blue"><add as="gradientColor" value="#7EA6E0"/><add as="fillColor" value="#DAE8FC"/><add as="strokeColor" value="#6C8EBF"/></add><add as="plain-green"><add as="gradientColor" value="#97D077"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#82B366"/></add><add as="plain-turquoise"><add as="gradientColor" value="#67AB9F"/><add as="fillColor" value="#D5E8D4"/><add as="strokeColor" value="#6A9153"/></add><add as="plain-yellow"><add as="gradientColor" value="#FFD966"/><add as="fillColor" value="#FFF2CC"/><add as="strokeColor" value="#D6B656"/></add><add as="plain-orange"><add as="gradientColor" value="#FFA500"/><add as="fillColor" value="#FFCD28"/><add as="strokeColor" value="#D79B00"/></add><add as="plain-red"><add as="gradientColor" value="#EA6B66"/><add as="fillColor" value="#F8CECC"/><add as="strokeColor" value="#B85450"/></add><add as="plain-pink"><add as="gradientColor" value="#B5739D"/><add as="fillColor" value="#E6D0DE"/><add as="strokeColor" value="#996185"/></add><add as="plain-purple"><add as="gradientColor" value="#8C6C9C"/><add as="fillColor" value="#E1D5E7"/><add as="strokeColor" value="#9673A6"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#ffffff"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="white"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#ffffff"/></add></mxStylesheet>').documentElement; Graph.prototype.defaultThemes.darkTheme=mxUtils.parseXml('<mxStylesheet><add as="defaultVertex"><add as="shape" value="label"/><add as="perimeter" value="rectanglePerimeter"/><add as="fontSize" value="12"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="fillColor" value="#2a2a2a"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="defaultEdge"><add as="shape" value="connector"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="endArrow" value="classic"/><add as="fontSize" value="11"/><add as="fontFamily" value="Helvetica"/><add as="align" value="center"/><add as="verticalAlign" value="middle"/><add as="rounded" value="1"/><add as="strokeColor" value="#f0f0f0"/><add as="fontColor" value="#f0f0f0"/></add><add as="text"><add as="fillColor" value="none"/><add as="gradientColor" value="none"/><add as="strokeColor" value="none"/><add as="align" value="left"/><add as="verticalAlign" value="top"/></add><add as="label"><add as="fontStyle" value="1"/><add as="align" value="left"/><add as="verticalAlign" value="middle"/><add as="spacing" value="2"/><add as="spacingLeft" value="52"/><add as="imageWidth" value="42"/><add as="imageHeight" value="42"/><add as="rounded" value="1"/></add><add as="icon" extend="label"><add as="align" value="center"/><add as="imageAlign" value="center"/><add as="verticalLabelPosition" value="bottom"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="spacing" value="0"/><add as="spacingLeft" value="0"/><add as="spacingTop" value="6"/><add as="fontStyle" value="0"/><add as="imageWidth" value="48"/><add as="imageHeight" value="48"/></add><add as="swimlane"><add as="shape" value="swimlane"/><add as="fontSize" value="12"/><add as="fontStyle" value="1"/><add as="startSize" value="23"/></add><add as="group"><add as="verticalAlign" value="top"/><add as="fillColor" value="none"/><add as="strokeColor" value="none"/><add as="gradientColor" value="none"/><add as="pointerEvents" value="0"/></add><add as="ellipse"><add as="shape" value="ellipse"/><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombus"><add as="shape" value="rhombus"/><add as="perimeter" value="rhombusPerimeter"/></add><add as="triangle"><add as="shape" value="triangle"/><add as="perimeter" value="trianglePerimeter"/></add><add as="line"><add as="shape" value="line"/><add as="strokeWidth" value="4"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="spacingTop" value="8"/></add><add as="image"><add as="shape" value="image"/><add as="labelBackgroundColor" value="#2a2a2a"/><add as="verticalAlign" value="top"/><add as="verticalLabelPosition" value="bottom"/></add><add as="roundImage" extend="image"><add as="perimeter" value="ellipsePerimeter"/></add><add as="rhombusImage" extend="image"><add as="perimeter" value="rhombusPerimeter"/></add><add as="arrow"><add as="shape" value="arrow"/><add as="edgeStyle" value="none"/><add as="fillColor" value="#2a2a2a"/></add></mxStylesheet>').documentElement;GraphViewer=function(a,b,f){this.init(a,b,f)};mxUtils.extend(GraphViewer,mxEventSource);GraphViewer.prototype.editBlankUrl="https://www.draw.io/";GraphViewer.prototype.imageBaseUrl="https://www.draw.io/";GraphViewer.prototype.toolbarHeight="BackCompat"==document.compatMode?28:30;GraphViewer.prototype.lightboxChrome=!0;GraphViewer.prototype.lightboxZIndex=999;GraphViewer.prototype.toolbarZIndex=999;GraphViewer.prototype.autoFit=!0;GraphViewer.prototype.center=!1;GraphViewer.prototype.allowZoomIn=!1; GraphViewer.prototype.showTitleAsTooltip=!1;GraphViewer.prototype.checkVisibleState=!0;GraphViewer.prototype.minHeight=28;GraphViewer.prototype.minWidth=100; GraphViewer.prototype.init=function(a,b,f){this.graphConfig=null!=f?f:{};this.autoFit=null!=this.graphConfig["auto-fit"]?this.graphConfig["auto-fit"]:this.autoFit;this.allowZoomIn=null!=this.graphConfig["allow-zoom-in"]?this.graphConfig["allow-zoom-in"]:this.allowZoomIn;this.center=null!=this.graphConfig.center?this.graphConfig.center:this.center;this.checkVisibleState=null!=this.graphConfig["check-visible-state"]?this.graphConfig["check-visible-state"]:this.checkVisibleState;this.toolbarItems=null!= @@ -3571,23 +3572,23 @@ d)):new ResizeSensor(this.graph.container,d));if(this.graphConfig.resize||(this. "100%");var f=null!=this.graphConfig["max-height"]?this.graphConfig["max-height"]:""!=a.style.height&&this.autoFit?a.offsetHeight:void 0;if(0<a.offsetWidth&&(this.allowZoomIn||b.width+2*this.graph.border>a.offsetWidth||b.height+2*this.graph.border>f)){var m=null;null!=f&&b.height+2*this.graph.border>f-2&&(m=(f-2*this.graph.border-2)/b.height);this.fitGraph(m)}else this.widthIsEmpty||0!=this.graphConfig.resize||""==a.style.height?(this.graph.view.setTranslate(Math.floor(this.graph.border-b.x/this.graph.view.scale), Math.floor(this.graph.border-b.y/this.graph.view.scale)),l=a.offsetWidth):this.graph.center((!this.widthIsEmpty||b.width<this.minWidth)&&1!=this.graphConfig.resize);a.style.minWidth=d});mxClient.IS_QUIRKS||8==document.documentMode?window.setTimeout(p,0):p();this.positionGraph=function(){b=this.graph.getGraphBounds();l=null;p()}};GraphViewer.prototype.updateContainerWidth=function(a,b){a.style.width=b+"px"}; GraphViewer.prototype.updateContainerHeight=function(a,b){if(this.zoomEnabled||!this.autoFit||"BackCompat"==document.compatMode||mxClient.IS_QUIRKS||8==document.documentMode)a.style.height=b+"px"}; -GraphViewer.prototype.showLayers=function(a,b){var f=this.graphConfig.layers,f=null!=f?f.split(" "):[],d=this.graphConfig.layerIds,l=null!=d&&0<d.length;if(0<f.length||l||null!=b){var m=null!=b?b.getModel():null,p=a.getModel();p.beginUpdate();try{for(var u=p.getChildCount(p.root),z=0;z<u;z++)p.setVisible(p.getChildAt(p.root,z),null!=b?m.isVisible(m.getChildAt(m.root,z)):!1);if(null==m)if(l)for(z=0;z<d.length;z++)p.setVisible(p.getCell(d[z]),!0);else for(z=0;z<f.length;z++)p.setVisible(p.getChildAt(p.root, -parseInt(f[z])),!0)}finally{p.endUpdate()}}}; +GraphViewer.prototype.showLayers=function(a,b){var f=this.graphConfig.layers,f=null!=f?f.split(" "):[],d=this.graphConfig.layerIds,l=null!=d&&0<d.length;if(0<f.length||l||null!=b){var m=null!=b?b.getModel():null,p=a.getModel();p.beginUpdate();try{for(var u=p.getChildCount(p.root),A=0;A<u;A++)p.setVisible(p.getChildAt(p.root,A),null!=b?m.isVisible(m.getChildAt(m.root,A)):!1);if(null==m)if(l)for(A=0;A<d.length;A++)p.setVisible(p.getCell(d[A]),!0);else for(A=0;A<f.length;A++)p.setVisible(p.getChildAt(p.root, +parseInt(f[A])),!0)}finally{p.endUpdate()}}}; GraphViewer.prototype.addToolbar=function(){function a(a,b,d,e){var g=document.createElement("div");g.style.borderRight="1px solid #d0d0d0";g.style.padding="3px 6px 3px 6px";mxEvent.addListener(g,"click",a);null!=d&&g.setAttribute("title",d);g.style.display=mxClient.IS_QUIRKS?"inline":"inline-block";a=document.createElement("img");a.setAttribute("border","0");a.setAttribute("src",b);null==e||e?(mxEvent.addListener(g,"mouseenter",function(){g.style.backgroundColor="#ddd"}),mxEvent.addListener(g,"mouseleave", function(){g.style.backgroundColor="#eee"}),mxUtils.setOpacity(a,60),g.style.cursor="pointer"):mxUtils.setOpacity(g,30);g.appendChild(a);f.appendChild(g);c++;return g}var b=this.graph.container;"bottom"==this.graphConfig["toolbar-position"]?b.style.marginBottom=this.toolbarHeight+"px":"inline"!=this.graphConfig["toolbar-position"]&&(b.style.marginTop=this.toolbarHeight+"px");var f=b.ownerDocument.createElement("div");f.style.position="absolute";f.style.overflow="hidden";f.style.boxSizing="border-box"; f.style.whiteSpace="nowrap";f.style.textAlign="left";f.style.zIndex=this.toolbarZIndex;f.style.backgroundColor="#eee";f.style.height=this.toolbarHeight+"px";this.toolbar=f;if("inline"==this.graphConfig["toolbar-position"]){mxUtils.setPrefixedStyle(f.style,"transition","opacity 100ms ease-in-out");mxUtils.setOpacity(f,30);var d=null,l=null,m=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);d=window.setTimeout(mxUtils.bind(this, function(){mxUtils.setOpacity(f,0);d=null;l=window.setTimeout(mxUtils.bind(this,function(){f.style.display="none";l=null}),100)}),a||200)}),p=mxUtils.bind(this,function(a){null!=d&&(window.clearTimeout(d),fadeThead=null);null!=l&&(window.clearTimeout(l),fadeThead2=null);f.style.display="";mxUtils.setOpacity(f,a||30)});mxEvent.addListener(this.graph.container,mxClient.IS_POINTER?"pointermove":"mousemove",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||(p(30),m())}));mxEvent.addListener(f,mxClient.IS_POINTER? -"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(f,"mouseenter",mxUtils.bind(this,function(a){p(100)}));mxEvent.addListener(f,"mousemove",mxUtils.bind(this,function(a){p(100);mxEvent.consume(a)}));mxEvent.addListener(f,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||p(30)}));var u=this.graph,z=u.getTolerance();u.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY(); -this.scrollLeft=u.container.scrollLeft;this.scrollTop=u.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-u.container.scrollLeft)<z&&Math.abs(this.scrollTop-u.container.scrollTop)<z&&Math.abs(this.startX-b.getGraphX())<z&&Math.abs(this.startY-b.getGraphY())<z&&(0<parseFloat(f.style.opacity||0)?m():p(30))}})}for(var B=this.toolbarItems,c=0,e=null,k=null,q=0;q<B.length;q++){var n=B[q];if("pages"==n){k=b.ownerDocument.createElement("div"); -k.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(k,70);var g=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");g.style.borderRightStyle="none";g.style.paddingLeft="0px";g.style.paddingRight="0px";f.appendChild(k);var A=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+ -1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");A.style.paddingLeft="0px";A.style.paddingRight="0px";n=mxUtils.bind(this,function(){k.innerHTML="";mxUtils.write(k,this.currentPage+1+" / "+this.diagrams.length);k.style.display=1<this.diagrams.length?"inline-block":"none";g.style.display=k.style.display;A.style.display=k.style.display});this.addListener("graphChanged",n);n()}else if("zoom"==n)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage, -mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==n){if(this.layersEnabled){var x=this.graph.getModel(),t=a(mxUtils.bind(this,function(a){if(null!=e)e.parentNode.removeChild(e), -e=null;else{e=this.graph.createLayersDialog();mxEvent.addListener(e,"mouseleave",function(){e.parentNode.removeChild(e);e=null});a=t.getBoundingClientRect();e.style.width="140px";e.style.padding="2px 0px 2px 0px";e.style.border="1px solid #d0d0d0";e.style.backgroundColor="#eee";e.style.fontFamily="Helvetica Neue,Helvetica,Arial Unicode MS,Arial";e.style.fontSize="11px";e.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(e,80);var b=mxUtils.getDocumentScrollOrigin(document);e.style.left=b.x+a.left+ -"px";e.style.top=b.y+a.bottom+"px";document.body.appendChild(e)}}),Editor.layersImage,mxResources.get("layers")||"Layers");x.addListener(mxEvent.CHANGE,function(){t.style.display=1<x.getChildCount(x.root)?"inline-block":"none"});t.style.display=1<x.getChildCount(x.root)?"inline-block":"none"}}else"lightbox"==n?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(n=this.graphConfig["toolbar-buttons"][n], +"pointermove":"mousemove",function(a){mxEvent.consume(a)});mxEvent.addListener(f,"mouseenter",mxUtils.bind(this,function(a){p(100)}));mxEvent.addListener(f,"mousemove",mxUtils.bind(this,function(a){p(100);mxEvent.consume(a)}));mxEvent.addListener(f,"mouseleave",mxUtils.bind(this,function(a){mxEvent.isTouchEvent(a)||p(30)}));var u=this.graph,A=u.getTolerance();u.addMouseListener({startX:0,startY:0,scrollLeft:0,scrollTop:0,mouseDown:function(a,b){this.startX=b.getGraphX();this.startY=b.getGraphY(); +this.scrollLeft=u.container.scrollLeft;this.scrollTop=u.container.scrollTop},mouseMove:function(a,b){},mouseUp:function(a,b){mxEvent.isTouchEvent(b.getEvent())&&Math.abs(this.scrollLeft-u.container.scrollLeft)<A&&Math.abs(this.scrollTop-u.container.scrollTop)<A&&Math.abs(this.startX-b.getGraphX())<A&&Math.abs(this.startY-b.getGraphY())<A&&(0<parseFloat(f.style.opacity||0)?m():p(30))}})}for(var B=this.toolbarItems,c=0,e=null,k=null,q=0;q<B.length;q++){var n=B[q];if("pages"==n){k=b.ownerDocument.createElement("div"); +k.style.cssText="display:inline-block;position:relative;padding:3px 4px 0 4px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;";mxUtils.setOpacity(k,70);var g=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage-1)}),Editor.previousImage,mxResources.get("previousPage")||"Previous Page");g.style.borderRightStyle="none";g.style.paddingLeft="0px";g.style.paddingRight="0px";f.appendChild(k);var z=a(mxUtils.bind(this,function(){this.selectPage(this.currentPage+ +1)}),Editor.nextImage,mxResources.get("nextPage")||"Next Page");z.style.paddingLeft="0px";z.style.paddingRight="0px";n=mxUtils.bind(this,function(){k.innerHTML="";mxUtils.write(k,this.currentPage+1+" / "+this.diagrams.length);k.style.display=1<this.diagrams.length?"inline-block":"none";g.style.display=k.style.display;z.style.display=k.style.display});this.addListener("graphChanged",n);n()}else if("zoom"==n)this.zoomEnabled&&(a(mxUtils.bind(this,function(){this.graph.zoomOut()}),Editor.zoomOutImage, +mxResources.get("zoomOut")||"Zoom Out"),a(mxUtils.bind(this,function(){this.graph.zoomIn()}),Editor.zoomInImage,mxResources.get("zoomIn")||"Zoom In"),a(mxUtils.bind(this,function(){this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,this.graph.initialViewState.translate.x,this.graph.initialViewState.translate.y)}),Editor.zoomFitImage,mxResources.get("fit")||"Fit"));else if("layers"==n){if(this.layersEnabled){var x=this.graph.getModel(),v=a(mxUtils.bind(this,function(a){if(null!=e)e.parentNode.removeChild(e), +e=null;else{e=this.graph.createLayersDialog();mxEvent.addListener(e,"mouseleave",function(){e.parentNode.removeChild(e);e=null});a=v.getBoundingClientRect();e.style.width="140px";e.style.padding="2px 0px 2px 0px";e.style.border="1px solid #d0d0d0";e.style.backgroundColor="#eee";e.style.fontFamily="Helvetica Neue,Helvetica,Arial Unicode MS,Arial";e.style.fontSize="11px";e.style.zIndex=this.toolbarZIndex+1;mxUtils.setOpacity(e,80);var b=mxUtils.getDocumentScrollOrigin(document);e.style.left=b.x+a.left+ +"px";e.style.top=b.y+a.bottom+"px";document.body.appendChild(e)}}),Editor.layersImage,mxResources.get("layers")||"Layers");x.addListener(mxEvent.CHANGE,function(){v.style.display=1<x.getChildCount(x.root)?"inline-block":"none"});v.style.display=1<x.getChildCount(x.root)?"inline-block":"none"}}else"lightbox"==n?this.lightboxEnabled&&a(mxUtils.bind(this,function(){this.showLightbox()}),Editor.maximizeImage,mxResources.get("show")||"Show"):null!=this.graphConfig["toolbar-buttons"]&&(n=this.graphConfig["toolbar-buttons"][n], null!=n&&a(null==n.enabled||n.enabled?n.handler:function(){},n.image,n.title,n.enabled))}null!=this.graph.minimumContainerSize&&(this.graph.minimumContainerSize.width=34*c);null!=this.graphConfig.title&&(B=b.ownerDocument.createElement("div"),B.style.cssText="display:inline-block;position:relative;padding:3px 6px 0 6px;vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;",B.setAttribute("title",this.graphConfig.title),mxUtils.write(B,this.graphConfig.title),mxUtils.setOpacity(B, -70),f.appendChild(B));this.minToolbarWidth=34*c;var H=b.style.border,B=mxUtils.bind(this,function(){f.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px";f.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top- -c.top,bottom:a.bottom-c.top,right:a.right-c.left};f.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?f.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(f.style.marginTop=-this.toolbarHeight+"px",f.style.top=a.top+1+"px"):f.style.top=a.top+"px";"1px solid transparent"==H&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(f);var d=mxUtils.bind(this,function(){null!=f.parentNode&&f.parentNode.removeChild(f);null!=e&&(e.parentNode.removeChild(e), -e=null);b.style.border=H});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==f||a==e)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else f.style.top=-this.toolbarHeight+"px",b.appendChild(f)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(b,"mouseenter",B):B()}; +70),f.appendChild(B));this.minToolbarWidth=34*c;var I=b.style.border,B=mxUtils.bind(this,function(){f.style.width="inline"==this.graphConfig["toolbar-position"]?"auto":Math.max(this.minToolbarWidth,b.offsetWidth)+"px";f.style.border="1px solid #d0d0d0";if(1!=this.graphConfig["toolbar-nohide"]){var a=b.getBoundingClientRect(),c=mxUtils.getScrollOrigin(document.body),c="relative"===document.body.style.position?document.body.getBoundingClientRect():{left:-c.x,top:-c.y},a={left:a.left-c.left,top:a.top- +c.top,bottom:a.bottom-c.top,right:a.right-c.left};f.style.left=a.left+"px";"bottom"==this.graphConfig["toolbar-position"]?f.style.top=a.bottom-1+"px":"inline"!=this.graphConfig["toolbar-position"]?(f.style.marginTop=-this.toolbarHeight+"px",f.style.top=a.top+1+"px"):f.style.top=a.top+"px";"1px solid transparent"==I&&(b.style.border="1px solid #d0d0d0");document.body.appendChild(f);var d=mxUtils.bind(this,function(){null!=f.parentNode&&f.parentNode.removeChild(f);null!=e&&(e.parentNode.removeChild(e), +e=null);b.style.border=I});mxEvent.addListener(document,"mousemove",function(a){for(a=mxEvent.getSource(a);null!=a;){if(a==b||a==f||a==e)return;a=a.parentNode}d()});mxEvent.addListener(document,"mouseleave",function(a){d()})}else f.style.top=-this.toolbarHeight+"px",b.appendChild(f)});1!=this.graphConfig["toolbar-nohide"]?mxEvent.addListener(b,"mouseenter",B):B()}; GraphViewer.prototype.addClickHandler=function(a,b){a.linkPolicy=this.graphConfig.target||a.linkPolicy;a.addClickHandler(this.graphConfig.highlight,mxUtils.bind(this,function(f,d){if(null==d){var l=mxEvent.getSource(f);"a"==l.nodeName.toLowerCase()&&(d=l.getAttribute("href"))}null!=b?null==d||a.isCustomLink(d)?mxEvent.consume(f):a.isExternalProtocol(d)||a.isBlankLink(d)||window.setTimeout(function(){b.destroy()},0):null!=d&&null==b&&a.isCustomLink(d)&&(mxEvent.isTouchEvent(f)||!mxEvent.isPopupTrigger(f))&& a.customLinkClicked(d)&&mxEvent.consume(f)}),mxUtils.bind(this,function(a){null!=b||!this.lightboxClickEnabled||mxEvent.isTouchEvent(a)&&0!=this.toolbarItems.length||this.showLightbox()}))}; GraphViewer.prototype.showLightbox=function(a,b,f){if("open"==this.graphConfig.lightbox||window.self!==window.top)if(null==this.lightboxWindow||this.lightboxWindow.closed){a=null!=a?a:null!=this.graphConfig.editable?this.graphConfig.editable:!0;f={client:1,lightbox:1,target:null!=f?f:"blank"};a&&(f.edit=this.graphConfig.edit||"_blank");if(null!=b?b:1)f.close=1;this.layersEnabled&&(f.layers=1);null!=this.graphConfig&&0!=this.graphConfig.nav&&(f.nav=1);null!=this.graphConfig&&null!=this.graphConfig.highlight&& @@ -3597,10 +3598,10 @@ GraphViewer.prototype.showLocalLightbox=function(){var a=mxUtils.getDocumentScro var f=document.createElement("img");f.setAttribute("border","0");f.setAttribute("src",Editor.closeImage);mxClient.IS_QUIRKS?(f.style.position="absolute",f.style.right="32px",f.style.top=a.y+32+"px"):f.style.cssText="position:fixed;top:32px;right:32px;";f.style.cursor="pointer";mxEvent.addListener(f,"click",function(){l.destroy()});urlParams.pages="1";urlParams.page=this.currentPage;urlParams["page-id"]=this.graphConfig.pageId;urlParams["layer-ids"]=null!=this.graphConfig.layerIds&&0<this.graphConfig.layerIds.length? this.graphConfig.layerIds.join(" "):null;urlParams.nav=0!=this.graphConfig.nav?"1":"0";urlParams.layers=this.layersEnabled?"1":"0";if(null==document.documentMode||10<=document.documentMode)Editor.prototype.editButtonLink=this.graphConfig.edit,Editor.prototype.editButtonFunc=this.graphConfig.editFunc;EditorUi.prototype.updateActionStates=function(){};EditorUi.prototype.addBeforeUnloadListener=function(){};EditorUi.prototype.addChromelessClickHandler=function(){};var d=Graph.prototype.shadowId;Graph.prototype.shadowId= "lightboxDropShadow";var l=new EditorUi(new Editor(!0),document.createElement("div"),!0);l.editor.editBlankUrl=this.editBlankUrl;l.editor.graph.shadowId="lightboxDropShadow";Graph.prototype.shadowId=d;l.refresh=function(){};var m=mxUtils.bind(this,function(a){27==a.keyCode&&l.destroy()}),p=l.destroy;l.destroy=function(){mxEvent.removeListener(document.documentElement,"keydown",m);document.body.removeChild(b);document.body.removeChild(f);document.body.style.overflow="auto";GraphViewer.resizeSensorEnabled= -!0;p.apply(this,arguments)};var u=l.editor.graph,z=u.container;z.style.overflow="hidden";this.lightboxChrome?(z.style.border="1px solid #c0c0c0",z.style.margin="40px",mxEvent.addListener(document.documentElement,"keydown",m)):(b.style.display="none",f.style.display="none");var B=this;u.getImageFromBundles=function(a){return B.getImageUrl(a)};var c=l.createTemporaryGraph;l.createTemporaryGraph=function(){var a=c.apply(this,arguments);a.getImageFromBundles=function(a){return B.getImageUrl(a)};return a}; -this.graphConfig.move&&(u.isMoveCellsEvent=function(a){return!0});mxClient.IS_QUIRKS||(mxUtils.setPrefixedStyle(z.style,"border-radius","4px"),z.style.position="fixed");GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow="hidden";mxClient.IS_SF||mxClient.IS_EDGE||(mxUtils.setPrefixedStyle(z.style,"transform","rotateY(90deg)"),mxUtils.setPrefixedStyle(z.style,"transition","all .25s ease-in-out"));this.addClickHandler(u,l);window.setTimeout(mxUtils.bind(this,function(){z.style.outline="none"; -z.style.zIndex=this.lightboxZIndex;f.style.zIndex=this.lightboxZIndex;document.body.appendChild(z);document.body.appendChild(f);l.setFileData(this.xml);mxUtils.setPrefixedStyle(z.style,"transform","rotateY(0deg)");l.chromelessToolbar.style.bottom="60px";l.chromelessToolbar.style.zIndex=this.lightboxZIndex;document.body.appendChild(l.chromelessToolbar);l.getEditBlankXml=mxUtils.bind(this,function(){return this.xml});mxClient.IS_QUIRKS&&(z.style.position="absolute",z.style.display="block",z.style.left= -a.x+"px",z.style.top=a.y+"px",z.style.width=document.body.clientWidth-80+"px",z.style.height=document.body.clientHeight-80+"px",z.style.backgroundColor="white",l.chromelessToolbar.style.display="block",l.chromelessToolbar.style.position="absolute",l.chromelessToolbar.style.bottom="",l.chromelessToolbar.style.top=a.y+document.body.clientHeight-100+"px");l.lightboxFit();l.chromelessResize();this.showLayers(u,this.graph);mxEvent.addListener(b,"click",function(){l.destroy()})}),0);return l}; +!0;p.apply(this,arguments)};var u=l.editor.graph,A=u.container;A.style.overflow="hidden";this.lightboxChrome?(A.style.border="1px solid #c0c0c0",A.style.margin="40px",mxEvent.addListener(document.documentElement,"keydown",m)):(b.style.display="none",f.style.display="none");var B=this;u.getImageFromBundles=function(a){return B.getImageUrl(a)};var c=l.createTemporaryGraph;l.createTemporaryGraph=function(){var a=c.apply(this,arguments);a.getImageFromBundles=function(a){return B.getImageUrl(a)};return a}; +this.graphConfig.move&&(u.isMoveCellsEvent=function(a){return!0});mxClient.IS_QUIRKS||(mxUtils.setPrefixedStyle(A.style,"border-radius","4px"),A.style.position="fixed");GraphViewer.resizeSensorEnabled=!1;document.body.style.overflow="hidden";mxClient.IS_SF||mxClient.IS_EDGE||(mxUtils.setPrefixedStyle(A.style,"transform","rotateY(90deg)"),mxUtils.setPrefixedStyle(A.style,"transition","all .25s ease-in-out"));this.addClickHandler(u,l);window.setTimeout(mxUtils.bind(this,function(){A.style.outline="none"; +A.style.zIndex=this.lightboxZIndex;f.style.zIndex=this.lightboxZIndex;document.body.appendChild(A);document.body.appendChild(f);l.setFileData(this.xml);mxUtils.setPrefixedStyle(A.style,"transform","rotateY(0deg)");l.chromelessToolbar.style.bottom="60px";l.chromelessToolbar.style.zIndex=this.lightboxZIndex;document.body.appendChild(l.chromelessToolbar);l.getEditBlankXml=mxUtils.bind(this,function(){return this.xml});mxClient.IS_QUIRKS&&(A.style.position="absolute",A.style.display="block",A.style.left= +a.x+"px",A.style.top=a.y+"px",A.style.width=document.body.clientWidth-80+"px",A.style.height=document.body.clientHeight-80+"px",A.style.backgroundColor="white",l.chromelessToolbar.style.display="block",l.chromelessToolbar.style.position="absolute",l.chromelessToolbar.style.bottom="",l.chromelessToolbar.style.top=a.y+document.body.clientHeight-100+"px");l.lightboxFit();l.chromelessResize();this.showLayers(u,this.graph);mxEvent.addListener(b,"click",function(){l.destroy()})}),0);return l}; GraphViewer.processElements=function(a){mxUtils.forEach(GraphViewer.getElementsByClassName(a||"mxgraph"),function(a){try{a.innerHTML="",GraphViewer.createViewerForElement(a)}catch(f){throw a.innerHTML=f.message,f;}})}; GraphViewer.getElementsByClassName=function(a){if(document.getElementsByClassName){var b=document.getElementsByClassName(a);a=[];for(var f=0;f<b.length;f++)a.push(b[f]);return a}for(var d=document.getElementsByTagName("*"),b=[],f=0;f<d.length;f++){var l=d[f].className;null!=l&&0<l.length&&(l=l.split(" "),0<=mxUtils.indexOf(l,a)&&b.push(d[f]))}return b}; GraphViewer.createViewerForElement=function(a,b){var f=a.getAttribute("data-mxgraph");if(null!=f){var d=JSON.parse(f),l=function(f){f=mxUtils.parseXml(f);f=new GraphViewer(a,f.documentElement,d);null!=b&&b(f)};null!=d.url?GraphViewer.getUrl(d.url,function(a){l(a)}):l(d.xml)}}; @@ -3608,7 +3609,7 @@ GraphViewer.initCss=function(){try{var a=document.createElement("style");a.type= GraphViewer.cachedUrls={};GraphViewer.getUrl=function(a,b,f){if(null!=GraphViewer.cachedUrls[a])b(GraphViewer.cachedUrls[a]);else{var d=0<navigator.userAgent.indexOf("MSIE 9")?new XDomainRequest:new XMLHttpRequest;d.open("GET",a);d.onload=function(){b(null!=d.getText?d.getText():d.responseText)};d.onerror=f;d.send()}};GraphViewer.resizeSensorEnabled=!0;GraphViewer.useResizeSensor=!0; (function(){var a=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(a){return window.setTimeout(a,20)},b=function(f,d){function l(){this.q=[];this.add=function(a){this.q.push(a)};var a,b;this.call=function(){a=0;for(b=this.q.length;a<b;a++)this.q[a].call()}}function m(a,b){return a.currentStyle?a.currentStyle[b]:window.getComputedStyle?window.getComputedStyle(a,null).getPropertyValue(b):a.style[b]}function p(b,c){if(!b.resizedAttached)b.resizedAttached= new l,b.resizedAttached.add(c);else if(b.resizedAttached){b.resizedAttached.add(c);return}b.resizeSensor=document.createElement("div");b.resizeSensor.className="resize-sensor";b.resizeSensor.style.cssText="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;";b.resizeSensor.innerHTML='<div class="resize-sensor-expand" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s;"></div></div><div class="resize-sensor-shrink" style="position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;"><div style="position: absolute; left: 0; top: 0; transition: 0s; width: 200%; height: 200%"></div></div>'; -b.appendChild(b.resizeSensor);"static"==m(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],e=d.childNodes[0],f=b.resizeSensor.childNodes[1],k=function(){e.style.width="100000px";e.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;f.scrollLeft=1E5;f.scrollTop=1E5};k();var p=!1,t=function(){b.resizedAttached&&(p&&(b.resizedAttached.call(),p=!1),a(t))};a(t);var u,y,z,B,v=function(){if((z=b.offsetWidth)!=u||(B=b.offsetHeight)!=y)p=!0,u=z,y=B;k()},J=function(a,b,c){a.attachEvent? -a.attachEvent("on"+b,c):a.addEventListener(b,c)};J(d,"scroll",v);J(f,"scroll",v)}var u=function(){GraphViewer.resizeSensorEnabled&&d()},z=Object.prototype.toString.call(f),B="[object Array]"===z||"[object NodeList]"===z||"[object HTMLCollection]"===z||"undefined"!==typeof jQuery&&f instanceof jQuery||"undefined"!==typeof Elements&&f instanceof Elements;if(B)for(var z=0,c=f.length;z<c;z++)p(f[z],u);else p(f,u);this.detach=function(){if(B)for(var a=0,c=f.length;a<c;a++)b.detach(f[a]);else b.detach(f)}}; +b.appendChild(b.resizeSensor);"static"==m(b,"position")&&(b.style.position="relative");var d=b.resizeSensor.childNodes[0],e=d.childNodes[0],f=b.resizeSensor.childNodes[1],k=function(){e.style.width="100000px";e.style.height="100000px";d.scrollLeft=1E5;d.scrollTop=1E5;f.scrollLeft=1E5;f.scrollTop=1E5};k();var p=!1,u=function(){b.resizedAttached&&(p&&(b.resizedAttached.call(),p=!1),a(u))};a(u);var A,y,B,C,t=function(){if((B=b.offsetWidth)!=A||(C=b.offsetHeight)!=y)p=!0,A=B,y=C;k()},J=function(a,b,c){a.attachEvent? +a.attachEvent("on"+b,c):a.addEventListener(b,c)};J(d,"scroll",t);J(f,"scroll",t)}var u=function(){GraphViewer.resizeSensorEnabled&&d()},A=Object.prototype.toString.call(f),B="[object Array]"===A||"[object NodeList]"===A||"[object HTMLCollection]"===A||"undefined"!==typeof jQuery&&f instanceof jQuery||"undefined"!==typeof Elements&&f instanceof Elements;if(B)for(var A=0,c=f.length;A<c;A++)p(f[A],u);else p(f,u);this.detach=function(){if(B)for(var a=0,c=f.length;a<c;a++)b.detach(f[a]);else b.detach(f)}}; b.detach=function(a){a.resizeSensor&&(a.removeChild(a.resizeSensor),delete a.resizeSensor,delete a.resizedAttached)};window.ResizeSensor=b})(); (function(){Editor.initMath();GraphViewer.initCss();if(null!=window.onDrawioViewerLoad)window.onDrawioViewerLoad();else GraphViewer.processElements()})(); diff --git a/src/main/webapp/resources/dia.txt b/src/main/webapp/resources/dia.txt index 92dc973bf..05ab290d7 100644 --- a/src/main/webapp/resources/dia.txt +++ b/src/main/webapp/resources/dia.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_am.txt b/src/main/webapp/resources/dia_am.txt index e696ae39f..ab0ecb880 100644 --- a/src/main/webapp/resources/dia_am.txt +++ b/src/main/webapp/resources/dia_am.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_ar.txt b/src/main/webapp/resources/dia_ar.txt index 43a5d23cb..aa6450505 100644 --- a/src/main/webapp/resources/dia_ar.txt +++ b/src/main/webapp/resources/dia_ar.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_bg.txt b/src/main/webapp/resources/dia_bg.txt index 52f2a941d..dd95c5123 100644 --- a/src/main/webapp/resources/dia_bg.txt +++ b/src/main/webapp/resources/dia_bg.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_bn.txt b/src/main/webapp/resources/dia_bn.txt index 22852cf32..107a3ae19 100644 --- a/src/main/webapp/resources/dia_bn.txt +++ b/src/main/webapp/resources/dia_bn.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_bs.txt b/src/main/webapp/resources/dia_bs.txt index 147d626c5..5af590454 100644 --- a/src/main/webapp/resources/dia_bs.txt +++ b/src/main/webapp/resources/dia_bs.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_ca.txt b/src/main/webapp/resources/dia_ca.txt index 958761451..511303827 100644 --- a/src/main/webapp/resources/dia_ca.txt +++ b/src/main/webapp/resources/dia_ca.txt @@ -13,7 +13,7 @@ addLayer=Afegeix una capa addProperty=Afegeix una propietat address=Adreça addToExistingDrawing=Afegeix al dibuix actual -addWaypoint=Afegeix Waypoint +addWaypoint=Afegeix un waypoint adjustTo=Ajustar a advanced=Avançat align=Alinea @@ -27,7 +27,7 @@ anchor=Enllaç android=Android angle=Angle arc=Arc -areYouSure=N'esteu segurs? +areYouSure=Esteu segur? ensureDataSaved=Si us plau, assegureu-vos d'haver desat les dades abans de tancar. allChangesSaved=S'han desat tots els canvis allChangesSavedInDrive=S'han desat tots els canvis a Drive @@ -112,7 +112,7 @@ circle=Cercle cisco=Cisco classic=Clà ssic clearDefaultStyle=Esborra l'estil predeterminat -clearWaypoints=Esborra els waypoint +clearWaypoints=Esborra els waypoints clipart=Imatges predissenyades close=Tanca closingFile=S'està tancant el fitxer @@ -155,13 +155,13 @@ cut=Retalla dashed=Discontinu decideLater=Decideix més tard default=Predeterminat -delete=Elimina -deleteColumn=Elimina la columna -deleteLibrary401=Permisos insuficients per eliminar aquesta biblioteca +delete=Suprimeix +deleteColumn=Suprimeix la columna +deleteLibrary401=No teniu permisos insuficients per a suprimir aquesta biblioteca deleteLibrary404=La biblioteca seleccionada no s'ha trobat deleteLibrary500=Error en esborrar la biblioteca deleteLibraryConfirm=Està s a punt d'esborrar permanentment aquesta biblioteca. Està s segur de voler-ho fer? -deleteRow=Elimina la fila +deleteRow=Suprimeix la fila description=Descripció device=Dispositiu diagram=Diagrama @@ -187,7 +187,7 @@ doubleClickOrientation=Fes doble clic per canviar l'orientació doubleClickTooltip=Fes doble clic per inserir text doubleClickChangeProperty=Fes doble clic per canviar el nom de la propietat download=Descarrega -downloadDesktop=Descarrega el draw.io per escriptori +downloadDesktop=Descarrega el draw.io per a escriptori downloadAs=Descarrega com clickHereToSave=Feu clic aquà per desar. dpi=DPI @@ -563,7 +563,7 @@ plugins=Connectors pluginUrl=URL del connector pluginWarning=La pà gina sol·licita carregar els següents connectors:\n \n {1}\n \n Voleu carregar aquests connectors?\n \n Atenció: Només permeteu l'execució dels connectors si coneixeu les implicacions de seguretat.\n plusTooltip=Feu clic per connectar i clonar (Ctrl+clic per clonar, Maj.+clic per connectar). Arrossegueu per connectar (Ctrl+arrossegar per clonar). -portrait=Orientació vertical +portrait=Vertical position=Posició posterPrint=Imprimeix cartell preferences=Preferències @@ -594,9 +594,9 @@ relativeUrlNotAllowed=No es permet un URL relatiu rememberMe=Recorda'm rememberThisSetting=Recorda la configuració actual removeFormat=Esborra el format -removeFromGroup=Elimina del grup -removeIt=Elimina {1} -removeWaypoint=Elimina el waypoint +removeFromGroup=Suprimeix del grup +removeIt=Suprimeix {1} +removeWaypoint=Suprimeix el waypoint rename=Canvia el nom renamed=Nom canviat renameIt=Canvia el nom a {1} @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_cs.txt b/src/main/webapp/resources/dia_cs.txt index fea5c02db..35cf8ec3f 100644 --- a/src/main/webapp/resources/dia_cs.txt +++ b/src/main/webapp/resources/dia_cs.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_da.txt b/src/main/webapp/resources/dia_da.txt index e009da898..ee7062883 100644 --- a/src/main/webapp/resources/dia_da.txt +++ b/src/main/webapp/resources/dia_da.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_de.txt b/src/main/webapp/resources/dia_de.txt index d4a1cab1c..5d810f6dd 100644 --- a/src/main/webapp/resources/dia_de.txt +++ b/src/main/webapp/resources/dia_de.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Organigrammtyp +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Vertikaler Abstand +siblingSpacing=Horizontaler Abstand diff --git a/src/main/webapp/resources/dia_el.txt b/src/main/webapp/resources/dia_el.txt index 815683f1f..73c432a14 100644 --- a/src/main/webapp/resources/dia_el.txt +++ b/src/main/webapp/resources/dia_el.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_eo.txt b/src/main/webapp/resources/dia_eo.txt index 57ba11d24..26475ac13 100644 --- a/src/main/webapp/resources/dia_eo.txt +++ b/src/main/webapp/resources/dia_eo.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_es.txt b/src/main/webapp/resources/dia_es.txt index cfc5dd630..a0f750c9f 100644 --- a/src/main/webapp/resources/dia_es.txt +++ b/src/main/webapp/resources/dia_es.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_et.txt b/src/main/webapp/resources/dia_et.txt index 8508ab588..b36f465c1 100644 --- a/src/main/webapp/resources/dia_et.txt +++ b/src/main/webapp/resources/dia_et.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_fa.txt b/src/main/webapp/resources/dia_fa.txt index 5969d075c..12e4f9785 100644 --- a/src/main/webapp/resources/dia_fa.txt +++ b/src/main/webapp/resources/dia_fa.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_fi.txt b/src/main/webapp/resources/dia_fi.txt index 893b8da63..e8ce5c1e1 100644 --- a/src/main/webapp/resources/dia_fi.txt +++ b/src/main/webapp/resources/dia_fi.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_fil.txt b/src/main/webapp/resources/dia_fil.txt index a1f06fb9a..6e7f40ce9 100644 --- a/src/main/webapp/resources/dia_fil.txt +++ b/src/main/webapp/resources/dia_fil.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_fr.txt b/src/main/webapp/resources/dia_fr.txt index fe9fc9eb0..de09e1158 100644 --- a/src/main/webapp/resources/dia_fr.txt +++ b/src/main/webapp/resources/dia_fr.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_gl.txt b/src/main/webapp/resources/dia_gl.txt index 995f6e9ce..bfbbd82e4 100644 --- a/src/main/webapp/resources/dia_gl.txt +++ b/src/main/webapp/resources/dia_gl.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_gu.txt b/src/main/webapp/resources/dia_gu.txt index 8a33c5277..3748d99f0 100644 --- a/src/main/webapp/resources/dia_gu.txt +++ b/src/main/webapp/resources/dia_gu.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_he.txt b/src/main/webapp/resources/dia_he.txt index 393372176..3d0406084 100644 --- a/src/main/webapp/resources/dia_he.txt +++ b/src/main/webapp/resources/dia_he.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_hi.txt b/src/main/webapp/resources/dia_hi.txt index 44c361b2c..6d6c810df 100644 --- a/src/main/webapp/resources/dia_hi.txt +++ b/src/main/webapp/resources/dia_hi.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_hr.txt b/src/main/webapp/resources/dia_hr.txt index 2c1ae0661..5c386569b 100644 --- a/src/main/webapp/resources/dia_hr.txt +++ b/src/main/webapp/resources/dia_hr.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_hu.txt b/src/main/webapp/resources/dia_hu.txt index cb896d767..3c0865978 100644 --- a/src/main/webapp/resources/dia_hu.txt +++ b/src/main/webapp/resources/dia_hu.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_i18n.txt b/src/main/webapp/resources/dia_i18n.txt index 1e622fa09..1702fa734 100644 --- a/src/main/webapp/resources/dia_i18n.txt +++ b/src/main/webapp/resources/dia_i18n.txt @@ -995,3 +995,14 @@ confGetInfoFailed=confGetInfoFailed confCheckCacheFailed=confCheckCacheFailed confReadFileErr=confReadFileErr confSaveCacheFailed=confSaveCacheFailed +orgChartType=orgChartType +linear=linear +hanger2=hanger2 +hanger4=hanger4 +fishbone1=fishbone1 +fishbone2=fishbone2 +1ColumnLeft=1ColumnLeft +1ColumnRight=1ColumnRight +smart=smart +parentChildSpacing=parentChildSpacing +siblingSpacing=siblingSpacing diff --git a/src/main/webapp/resources/dia_id.txt b/src/main/webapp/resources/dia_id.txt index 5a9c64c76..3ebd8be4e 100644 --- a/src/main/webapp/resources/dia_id.txt +++ b/src/main/webapp/resources/dia_id.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_it.txt b/src/main/webapp/resources/dia_it.txt index 7d03b06a3..1242ea65b 100644 --- a/src/main/webapp/resources/dia_it.txt +++ b/src/main/webapp/resources/dia_it.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_ja.txt b/src/main/webapp/resources/dia_ja.txt index f7cd88432..556fb2162 100644 --- a/src/main/webapp/resources/dia_ja.txt +++ b/src/main/webapp/resources/dia_ja.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_kn.txt b/src/main/webapp/resources/dia_kn.txt index 32c1fefa5..6f8a03d56 100644 --- a/src/main/webapp/resources/dia_kn.txt +++ b/src/main/webapp/resources/dia_kn.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_ko.txt b/src/main/webapp/resources/dia_ko.txt index 9d3de6deb..7a47b5cbe 100644 --- a/src/main/webapp/resources/dia_ko.txt +++ b/src/main/webapp/resources/dia_ko.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_lt.txt b/src/main/webapp/resources/dia_lt.txt index 88df31728..9ea288f2a 100644 --- a/src/main/webapp/resources/dia_lt.txt +++ b/src/main/webapp/resources/dia_lt.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_lv.txt b/src/main/webapp/resources/dia_lv.txt index f48fb4cc1..297548614 100644 --- a/src/main/webapp/resources/dia_lv.txt +++ b/src/main/webapp/resources/dia_lv.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_ml.txt b/src/main/webapp/resources/dia_ml.txt index b36cbd636..fdf2a8afc 100644 --- a/src/main/webapp/resources/dia_ml.txt +++ b/src/main/webapp/resources/dia_ml.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_mr.txt b/src/main/webapp/resources/dia_mr.txt index 1ad7328aa..3667c70a7 100644 --- a/src/main/webapp/resources/dia_mr.txt +++ b/src/main/webapp/resources/dia_mr.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_ms.txt b/src/main/webapp/resources/dia_ms.txt index 1bf20411a..14715453c 100644 --- a/src/main/webapp/resources/dia_ms.txt +++ b/src/main/webapp/resources/dia_ms.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_my.txt b/src/main/webapp/resources/dia_my.txt index 92dc973bf..05ab290d7 100644 --- a/src/main/webapp/resources/dia_my.txt +++ b/src/main/webapp/resources/dia_my.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_nl.txt b/src/main/webapp/resources/dia_nl.txt index d37addaec..232a90625 100644 --- a/src/main/webapp/resources/dia_nl.txt +++ b/src/main/webapp/resources/dia_nl.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_no.txt b/src/main/webapp/resources/dia_no.txt index ed478194f..b08a7cad7 100644 --- a/src/main/webapp/resources/dia_no.txt +++ b/src/main/webapp/resources/dia_no.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_pl.txt b/src/main/webapp/resources/dia_pl.txt index eff8584c6..1db7bf0a5 100644 --- a/src/main/webapp/resources/dia_pl.txt +++ b/src/main/webapp/resources/dia_pl.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_pt-br.txt b/src/main/webapp/resources/dia_pt-br.txt index cce80c4ef..c23ee0b7b 100644 --- a/src/main/webapp/resources/dia_pt-br.txt +++ b/src/main/webapp/resources/dia_pt-br.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_pt.txt b/src/main/webapp/resources/dia_pt.txt index a84da4ad6..2b1d69e5e 100644 --- a/src/main/webapp/resources/dia_pt.txt +++ b/src/main/webapp/resources/dia_pt.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_ro.txt b/src/main/webapp/resources/dia_ro.txt index 565a2bad1..1bc4d2bdc 100644 --- a/src/main/webapp/resources/dia_ro.txt +++ b/src/main/webapp/resources/dia_ro.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_ru.txt b/src/main/webapp/resources/dia_ru.txt index d79ed7126..25e13642b 100644 --- a/src/main/webapp/resources/dia_ru.txt +++ b/src/main/webapp/resources/dia_ru.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Ðевозможно Ñохранить файл из кÑша +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_si.txt b/src/main/webapp/resources/dia_si.txt index 92dc973bf..05ab290d7 100644 --- a/src/main/webapp/resources/dia_si.txt +++ b/src/main/webapp/resources/dia_si.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_sk.txt b/src/main/webapp/resources/dia_sk.txt index f99246291..ebc47242c 100644 --- a/src/main/webapp/resources/dia_sk.txt +++ b/src/main/webapp/resources/dia_sk.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_sl.txt b/src/main/webapp/resources/dia_sl.txt index 128dff23c..9f572d150 100644 --- a/src/main/webapp/resources/dia_sl.txt +++ b/src/main/webapp/resources/dia_sl.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_sr.txt b/src/main/webapp/resources/dia_sr.txt index 1ac2ee4b0..52e4ee5d8 100644 --- a/src/main/webapp/resources/dia_sr.txt +++ b/src/main/webapp/resources/dia_sr.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_sv.txt b/src/main/webapp/resources/dia_sv.txt index 14ac6d18b..322094d09 100644 --- a/src/main/webapp/resources/dia_sv.txt +++ b/src/main/webapp/resources/dia_sv.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_sw.txt b/src/main/webapp/resources/dia_sw.txt index bcafcfa3e..a8e22e74a 100644 --- a/src/main/webapp/resources/dia_sw.txt +++ b/src/main/webapp/resources/dia_sw.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_ta.txt b/src/main/webapp/resources/dia_ta.txt index c5d2f994c..b721dbfc2 100644 --- a/src/main/webapp/resources/dia_ta.txt +++ b/src/main/webapp/resources/dia_ta.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_te.txt b/src/main/webapp/resources/dia_te.txt index 183c6707e..040568ffd 100644 --- a/src/main/webapp/resources/dia_te.txt +++ b/src/main/webapp/resources/dia_te.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_th.txt b/src/main/webapp/resources/dia_th.txt index f74d25782..551e6e7d7 100644 --- a/src/main/webapp/resources/dia_th.txt +++ b/src/main/webapp/resources/dia_th.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_tr.txt b/src/main/webapp/resources/dia_tr.txt index 62c5e9ec8..4eaed9d98 100644 --- a/src/main/webapp/resources/dia_tr.txt +++ b/src/main/webapp/resources/dia_tr.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_uk.txt b/src/main/webapp/resources/dia_uk.txt index 1731fcc84..555326a92 100644 --- a/src/main/webapp/resources/dia_uk.txt +++ b/src/main/webapp/resources/dia_uk.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_vi.txt b/src/main/webapp/resources/dia_vi.txt index b58d1bb13..4e48e2568 100644 --- a/src/main/webapp/resources/dia_vi.txt +++ b/src/main/webapp/resources/dia_vi.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_zh-tw.txt b/src/main/webapp/resources/dia_zh-tw.txt index c82a38ff5..a4c2811f4 100644 --- a/src/main/webapp/resources/dia_zh-tw.txt +++ b/src/main/webapp/resources/dia_zh-tw.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/resources/dia_zh.txt b/src/main/webapp/resources/dia_zh.txt index ccd4f132c..c9a4921e3 100644 --- a/src/main/webapp/resources/dia_zh.txt +++ b/src/main/webapp/resources/dia_zh.txt @@ -995,3 +995,14 @@ confGetInfoFailed=Fetching file info from {1} failed. confCheckCacheFailed=Cannot get cached file info. confReadFileErr=Cannot read "{1}" file from {2}. confSaveCacheFailed=Unexpected error. Cannot save cached file +orgChartType=Org Chart Type +linear=Linear +hanger2=Hanger 2 +hanger4=Hanger 4 +fishbone1=Fishbone 1 +fishbone2=Fishbone 2 +1ColumnLeft=Single Column Left +1ColumnRight=Single Column Right +smart=Smart +parentChildSpacing=Parent Child Spacing +siblingSpacing=Sibling Spacing diff --git a/src/main/webapp/service-worker.js b/src/main/webapp/service-worker.js index 19dd13f41..9516872db 100644 --- a/src/main/webapp/service-worker.js +++ b/src/main/webapp/service-worker.js @@ -6,11 +6,11 @@ if (workbox) workbox.precaching.precacheAndRoute([ { "url": "js/app.min.js", - "revision": "6a5b4f7606a4f4123ad03042a50c7ede" + "revision": "8abaa8385221ff9a0a3c80651e57195f" }, { "url": "index.html", - "revision": "0ee7e232e5e7e8cb87df23a7edd625db" + "revision": "4fc7d6872beb53ad00b0b15abbdccfea" }, { "url": "open.html", @@ -90,7 +90,7 @@ if (workbox) }, { "url": "resources/dia.txt", - "revision": "26b509d2e116e5ad6162e54153779e89" + "revision": "493ad0c11b08219880007941d232f3a1" }, { "url": "images/delete.png", -- GitLab