r&&(r=t);return r},e.math.finiteLinesIntersect=function(e,t,r,i,n,a,o,s,l){var c=(o-n)*(t-a)-(s-a)*(e-n),u=(r-e)*(t-a)-(i-t)*(e-n),p=(s-a)*(r-e)-(o-n)*(i-t);if(0!=p){var d=c/p,h=u/p;return d>=0&&1>=d&&h>=0&&1>=h?[e+d*(r-e),t+d*(i-t)]:l?[e+d*(r-e),t+d*(i-t)]:[]}return 0==c||0==u?[e,r,o].sort()[1]==o?[o,s]:[e,r,n].sort()[1]==n?[n,a]:[n,o,r].sort()[1]==r?[r,i]:[]:[]},e.math.boxIntersectEllipse=function(e,t,r,i,n,a,o,s,l){if(e>r){var c=e;e=r,r=c}if(t>i){var u=t;t=i,i=u}var p=[s-a/2-n,l],d=[s+a/2+n,l],h=[s,l-o/2-n],g=[s,l+o/2+n];return rd[0]?!1:t>g[1]?!1:i=e*e+t*t?!0:1>=r*r+t*t?!0:1>=r*r+i*i?!0:1>=e*e+i*i?!0:!1)},e.math.boxIntersectPolygon=function(t,r,i,n,a,o,s,l,c,u,p){if(t>i){var d=t;t=i,i=d}if(r>n){var h=r;r=n,n=h}var g=new Array(a.length),v=Math.asin(u[1]/Math.sqrt(u[0]*u[0]+u[1]*u[1]));u[0]<0?v+=Math.PI/2:v=-v-Math.PI/2;for(var f=Math.cos(-v),y=Math.sin(-v),m=0;mx&&(x=g[2*m]),g[2*m]_&&(_=g[2*m+1]),g[2*m+1]i)return!1;if(t>x+p)return!1;if(w-p>n)return!1;if(r>_+p)return!1;var E;if(p>0){var S=e.math.expandPolygon(g,-p);E=e.math.joinLines(S)}else E=g;for(var m=0;m0)return!0;if(e.math.finiteLinesIntersect(M,N,P,k,t,n,i,n,!1).length>0)return!0;if(e.math.finiteLinesIntersect(M,N,P,k,t,r,t,n,!1).length>0)return!0;if(e.math.finiteLinesIntersect(M,N,P,k,i,r,i,n,!1).length>0)return!0}return!1},e.math.polygonIntersectLine=function(t,r,i,n,a,o,s,l){for(var c,u=[],p=new Array(i.length),d=0;d0){var g=e.math.expandPolygon(p,-l);h=e.math.joinLines(g)}else h=p;for(var v,f,y,m,d=0;da&&(a=1e-5),[t[0]+a*i[0],t[1]+a*i[1]]},e.math.generateUnitNgonPointsFitToSquare=function(t,r){var i=e.math.generateUnitNgonPoints(t,r);return i=e.math.fitPolygonToSquare(i)},e.math.fitPolygonToSquare=function(e){for(var t,r,i=e.length/2,n=1/0,a=1/0,o=-1/0,s=-1/0,l=0;i>l;l++)t=e[2*l],r=e[2*l+1],n=Math.min(n,t),o=Math.max(o,t),a=Math.min(a,r),s=Math.max(s,r);for(var c=2/(o-n),u=2/(s-a),l=0;i>l;l++)t=e[2*l]=e[2*l]*c,r=e[2*l+1]=e[2*l+1]*u,n=Math.min(n,t),o=Math.max(o,t),a=Math.min(a,r),s=Math.max(s,r);if(-1>a)for(var l=0;i>l;l++)r=e[2*l+1]=e[2*l+1]+(-1-a);return e},e.math.generateUnitNgonPoints=function(e,t){var r=1/e*2*Math.PI,i=e%2==0?Math.PI/2+r/2:Math.PI/2;i+=t;for(var n,a,o,s=new Array(2*e),l=0;e>l;l++)n=l*r+i,a=s[2*l]=Math.cos(n),o=s[2*l+1]=Math.sin(-n);return s},e.math.getRoundRectangleRadius=function(e,t){return Math.min(e/2,t/2,10)}}(cytoscape),function(e){"use strict";e.instances=[],e.instanceCounter=0,e.lastInstanceTime,e.registerInstance=function(t,r){var i;e.is.core(t)?i=t:e.is.domElement(t)&&(r=t);var n=e.getRegistrationForInstance(t,r);if(n)return n.cy?e.util.error("Tried to register on a pre-existing registration"):(n.cy=t,n.domElement=r),n;var a,o=+new Date;e.lastInstanceTime&&e.lastInstanceTime!==o?++e.instanceCounter:e.instanceCounter=0,e.lastInstanceTime=o,a=e.instanceCounter;var s="cy-"+o+"-"+a,l={id:s,cy:i,domElement:r,readies:[]};return e.instances.push(l),e.instances[s]=l,l},e.removeRegistrationForInstance=function(t,r){var i;if(e.is.core(t)?i=t:e.is.domElement(t)&&(r=t),e.is.core(i)){var n=i._private.instanceId;delete e.instances[n],e.instances.splice(n,1)}else if(e.is.domElement(r))for(var a=0;a=0;a--){var o=e.instances[a];if(o.domElement===r)return o}}}(cytoscape),function(e){"use strict";function t(t,r,i){var n={};switch(n[r]=i,t){case"core":case"collection":e.fn[t](n)}return e.util.setMap({map:a,keys:[t,r],value:i})}function r(t,r){return e.util.getMap({map:a,keys:[t,r]})}function i(t,r,i,n,a){return e.util.setMap({map:o,keys:[t,r,i,n],value:a})}function n(t,r,i,n){return e.util.getMap({map:o,keys:[t,r,i,n]})}var a={};e.extensions=a;var o={};e.modules=o,e.extension=function(){return 2==arguments.length?r.apply(this,arguments):3==arguments.length?t.apply(this,arguments):4==arguments.length?n.apply(this,arguments):5==arguments.length?i.apply(this,arguments):void $.error("Invalid extension access syntax")}}(cytoscape),function(e,t){"use strict";e&&(e.fn.cytoscape=function(r){var i=e(this);if("get"===r){var n=t.getRegistrationForInstance(i[0]);return n.cy}if(!t.is.fn(r)){if(t.is.plainObject(r))return i.each(function(){var t=e.extend({},r,{container:e(this)[0]});cytoscape(t)});for(var a=i[0],o=[],s=[],l=1;lp;p++)n.canSet(s[p])&&(s[p]._private[n.field][r]=i);n.updateMappers&&a.updateMappers(),n.onSet(a),n.settingTriggersEvent&&a[n.triggerFnName](n.settingEvent)}}}else if(n.allowSetting&&e.is.plainObject(r)){var h,g,v=r;for(h in v){g=v[h];var u=!n.immutableKeys[h];if(u)for(var p=0,d=s.length;d>p;p++)n.canSet(s[p])&&(s[p]._private[n.field][h]=g)}n.updateMappers&&a.updateMappers(),n.onSet(a),n.settingTriggersEvent&&a[n.triggerFnName](n.settingEvent)}else if(n.allowBinding&&e.is.fn(r)){var f=r;a.bind(n.bindingEvent,f)}else if(n.allowGetting&&void 0===r){var c;return l&&(c=l._private[n.field]),c}return a}},batchData:function(t){var r={field:"data",event:"data",triggerFnName:"trigger",immutableKeys:{},updateMappers:!1},i=t=e.util.extend({},r,t);return function(t){var r=this,n=void 0!==r.length,a=n?r:r._private.elements;if(0===a.length)return r;for(var o=n?a[0]._private.cy:r,s=0;sc;c++){var u=s[c];if(!e.is.emptyString(u)){var p=!i.immutableKeys[u];if(p)for(var d=0,h=o.length;h>d;d++)delete o[d]._private[i.field][u]}}i.triggerEvent&&n[i.triggerFnName](i.event)}else if(void 0===r){for(var d=0,h=o.length;h>d;d++){var g=o[d]._private[i.field];for(var u in g){var v=!i.immutableKeys[u];v&&delete g[u]}}i.triggerEvent&&n[i.triggerFnName](i.event)}return n}},event:{regex:/(\w+)(\.\w+)?/,optionalTypeRegex:/(\w+)?(\.\w+)?/,falseCallback:function(){return!1}},on:function(t){var r={unbindSelfOnTrigger:!1,unbindAllBindersOnTrigger:!1};return t=e.util.extend({},r,t),function(r,i,n,a){var o=this,s=void 0!==o.length,l=s?o:[o],c=(s?o[0]:o,e.is.string(r)),u=t;if(e.is.plainObject(i)?(a=n,n=i,i=void 0):(e.is.fn(i)||i===!1)&&(a=i,n=void 0,i=void 0),(e.is.fn(n)||n===!1)&&(a=n,n=void 0),!e.is.fn(a)&&a!==!1&&c)return o;if(c){var p={};p[r]=a,r=p}for(var d in r)if(a=r[d],a===!1&&(a=e.define.event.falseCallback),e.is.fn(a)){d=d.split(/\s+/);for(var h=0;h0:!0,I=C&&D&&T;if(I){var z=[h];if(z=z.concat(r),h.data=N.data?N.data:void 0,(N.unbindSelfOnTrigger||N.unbindAllBindersOnTrigger)&&(w.splice(M,1),M--),N.unbindAllBindersOnTrigger)for(var B=N.binders,R=0;R\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",variable:'(?:[\\w-]|(?:\\\\"+ metaChar +"))+',comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:'"(?:\\\\"|[^"])+"|'+"'(?:\\\\'|[^'])+'",number:e.util.regex.number,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$"};s.value=s.string+"|"+s.number,s.className=s.variable,s.id=s.variable;for(var l=function(e){return e.replace(new RegExp("\\\\("+s.metaChar+")","g"),function(e,t){return t})},c=s.comparatorOp.split("|"),u=0;u=0;break;case"$=":a=null!=new RegExp(d+"$").exec(p);break;case"^=":a=null!=new RegExp("^"+d).exec(p);break;case"=":a=u===l;break;case"!=":a=u!==l;break;case">":a=u>l;break;case">=":a=u>=l;break;case"<":a=l>u;break;case"<=":a=l>=u;break;default:a=!1}}else if(null!=s)switch(s){case"?":a=r.fieldTruthy(c);break;case"!":a=!r.fieldTruthy(c);break;case"^":a=r.fieldUndefined(c)}else a=!r.fieldUndefined(c);if(!a){i=!1;break}}return i},h=d({name:"data",fieldValue:function(e){return r._private.data[e]},fieldRef:function(e){return"element._private.data."+e},fieldUndefined:function(e){return void 0===r._private.data[e]},fieldTruthy:function(e){return r._private.data[e]?!0:!1}});if(!h)return!1;var g=d({name:"meta",fieldValue:function(e){return r[e]()},fieldRef:function(e){return"element."+e+"()"},fieldUndefined:function(e){return void 0==r[e]()},fieldTruthy:function(e){return r[e]()?!0:!1}});if(!g)return!1;if(null!=t.collection){var v=null!=t.collection._private.ids[r.id()];if(!v)return!1}if(null!=t.filter&&0==r.collection().filter(t.filter).size())return!1;var f=function(e,t){if(null!=e){var r=!1;t=t();for(var i=0;i "+t),null!=e.ancestor&&(t=i(e.ancestor)+" "+t),null!=e.child&&(t+=" > "+i(e.child)),null!=e.descendant&&(t+=" "+i(e.descendant)),t},n=0;n1&&n node").css({width:"auto",height:"auto",shape:"rectangle","background-opacity":.5,"padding-top":10,"padding-right":10,"padding-left":10,"padding-bottom":10}).selector("edge").css({width:1}).selector(":active").css({"overlay-color":"black","overlay-padding":10,"overlay-opacity":.25}).selector("core").css({"selection-box-color":"#ddd","selection-box-opacity":.65,"selection-box-border-color":"#aaa","selection-box-border-width":1,"panning-cursor":"grabbing","active-bg-color":"black","active-bg-opacity":.15,"active-bg-size":e.is.touch()?40:15})},e.styfn.clear=function(){this._private.newStyle=!0;for(var e=0;es.max)return null;var S={name:t,value:r,strValue:""+r+(m?m:""),units:m,bypass:i};return s.unitless||"px"!==m&&"em"!==m||(S.pxValue="px"!==m&&m?this.getEmSizeInPixels()*r:r),S}if(s.propList){var P=[],k=""+r;if("none"===k);else{for(var M=k.split(","),_=0;_0,c=s.properties,u=!i._private.styleCxts[o];if(l){for(var p=0;p0||a.length>0)&&this.updateTransitions(i,n,a)}t._private.newStyle=!1},e.styfn.rollBackContext=function(e,t){for(var r=0;r0&&s>0){for(var u=!1,p=0;p=0;b--){for(var x=i[b],w=0;w0&&t.delay(l),t.animate({css:c},{duration:s,queue:!1,complete:function(){n.removeAllBypasses(t),t._private.transitioning=!1}})}else t._private.transitioning&&(t.stop(),this.removeAllBypasses(t),t._private.transitioning=!1)}}(cytoscape),function(e){"use strict";e.styfn.applyBypass=function(t,r,i){var n=[];if("*"===r||"**"===r){if(void 0!==i)for(var a=0;aa.length?l.substr(a.length):""}function n(){o=o.length>s.length?o.substr(s.length):""}var a,o,s,l=""+r;for(l=l.replace(/[/][*](\s|.)+?[*][/]/g,"");;){var c=l.match(/^\s*$/);if(c)break;var u=l.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!u){e.util.error("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+l);break}a=u[0];var p=u[1],d=new e.Selector(p);if(d._private.invalid)e.util.error("Skipping parsing of block: Invalid selector found in string stylesheet: "+p),i();else{var h=u[2],g=!1;o=h;for(var v=[];;){var c=o.match(/^\s*$/);if(c)break;var f=o.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/);if(!f){e.util.error("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+h),g=!0;break}s=f[0];var y=f[1],m=f[2],b=e.style.properties[y];if(b){var x=t.parse(y,m);x?(v.push({name:y,val:m}),n()):(e.util.error("Skipping property: Invalid property definition in: "+s),n())}else e.util.error("Skipping property: Invalid property name in: "+s),n()}if(g){i();break}t.selector(p);for(var w=0;wo;o++){var p=c[o],d=l[p];if(e.is.array(d))for(var h=0,g=d.length;g>h;h++){var v=d[h],f=e.util.extend({},v,{group:p});a.push(f)}}r=new e.Collection(i,a)}else{var v=t;r=new e.Element(i,v).collection()}return r},remove:function(t){if(e.is.elementOrCollection(t))t=t;else if(e.is.string(t)){var r=t;t=this.$(r)}return t.remove()},load:function(i,n,a){function o(){s.one("layoutready",function(e){s.notifications(!0),s.trigger(e),s.notify({type:"load",collection:s.elements()}),s.one("load",n),s.trigger("load")}).one("layoutstop",function(){s.one("done",a),s.trigger("done")}),s.layout(s._private.options.layout)}var s=this,l=s.elements();return l.length>0&&l.remove(),s.notifications(!1),null!=i&&(e.is.plainObject(i)||e.is.array(i))&&s.add(i),t?r(o):o(),this}})}(cytoscape,"undefined"==typeof window?null:window),function(e,t){"use strict";e.fn.core({addToAnimationPool:function(e){for(var t=this,r=t._private.aniEles,i=[],n=0;n0?c.shift():null;null!=u&&(u.callTime=+new Date,o.push(u))}for(var p=[],d=0;d0&&s.notify({type:"draw",collection:r});for(var d=0;d0||l.length>0;v||(r.splice(d,1),d--)}}function n(t,r,i){var n,l=s._private.style,c=r.properties,u=r.params,p=r.callTime;if(n=0===r.duration?1:Math.min(1,(i-p)/r.duration),0>n?n=0:n>1&&(n=1),null==c.delay){var d=r.startPosition,h=c.position,g=t._private.position;if(h&&(a(d.x,h.x)&&(g.x=o(d.x,h.x,n)),a(d.y,h.y)&&(g.y=o(d.y,h.y,n))),c.css)for(var v=e.style.properties,f=0;f=1&&(r.done=!0),n}function a(t,r){return null==t||null==r?!1:e.is.number(t)&&e.is.number(r)?!0:t&&r?!0:!1}function o(t,r,i){if(0>i?i=0:i>1&&(i=1),e.is.number(t)&&e.is.number(r))return t+(r-t)*i;if(e.is.number(t[0])&&e.is.number(r[0])){var n=t,a=r,o=function(e,t){var r=t-e,n=e;return Math.round(i*r+n)},s=o(n[0],a[0]),l=o(n[1],a[1]),c=o(n[2],a[2]);return"rgb("+s+", "+l+", "+c+")"}return void 0}var s=this,l=1e3/60,c=!1,u=!0;if(t){s._private.aniEles=[];var p=e.util.requestAnimationFrame;null!=p&&u||(p=function(e){t.setTimeout(function(){e(+new Date)},l)});var d=s.container();r()}}})}(cytoscape,"undefined"==typeof window?null:window),function(e){"use strict";e.fn.core({data:e.define.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0}),removeData:e.define.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0}),batchData:e.define.batchData({field:"data",event:"data",triggerFnName:"trigger",immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateMappers:!0}),scratch:e.define.data({field:"scratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeScratch:e.define.removeData({field:"scratch",triggerEvent:!1})})}(cytoscape),function(e){"use strict";e.fn.core({on:e.define.on(),one:e.define.on({unbindSelfOnTrigger:!0}),once:e.define.on({unbindAllBindersOnTrigger:!0}),off:e.define.off(),trigger:e.define.trigger()}),e.corefn.bind=e.corefn.on,e.corefn.unbind=e.corefn.off}(cytoscape),function(e){"use strict";e.fn.core({png:function(e){var t=this._private.renderer;return e=e||{},t.png(e)}})}(cytoscape),function(e){"use strict";e.fn.core({layout:function(e){var t=this;return this._private.layoutRunning?this:(null==e&&(e=this._private.options.layout),this.initLayout(e),t.trigger("layoutstart"),this._private.layoutRunning=!0,this.one("layoutstop",function(){t._private.layoutRunning=!1}),this._private.layout.run(),this)},initLayout:function(t){if(null==t)return void e.util.error("Layout options must be specified to run a layout");if(null==t.name)return void e.util.error("A `name` must be specified to run a layout");var r=t.name,i=e.extension("layout",r);return null==i?void e.util.error("Can not apply layout: No such layout `%s` found; did you include its JS file?",r):(this._private.layout=new i(e.util.extend({},t,{renderer:this._private.renderer,cy:this})),void(this._private.options.layout=t))}})}(cytoscape),function(e){"use strict";e.fn.core({notify:function(t){if(this._private.notificationsEnabled){var r=this.renderer(),i=this;if(e.is.element(t.collection)){var n=t.collection;t.collection=new e.Collection(i,[n])}else if(e.is.array(t.collection)){var a=t.collection;t.collection=new e.Collection(i,a)}r.notify(t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:void(t.notificationsEnabled=e?!0:!1)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)}})}(cytoscape),function(e){"use strict";e.fn.core({renderTo:function(e,t,r,i){var n=this._private.renderer;return n.renderTo(e,t,r,i),this},renderer:function(){return this._private.renderer},forceRender:function(){return this.notify({type:"draw"}),this},initRenderer:function(t){var r=this,i=e.extension("renderer",t.name);return null==i?void e.util.error("Can not initialise: No such renderer `%s` found; did you include its JS file?",t.name):void(this._private.renderer=new i(e.util.extend({},t,{cy:r,style:r._private.style})))},recalculateRenderedStyle:function(){var e=this.renderer();e.recalculateRenderedStyle&&e.recalculateRenderedStyle()}})}(cytoscape),function(e){"use strict";e.fn.core({collection:function(t){return e.is.string(t)?this.$(t):e.is.elementOrCollection(t)?t.collection():new e.Collection(this)},nodes:function(e){var t=this.$("node");return e?t.filter(e):t},edges:function(e){var t=this.$("edge");return e?t.filter(e):t},$:function(t){var r=new e.Collection(this,this._private.elements);return t?r.filter(t):r}}),e.corefn.elements=e.corefn.filter=e.corefn.$}(cytoscape),function(e){"use strict";e.fn.core({style:function(){return this._private.style}})}(cytoscape),function(e){"use strict";e.fn.core({panningEnabled:function(e){return void 0===e?this._private.panningEnabled:(this._private.panningEnabled=e?!0:!1,this)},userPanningEnabled:function(e){return void 0===e?this._private.userPanningEnabled:(this._private.userPanningEnabled=e?!0:!1,this)},zoomingEnabled:function(e){return void 0===e?this._private.zoomingEnabled:(this._private.zoomingEnabled=e?!0:!1,this)},userZoomingEnabled:function(e){return void 0===e?this._private.userZoomingEnabled:(this._private.userZoomingEnabled=e?!0:!1,this)},boxSelectionEnabled:function(e){return void 0===e?this._private.boxSelectionEnabled:(this._private.boxSelectionEnabled=e?!0:!1,this)},pan:function(){var t,r,i,n,a,o=arguments,s=this._private.pan;switch(o.length){case 0:return s;case 1:if(!this._private.panningEnabled)return this;if(e.is.string(o[0]))return t=o[0],s[t];e.is.plainObject(o[0])&&(i=o[0],n=i.x,a=i.y,e.is.number(n)&&(s.x=n),e.is.number(a)&&(s.y=a),this.trigger("pan"));break;case 2:if(!this._private.panningEnabled)return this;t=o[0],r=o[1],"x"!==t&&"y"!==t||!e.is.number(r)||(s[t]=r),this.trigger("pan")}return this.notify({type:"viewport"}),this},panBy:function(){var t,r,i,n,a,o=arguments,s=this._private.pan;if(!this._private.panningEnabled)return this;switch(o.length){case 1:e.is.plainObject(o[0])&&(i=o[0],n=i.x,a=i.y,e.is.number(n)&&(s.x+=n),e.is.number(a)&&(s.y+=a),this.trigger("pan"));break;case 2:t=o[0],r=o[1],"x"!==t&&"y"!==t||!e.is.number(r)||(s[t]+=r),this.trigger("pan")}return this.notify({type:"viewport"}),this},fit:function(t,r){if(e.is.number(t)&&void 0===r&&(r=t,t=void 0),!this._private.panningEnabled||!this._private.zoomingEnabled)return this;if(e.is.string(t)){var i=t;t=this.$(i)}else e.is.elementOrCollection(t)||(t=this.elements());var n,a=t.boundingBox(),o=this.style(),s=parseFloat(o.containerCss("width")),l=parseFloat(o.containerCss("height"));return r=e.is.number(r)?r:0,!isNaN(s)&&!isNaN(l)&&t.length>0&&(n=this._private.zoom=Math.min((s-2*r)/a.w,(l-2*r)/a.h),n=n>this._private.maxZoom?this._private.maxZoom:n,n=nthis._private.maxZoom?this._private.maxZoom:i,i=i1&&this._private.minZoom<1&&this.zoom(1),this.notify({type:"viewport"}),this):this}})}(cytoscape),function(e){"use strict";e.fn.collection=e.fn.eles=function(t){for(var r in t){var i=t[r];e.Collection.prototype[r]=i}};var t={prefix:{nodes:"n",edges:"e"},id:{nodes:0,edges:0},generate:function(t,r,i){var n=e.is.element(r)?r._private:r,a=n.group,o=null!=i?i:this.prefix[a]+this.id[a];if(t.getElementById(o).empty())this.id[a]++;else for(;!t.getElementById(o).empty();)o=this.prefix[a]+ ++this.id[a];return o}};e.Element=function(t,r,i){if(!(this instanceof e.Element))return new e.Element(t,r,i);var n=this;if(i=void 0===i||i?!0:!1,void 0===t||void 0===r||!e.is.core(t))return void e.util.error("An element must have a core reference and parameters set");if("nodes"!==r.group&&"edges"!==r.group)return void e.util.error("An element must be of type `nodes` or `edges`; you specified `"+r.group+"`");if(this.length=1,this[0]=this,this._private={cy:t,single:!0,data:r.data||{},layoutData:{},position:r.position||{},autoWidth:void 0,autoHeight:void 0,listeners:[],group:r.group,style:{},rstyle:{},styleCxts:[],removed:!0,selected:r.selected?!0:!1,selectable:void 0===r.selectable?!0:r.selectable?!0:!1,locked:r.locked?!0:!1,grabbed:!1,grabbable:void 0===r.grabbable?!0:r.grabbable?!0:!1,active:!1,classes:{},animation:{current:[],queue:[]},rscratch:{},scratch:{},edges:[],children:[]},r.renderedPosition){var a=r.renderedPosition,o=t.pan(),s=t.zoom();this._private.position={x:(a.x-o.x)/s,y:(a.y-o.y)/s}}if(e.is.string(r.classes))for(var l=r.classes.split(/\s+/),c=0,u=l.length;u>c;c++){var p=l[c];p&&""!==p&&(n._private.classes[p]=!0)}r.css&&t.style().applyBypass(this,r.css),(void 0===i||i)&&this.restore()},e.Collection=function(r,i){if(!(this instanceof e.Collection))return new e.Collection(r,i);if(void 0===r||!e.is.core(r))return void e.util.error("A collection must have a reference to the core");var n={},a=[],o=!1;if(i){if(i.length>0&&e.is.plainObject(i[0])&&!e.is.element(i[0])){o=!0;for(var s=[],l={},c=0,u=i.length;u>c;c++){var p=i[c];null==p.data&&(p.data={});var d=p.data;if(null==d.id)d.id=t.generate(r,p);else if(0!=r.getElementById(d.id).length||l[d.id])continue;var h=new e.Element(r,p,!1);s.push(h),l[d.id]=!0}i=s}}else i=[];for(var c=0,u=i.length;u>c;c++){var g=i[c];if(g){var v=g._private.data.id;n[v]||(n[v]=g,a.push(g))}}for(var c=0,u=a.length;u>c;c++)this[c]=a[c];this.length=a.length,this._private={cy:r,ids:n},o&&this.restore()},e.elefn=e.elesfn=e.Element.prototype=e.Collection.prototype,e.elesfn.cy=function(){return this._private.cy},e.elesfn.element=function(){return this[0]},e.elesfn.collection=function(){return e.is.collection(this)?this:new e.Collection(this._private.cy,[this])},e.elesfn.json=function(){var t=this.element();if(null==t)return void 0;var r=t._private,i=e.util.copy({data:r.data,position:r.position,group:r.group,bypass:r.bypass,removed:r.removed,selected:r.selected,selectable:r.selectable,locked:r.locked,grabbed:r.grabbed,grabbable:r.grabbable,classes:""}),n=[];for(var a in r.classes)n.push(a);for(var o=0;op;p++){var h=i[p];h.isNode()?(s.push(h),c++):(l.push(h),u++)}o=s.concat(l);for(var p=0,d=o.length;d>p;p++){var h=o[p];if(h.removed()){var g=h._private,v=g.data;if(void 0===v.id)v.id=t.generate(a,h);else{if(e.is.emptyString(v.id)||!e.is.string(v.id)){e.util.error("Can not create element with invalid string ID `"+v.id+"`");continue}if(0!=a.getElementById(v.id).length){e.util.error("Can not create second element with ID `"+v.id+"`");continue}}{v.id}if(h.isEdge()){for(var f=h,y=["source","target"],m=y.length,b=!1,x=0;m>x;x++){var w=y[x],_=v[w];null==_||""===_?(e.util.error("Can not create edge `"+v.id+"` with unspecified "+w),b=!0):a.getElementById(_).empty()&&(e.util.error("Can not create edge `"+v.id+"` with nonexistant "+w+" `"+_+"`"),b=!0)}if(b)continue;var E=a.getElementById(v.source),S=a.getElementById(v.target);E._private.edges.push(f),S._private.edges.push(f),f._private.source=E,f._private.target=S}g.ids={},g.ids[v.id]=h,g.removed=!1,a.addToPool(h),n.push(h)}}for(var p=0;c>p;p++){var P=o[p],v=P._private.data,k=(v.id,P._private.data.parent),M=null!=k;if(M){var N=a.getElementById(k);if(N.empty())delete v.parent;else{for(var C=!1,D=N;!D.empty();){if(P.same(D)){C=!0,delete v.parent;break}D=D.parent()}C||(N[0]._private.children.push(P),a._private.hasCompoundNodes=!0)}}}if(n=new e.Collection(a,n),n.length>0){var T=n.add(n.connectedNodes()).add(n.parent());T.updateStyle(r),r?n.rtrigger("add"):n.trigger("add")}return i},e.elesfn.removed=function(){var e=this[0];return e&&e._private.removed},e.elesfn.inside=function(){var e=this[0];return e&&!e._private.removed},e.elesfn.remove=function(t){function r(e){for(var t=e._private.edges,r=0;rd;d++){var g=s[d];n(g)}for(var d=0;d0&&(t&&this.cy().notify({type:"remove",collection:b}),b.trigger("remove"));for(var x={},d=0;du||!n)&&(o=u,n=l)}return{edge:n,dist:o}};g.size()>0;){var f=g.pop(),y=f.value,m=f.id,b=n.getElementById(m);if(l[m]=y,y===Math.Infinite)break;for(var x=b.neighborhood().intersect(u),d=0;d0:void 0},clearQueue:function(){for(var e=0;e0&&new e.Collection(this._private.cy,i).updateStyle(),r.trigger("class"),r},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes[e]?!0:!1},toggleClass:function(t,r){for(var i=t.split(/\s+/),n=this,a=[],o=0,s=n.length;s>o;o++)for(var l=n[o],c=0;c0&&new e.Collection(this._private.cy,a).updateStyle(),n.trigger("class"),n},removeClass:function(t){t=t.split(/\s+/);for(var r=this,i=[],n=0;n0&&new e.Collection(r._private.cy,i).updateStyle(),r.trigger("class"),r}})}(cytoscape),function(e){"use strict";e.fn.eles({allAre:function(e){return this.filter(e).length===this.length},is:function(e){return this.filter(e).length>0},same:function(e){return e=this.cy().collection(e),this.length!==e.length?!1:this.intersect(e).length===this.length},anySame:function(e){return e=this.cy().collection(e),this.intersect(e).length>0},allAreNeighbors:function(e){return e=this.cy().collection(e),this.neighborhood().intersect(e).length===e.length}})}(cytoscape),function(e){"use strict";e.fn.eles({parent:function(t){for(var r=[],i=this._private.cy,n=0;n0&&r.push(o)}return new e.Collection(i,r).filter(t)},parents:function(t){for(var r=[],i=this.parent();i.nonempty();){for(var n=0;nl?l:i,n=c>n?c:n,a=a>u?u:a,o=p>o?p:o}else if(g.isEdge()&&t.includeEdges){v=!0;var w=g.source()[0]._private.position,_=g.target()[0]._private.position,E=g._private.rstyle||{};if(l=w.x,c=_.x,u=w.y,p=_.y,l>c){var S=l;l=c,c=S}if(u>p){var S=u;u=p,p=S}i=i>l?l:i,n=c>n?c:n,a=a>u?u:a,o=p>o?p:o;for(var P=E.bezierPts||[],y=g._private.style.width.pxValue,k=0;kn?M.x+y:n,a=M.y-yo?M.y+y:o}}var N=g._private.style,E=g._private.rstyle,C=N.content.strValue,D=N["font-size"],T=N["text-halign"],I=N["text-valign"],z=E.labelWidth,B=E.labelHeight,R=E.labelX,X=E.labelY;if(v&&t.includeLabels&&C&&D&&void 0!=B&&void 0!=z&&void 0!=R&&void 0!=X&&T&&I){var Y,V,L,A,O=B,F=z;if(g.isEdge())Y=R-F/2,V=R+F/2,L=X-O/2,A=X+O/2;else{switch(T.value){case"left":Y=R-F,V=R;break;case"center":Y=R-F/2,V=R+F/2;break;case"right":Y=R,V=R+F}switch(I.value){case"top":L=X-O,A=X;break;case"center":L=X-O/2,A=X+O/2;break;case"bottom":L=X,A=X+O}}i=i>Y?Y:i,n=V>n?V:n,a=a>L?L:a,o=A>o?A:o}}}return{x1:i,x2:n,y1:a,y2:o,w:n-i,h:o-a}}})}(cytoscape),function(e){"use strict";function t(e){return function(t){var r=this;if(void 0===t&&(t=!0),0!==r.length&&r.isNode()&&!r.removed()){for(var i=0,n=r[0],a=n._private.edges,o=0;oe}),maxDegree:r("degree",function(e,t){return e>t}),minIndegree:r("indegree",function(e,t){return t>e}),maxIndegree:r("indegree",function(e,t){return e>t}),minOutdegree:r("outdegree",function(e,t){return t>e}),maxOutdegree:r("outdegree",function(e,t){return e>t})}),e.fn.eles({totalDegree:function(e){for(var t=0,r=this.nodes(),i=0;it&&(t=n+t),0>r&&(r=n+r);for(var a=t;a>=0&&r>a&&n>a;a++)i.push(this[a]);return new e.Collection(this.cy(),i)},size:function(){return this.length},eq:function(e){return this[e]},empty:function(){return 0===this.length},nonempty:function(){return!this.empty()},sort:function(t){if(!e.is.fn(t))return this;var r=this.cy(),i=(new e.Collection(r),this.toArray().sort(t));return new e.Collection(r,i)},sortByZIndex:function(){return this.sort(e.Collection.zIndexSort)}}),e.Collection.zIndexSort=function(e,t){var r=function(e){return"nodes"==e._private.group?e.parents().size():"edges"==e._private.group?Math.max(e.source()[0].parents().size(),e.target()[0].parents().size()):0},i=e._private.style["z-index"].value-t._private.style["z-index"].value,n=0,a=0;return e.cy().hasCompoundNodes()&&(n=r(e),a=r(t)),n-a===0?"nodes"===e._private.group&&"edges"===t._private.group?1:"edges"===e._private.group&&"nodes"===t._private.group?-1:0===i?e._private.index-t._private.index:i:n-a}}(cytoscape),function(e){"use strict";e.fn.eles({updateStyle:function(e){var t=this._private.cy,r=t.style();e=e||void 0===e?!0:!1,r.apply(this);var i=this.updateCompoundBounds();return e?this.add(i).rtrigger("style"):this.add(i).trigger("style"),this},updateMappers:function(e){var t=this._private.cy,r=t.style();e=e||void 0===e?!0:!1,r.updateMappers(this);var i=this.updateCompoundBounds();return e?this.add(i).rtrigger("style"):this.add(i).trigger("style"),this},renderedCss:function(e){var t=this[0];if(t){var r=t.cy().style().getRenderedStyle(t);return void 0===e?r:r[e]}},css:function(t,r){var i=this.cy().style();if(e.is.plainObject(t)){var n=t;i.applyBypass(this,n);var a=this.updateCompoundBounds();this.add(a).rtrigger("style")}else if(e.is.string(t)){if(void 0===r){var o=this[0];return o?o._private.style[t].strValue:void 0}i.applyBypass(this,t,r);var a=this.updateCompoundBounds();this.add(a).rtrigger("style")}else if(void 0===t){var o=this[0];return o?i.getRawStyle(o):void 0}return this},removeCss:function(){for(var e=this.cy().style(),t=this,r=0;r0;o||i.push(a)}}return new e.Collection(this._private.cy,i).filter(t)},forwardNodes:function(t){for(var r=this,i=[],n=0;n0&&r.push(u[0]),r.push(c[0])}return new e.Collection(i,r).filter(t)},closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),e.fn.eles({source:function(t){var r,i=this[0];return i&&(r=i._private.source),new e.Collection(this.cy(),r).filter(t)},target:function(t){var r,i=this[0];return i&&(r=i._private.target),new e.Collection(this.cy(),r).filter(t)},sources:t({attr:"source"}),targets:t({attr:"target"})}),e.fn.eles({edgesWith:r(),edgesTo:r({thisIs:"source"})}),e.fn.eles({connectedEdges:function(t){for(var r=[],i=this._private.cy,n=this,a=0;ap;p+=1){if(l.push(n.call(t,r[p],p,r)),a=r[p].id(),c.hasOwnProperty(a))throw"ERROR: Multiple items with the same id found: "+a;c[a]=p,u.push(a)}for(this._private={cy:t,heap:l,pointers:c,elements:u,comparator:i,extractor:n,length:s},p=Math.floor(s/2);p>=0;p-=1)o=this.heapify(p);return o}},e.Heap.idFn=function(e){return e.id()},e.Heap.minHeapComparator=function(e,t){return e>=t},e.Heap.maxHeapComparator=function(e,t){return t>=e},e.Heap.prototype.size=function(){return this._private.length},e.Heap.prototype.getArgumentAsCollection=function(t,r){var i;if("undefined"==typeof r&&(r=this._private.cy),e.is.elementOrCollection(t))i=t;else{for(var n=[],a=[].concat.apply([],[t]),o=0;o0&&n.push(l)}i=new e.Collection(r,n)}return i},e.Heap.prototype.isHeap=function(){var e,t,r,i,n,a=this._private.heap,o=a.length,s=this._private.comparator;for(e=0;o>e;e+=1)if(t=2*e+1,r=t+1,i=o>t?s(a[t],a[e]):!0,n=o>r?s(a[r],a[e]):!0,!i||!n)return!1;return!0},e.Heap.prototype.heapSwap=function(e,t){var r=this._private.heap,i=this._private.pointers,n=this._private.elements,a=r[e],o=n[e],s=n[e],l=n[t];r[e]=r[t],n[e]=n[t],i[s]=t,i[l]=e,r[t]=a,n[t]=o},e.Heap.prototype.heapify=function(e,t){var r,i,n,a,o,s,l,c=0,u=!1;for("undefined"==typeof t&&(t=!0),r=this._private.heap,c=r.length,s=this._private.comparator,i=e;!u;)t?(n=2*i+1,a=n+1,o=i,c>n&&!s(r[n],r[o])&&(o=n),c>a&&!s(r[a],r[o])&&(o=a),u=o===i,u||(this.heapSwap(o,i),i=o)):(l=Math.floor((i-1)/2),o=i,u=0>l||s(r[o],r[l]),u||(this.heapSwap(o,l),i=l))},e.Heap.prototype.insert=function(e){var t,r,i,n,a,o=this.getArgumentAsCollection(e),s=o.length;for(a=0;s>a;a+=1){if(t=o[a],r=this._private.heap.length,i=this._private.extractor(t),n=t.id(),this._private.pointers.hasOwnProperty(n))throw"ERROR: Multiple items with the same id found: "+n;this._private.heap.push(i),this._private.elements.push(n),this._private.pointers[n]=r,this.heapify(r,!1)}this._private.length=this._private.heap.length},e.Heap.prototype.getValueById=function(e){if(this._private.pointers.hasOwnProperty(e)){var t=this._private.pointers[e];return this._private.heap[t]}},e.Heap.prototype.contains=function(e){for(var t=this.getArgumentAsCollection(e),r=0;r0?{value:this._private.heap[0],id:this._private.elements[0]}:void 0},e.Heap.prototype.pop=function(){if(this._private.length>0){var e,t,r,i=this.top(),n=this._private.length-1;return this.heapSwap(0,n),e=this._private.elements[n],t=this._private.heap[n],r=e,this._private.heap.pop(),this._private.elements.pop(),this._private.length=this._private.heap.length,delete this._private.pointers[r],this.heapify(0),i}},e.Heap.prototype.findDirectionHeapify=function(e){var t=Math.floor((e-1)/2),r=this._private.heap,i=0>t||this._private.comparator(r[e],r[t]);this.heapify(e,i)},e.Heap.prototype.edit=function(t,r){for(var i=this.getArgumentAsCollection(t),n=0;n=o&&s>=e&&t>=l&&c>=t};i.arrow={_points:[-.15,-.3,0,0,.15,-.3],collide:function(t,r,n,a,o,s,l,c){var u=i.arrow._points;return e.math.pointInsidePolygon(t,r,u,n,a,o,s,l,c)},roughCollide:n,draw:function(e){for(var t=i.arrow._points,r=0;re.math.sqDistanceToQuadraticBezier(r,i,f.startX,f.startY,f.cp2ax,f.cp2ay,f.selfEdgeMidX,f.selfEdgeMidY)||e.math.inBezierVicinity(r,i,f.selfEdgeMidX,f.selfEdgeMidY,f.cp2cx,f.cp2cy,f.endX,f.endY,Math.pow(s[h]._private.style.width.pxValue/2,2))&&Math.pow(s[h]._private.style.width.pxValue/2,2)+p>e.math.sqDistanceToQuadraticBezier(r,i,f.selfEdgeMidX,f.selfEdgeMidY,f.cp2cx,f.cp2cy,f.endX,f.endY))&&(g=!0);else if("haystack"==f.edgeType){var y=s[h].target()[0],m=y.position(),b=s[h].source()[0],x=b.position(),w=x.x+f.source.x,_=x.y+f.source.y,E=m.x+f.target.x,S=m.y+f.target.y;e.math.inLineVicinity(r,i,w,_,E,S,2*s[h]._private.style.width.pxValue)&&Math.pow(s[h]._private.style.width.pxValue/2,2)+p>e.math.sqDistanceToFiniteLine(r,i,w,_,E,S)&&(g=!0)}else"straight"==f.edgeType?e.math.inLineVicinity(r,i,f.startX,f.startY,f.endX,f.endY,2*s[h]._private.style.width.pxValue)&&Math.pow(s[h]._private.style.width.pxValue/2,2)+p>e.math.sqDistanceToFiniteLine(r,i,f.startX,f.startY,f.endX,f.endY)&&(g=!0):"bezier"==f.edgeType&&e.math.inBezierVicinity(r,i,f.startX,f.startY,f.cp2x,f.cp2y,f.endX,f.endY,Math.pow(s[h]._private.style.width.pxValue/2,2))&&Math.pow(s[h]._private.style.width.pxValue/2,2)+p>e.math.sqDistanceToQuadraticBezier(r,i,f.startX,f.startY,f.cp2x,f.cp2y,f.endX,f.endY)&&(g=!0);if(l.length&&l[l.length-1]==s[h]||(t.arrowShapes[s[h]._private.style["source-arrow-shape"].value].roughCollide(r,i,s[h]._private.rscratch.arrowStartX,s[h]._private.rscratch.arrowStartY,this.getArrowWidth(s[h]._private.style.width.pxValue),this.getArrowHeight(s[h]._private.style.width.pxValue),[s[h]._private.rscratch.arrowStartX-s[h].source()[0]._private.position.x,s[h]._private.rscratch.arrowStartY-s[h].source()[0]._private.position.y],0)&&t.arrowShapes[s[h]._private.style["source-arrow-shape"].value].collide(r,i,s[h]._private.rscratch.arrowStartX,s[h]._private.rscratch.arrowStartY,this.getArrowWidth(s[h]._private.style.width.pxValue),this.getArrowHeight(s[h]._private.style.width.pxValue),[s[h]._private.rscratch.arrowStartX-s[h].source()[0]._private.position.x,s[h]._private.rscratch.arrowStartY-s[h].source()[0]._private.position.y],0)||t.arrowShapes[s[h]._private.style["target-arrow-shape"].value].roughCollide(r,i,s[h]._private.rscratch.arrowEndX,s[h]._private.rscratch.arrowEndY,this.getArrowWidth(s[h]._private.style.width.pxValue),this.getArrowHeight(s[h]._private.style.width.pxValue),[s[h]._private.rscratch.arrowEndX-s[h].target()[0]._private.position.x,s[h]._private.rscratch.arrowEndY-s[h].target()[0]._private.position.y],0)&&t.arrowShapes[s[h]._private.style["target-arrow-shape"].value].collide(r,i,s[h]._private.rscratch.arrowEndX,s[h]._private.rscratch.arrowEndY,this.getArrowWidth(s[h]._private.style.width.pxValue),this.getArrowHeight(s[h]._private.style.width.pxValue),[s[h]._private.rscratch.arrowEndX-s[h].target()[0]._private.position.x,s[h]._private.rscratch.arrowEndY-s[h].target()[0]._private.position.y],0))&&(g=!0),g)if(n){var P=a.cy.getElementById(s[h]._private.data.source),k=a.cy.getElementById(s[h]._private.data.target);0!=s[h]._private.style.opacity.value&&"visible"==s[h]._private.style.visibility.value&&"element"==s[h]._private.style.display.value&&0!=P._private.style.opacity.value&&"visible"==P._private.style.visibility.value&&"element"==P._private.style.display.value&&0!=k._private.style.opacity.value&&"visible"==k._private.style.visibility.value&&"element"==k._private.style.display.value&&l.push(s[h])}else l.push(s[h])}return l.sort(this.zOrderSort),l.length>0?l[l.length-1]:null},t.prototype.getAllInBox=function(r,i,n,a){var o=(this.data,this.getCachedNodes()),s=this.getCachedEdges(),l=[],c=Math.min(r,n),u=Math.max(r,n),p=Math.min(i,a),d=Math.max(i,a);r=c,n=u,i=p,a=d;for(var h,g=0;g=r&&n>=k&&M>=i&&a>=M,T=N>=r&&n>=N&&C>=i&&a>=C;D&&T&&l.push(s[g])}}return l},t.prototype.getNodeWidth=function(e){return e.width()},t.prototype.getNodeHeight=function(e){return e.height()},t.prototype.getNodeShape=function(e){var t=e._private.style.shape.value;return e.isParent()?"rectangle"===t||"roundrectangle"===t?t:"rectangle":t},t.prototype.getNodePadding=function(e){var t=e._private.style["padding-left"].pxValue,r=e._private.style["padding-right"].pxValue,i=e._private.style["padding-top"].pxValue,n=e._private.style["padding-bottom"].pxValue;return isNaN(t)&&(t=0),isNaN(r)&&(r=0),isNaN(i)&&(i=0),isNaN(n)&&(n=0),{left:t,right:r,top:i,bottom:n}},t.prototype.zOrderSort=e.Collection.zIndexSort,t.prototype.updateCachedZSortedEles=function(){this.getCachedZSortedEles(!0)},t.prototype.getCachedZSortedEles=function(e){var t=this.lastZOrderCachedNodes,r=this.lastZOrderCachedEdges,i=this.getCachedNodes(),n=this.getCachedEdges(),a=[];if(!e&&t&&r&&t===i&&r===n)a=this.cachedZSortedEles;else{for(var o=0;od?d+"-"+p:p+"-"+d,void 0==n[i]&&(n[i]=[]),n[i].push(c),o.push(i)}else s.push(c)}for(var h,g,v,f,y,m,b,x,w,_,E,S,P,k,M=0;M1&&h!==g){var N=w.intersectLine(v.x,v.y,y,m,f.x,f.y,E/2),C=_.intersectLine(f.x,f.y,b,x,v.x,v.y,S/2),D=({x:(N[0]+C[0])/2,y:(N[1]+C[1])/2},{x1:N[0],x2:C[0],y1:N[1],y2:C[1]}),T=C[1]-N[1],I=C[0]-N[0],z=Math.sqrt(I*I+T*T),B={x:I,y:T},R={x:B.x/z,y:B.y/z};P={x:-R.y,y:R.x},(_.checkPoint(N[0],N[1],S/2,b,x,f.x,f.y)||w.checkPoint(C[0],C[1],E/2,y,m,v.x,v.y))&&(P={},k=!0)}for(var c,X,l=0;lmt,xt=e.math.distance({x:X.cp2x,y:X.cp2y},{x:X.endX,y:X.endY}),wt=yt>xt;if("bezier"===X.edgeType){var _t=!1;if(pt||dt||bt){_t=!0;var Et={x:X.cp2x-v.x,y:X.cp2y-v.y},St=Math.sqrt(Et.x*Et.x+Et.y*Et.y),Pt={x:Et.x/St,y:Et.y/St},kt=Math.max(y,m),Mt={x:X.cp2x+2*Pt.x*kt,y:X.cp2y+2*Pt.y*kt},Nt=w.intersectLine(v.x,v.y,y,m,Mt.x,Mt.y,E/2);bt?(X.cp2x=X.cp2x+Pt.x*(yt-mt),X.cp2y=X.cp2y+Pt.y*(yt-mt)):(X.cp2x=Nt[0]+Pt.x*yt,X.cp2y=Nt[1]+Pt.y*yt)}if(ht||gt||wt){_t=!0;var Et={x:X.cp2x-f.x,y:X.cp2y-f.y},St=Math.sqrt(Et.x*Et.x+Et.y*Et.y),Pt={x:Et.x/St,y:Et.y/St},kt=Math.max(y,m),Mt={x:X.cp2x+2*Pt.x*kt,y:X.cp2y+2*Pt.y*kt},Ct=_.intersectLine(f.x,f.y,b,x,Mt.x,Mt.y,S/2);wt?(X.cp2x=X.cp2x+Pt.x*(yt-xt),X.cp2y=X.cp2y+Pt.y*(yt-xt)):(X.cp2x=Ct[0]+Pt.x*yt,X.cp2y=Ct[1]+Pt.y*yt)}_t&&this.findEndpoints(c)}this.projectBezier(c)}}}for(var l=0;lf*m+y*b)t._private.rscratch.straightEdgeTooShort=!0;else{var v=t._private.rscratch;this.drawStyledEdge(t,e,[v.startX,v.startY,v.endX,v.endY],g,h),t._private.rscratch.straightEdgeTooShort=!1}}else{var v=t._private.rscratch;this.drawStyledEdge(t,e,[v.startX,v.startY,v.cp2x,v.cp2y,v.endX,v.endY],g,h)}t._private.rscratch.noArrowPlacement!==!0&&void 0!==t._private.rscratch.startX&&this.drawArrowheads(e,t,r)}}}}};var r=function(e,t){var r=Math.sqrt(Math.pow(e[4]-e[0],2)+Math.pow(e[5]-e[1],2));r+=Math.sqrt(Math.pow((e[4]+e[0])/2-e[2],2)+Math.pow((e[5]+e[1])/2-e[3],2));var i,n=Math.ceil(r/t);if(!(n>0))return null;i=new Array(2*n);for(var a=0;n>a;a++){var o=a/n;i[2*a]=e[0]*(1-o)*(1-o)+2*e[2]*(1-o)*o+e[4]*o*o,i[2*a+1]=e[1]*(1-o)*(1-o)+2*e[3]*(1-o)*o+e[5]*o*o}return i},i=function(e,t){var r,i=Math.sqrt(Math.pow(e[2]-e[0],2)+Math.pow(e[3]-e[1],2)),n=Math.ceil(i/t);if(!(n>0))return null;r=new Array(2*n);for(var a=[e[2]-e[0],e[3]-e[1]],o=0;n>o;o++){var s=o/n;r[2*o]=a[0]*s+e[0],r[2*o+1]=a[1]*s+e[1]}return r};t.prototype.drawStyledEdge=function(e,t,n,a,o){var s=this.data.cy,l=s.zoom();if("solid"==a)t.beginPath(),t.moveTo(n[0],n[1]),6==n.length?t.quadraticCurveTo(n[2],n[3],n[4],n[5]):t.lineTo(n[2],n[3]),t.stroke();else if("dotted"==a){var c;if(c=6==n.length?r(n,16,!0):i(n,16,!0),!c)return;var u=Math.max(1.6*o,3.4)*l,p=2*u,d=2*u;p=Math.max(p,1),d=Math.max(d,1);var h=this.createBuffer(p,d),g=h[1];g.setTransform(1,0,0,1,0,0),g.clearRect(0,0,p,d),g.fillStyle=t.strokeStyle,g.beginPath(),g.arc(p/2,d/2,.5*u,0,2*Math.PI,!1),g.fill(),t.beginPath();for(var v=0;vo?l+=Math.PI/2:l=-(Math.PI/2+l),e.translate(n,a),e.moveTo(0,0),e.rotate(-l);var c=this.getArrowWidth(e.lineWidth);e.scale(c,c),e.beginPath(),t.arrowShapes[i].draw(e),e.closePath(),"hollow"===r?(e.lineWidth=1/c,e.stroke()):e.fill(),e.scale(1/c,1/c),e.rotate(l),e.translate(-n,-a)}}(cytoscape),function(e){"use strict";var t=e("renderer","canvas"),r={};t.prototype.getCachedImage=function(e,t){if(r[e]&&r[e].image)return r[e].image;var i=r[e];return void 0==i&&(r[e]=new Object,r[e].image=new Image,r[e].image.onload=t,r[e].image.src=e,i=r[e]),i.image},t.prototype.swapCachedImage=function(e){if(r[e]){if(r[e].image&&r[e].image.complete){var t=r[e].image,i=document.createElement("canvas");return i.width=t.width,i.height=t.height,i.getContext("2d").drawImage(t,0,0),r[e].image=i,r[e].swappedWithCanvas=!0,i}return null}return null},t.prototype.updateImageCaches=function(){},t.prototype.drawInscribedImage=function(e,r,i){var n=this,a=(this.data.cy._private.zoom,i._private.position.x),o=i._private.position.y,s=i._private.style,l=s["background-fit"].value,c=s["background-position-x"],u=s["background-position-y"],p=s["background-repeat"].value,d=this.getNodeWidth(i),h=this.getNodeHeight(i);e.save(),t.nodeShapes[n.getNodeShape(i)].drawPath(e,a,o,d,h),e.clip();var g=r.width,v=r.height;if("contain"===l){var f=Math.min(d/g,h/v);g*=f,v*=f}else if("cover"===l){var f=Math.max(d/g,h/v);g*=f,v*=f}var y=a-d/2;y+="%"===c.units?(d-g)*c.value/100:c.pxValue;var m=o-h/2;if(m+="%"===u.units?(h-v)*u.value/100:u.pxValue,"repeat-x"===p||"repeat-y"===p||"repeat"===p){var b=e.createPattern(r,p);y=Math.min(y,a+d/2),y=Math.max(y,a-d/2),m=Math.min(m,o+o/2),m=Math.max(m,o-o/2),e.fillStyle=b,e.translate(y,m),"repeat-x"===p?e.fillRect(-d,0,2*d,h):"repeat-y"===p?e.fillRect(0,-h,d,2*h):e.fill()}else e.drawImage(r,y,m,g,v);e.restore()}}(cytoscape),function(e){"use strict";var t=e("renderer","canvas");t.prototype.drawEdgeText=function(e,t){var r=t._private.style.content.strValue;if(t.visible()&&r&&!r.match(/^\s+$/)&&(!this.hideEdgesOnViewport||!(this.dragData.didDrag||this.pinching||this.hoverData.dragging||this.data.wheel||this.swipePanning))){var i=t._private.style["font-size"].pxValue*t.cy().zoom(),n=t._private.style["min-zoomed-font-size"].pxValue;if(!(n>i)){e.textAlign="center",e.textBaseline="middle",this.recalculateEdgeLabelProjection(t);var a=t._private.rscratch;this.drawText(e,t,a.labelX,a.labelY)}}},t.prototype.drawNodeText=function(e,t){var r=t._private.style.content.strValue;if(t.visible()&&r&&!r.match(/^\s+$/)){var i=t._private.style["font-size"].pxValue*t.cy().zoom(),n=t._private.style["min-zoomed-font-size"].pxValue;if(!(n>i)){this.recalculateNodeLabelProjection(t);var a=t._private.style["text-halign"].strValue,o=t._private.style["text-valign"].strValue,s=t._private.rscratch;switch(a){case"left":e.textAlign="right";break;case"right":e.textAlign="left";break;case"center":default:e.textAlign="center"}switch(o){case"top":e.textBaseline="bottom";break;case"bottom":e.textBaseline="top";break;case"center":default:e.textBaseline="middle"}this.drawText(e,t,s.labelX,s.labelY)}}},t.prototype.setupTextStyle=function(e,t){var r=t.effectiveOpacity(),i=t._private.style,n=i["font-style"].strValue,a=i["font-size"].pxValue+"px",o=i["font-family"].strValue,s=(i["font-variant"].strValue,i["font-weight"].strValue);e.font=n+" "+s+" "+a+" "+o;var l=String(i.content.value),c=i["text-transform"].value;return"none"==c||("uppercase"==c?l=l.toUpperCase():"lowercase"==c&&(l=l.toLowerCase())),e.lineJoin="round",e.fillStyle="rgba("+i.color.value[0]+","+i.color.value[1]+","+i.color.value[2]+","+i["text-opacity"].value*i.opacity.value*r+")",e.strokeStyle="rgba("+i["text-outline-color"].value[0]+","+i["text-outline-color"].value[1]+","+i["text-outline-color"].value[2]+","+i["text-opacity"].value*i.opacity.value*r+")",l},t.prototype.drawText=function(e,t,r,i){var n=t._private.style,a=t.effectiveOpacity();if(0!==a){var o=this.setupTextStyle(e,t);if(void 0!=o&&!isNaN(r)&&!isNaN(i)){var s=2*n["text-outline-width"].value;s>0&&(e.lineWidth=s,e.strokeText(o,r,i)),e.fillText(""+o,r,i)}}}}(cytoscape),function(e){"use strict";var t=e("renderer","canvas");t.prototype.drawNode=function(e,r,i){var n,a,o=r._private.style;if(r.visible()){var s=r.effectiveOpacity();if(0!==s)if(n=this.getNodeWidth(r),a=this.getNodeHeight(r),e.lineWidth=o["border-width"].pxValue,void 0!==i&&i){var l=o["overlay-padding"].pxValue,c=o["overlay-opacity"].value,u=o["overlay-color"].value;c>0&&(e.fillStyle="rgba( "+u[0]+", "+u[1]+", "+u[2]+", "+c+" )",t.nodeShapes.roundrectangle.draw(e,r._private.position.x,r._private.position.y,n+2*l,a+2*l))}else{e.fillStyle="rgba("+o["background-color"].value[0]+","+o["background-color"].value[1]+","+o["background-color"].value[2]+","+o["background-opacity"].value*o.opacity.value*s+")",e.strokeStyle="rgba("+o["border-color"].value[0]+","+o["border-color"].value[1]+","+o["border-color"].value[2]+","+o["border-opacity"].value*o.opacity.value*s+")",e.lineJoin="miter";var p=o["background-image"].value[2]||o["background-image"].value[1];if(t.nodeShapes[this.getNodeShape(r)].draw(e,r._private.position.x,r._private.position.y,n,a),void 0!=p){var d=this,h=this.getCachedImage(p,function(){d.data.canvasNeedsRedraw[t.NODE]=!0,d.data.canvasNeedsRedraw[t.DRAG]=!0,d.swapCachedImage(p),d.redraw()});0==h.complete||this.drawInscribedImage(e,h,r)}this.hasPie(r)&&(this.drawPie(e,r),t.nodeShapes[this.getNodeShape(r)].drawPath(e,r._private.position.x,r._private.position.y,n,a));var g=o["background-blacken"].value;g>0?(e.fillStyle="rgba(0, 0, 0, "+g+")",e.fill()):0>g&&(e.fillStyle="rgba(255, 255, 255, "+Math.abs(g)+")",e.fill()),o["border-width"].pxValue>0&&e.stroke()}}},t.prototype.hasPie=function(t){t=t[0];for(var r=1;r<=e.style.pieBackgroundN;r++){var i=t._private.style["pie-"+r+"-background-size"].value;if(i>0)return!0}return!1},t.prototype.drawPie=function(t,r){if(r=r[0],this.hasPie(r)){var i=r._private.style["pie-size"],n=this.getNodeWidth(r),a=this.getNodeHeight(r),o=r._private.position.x,s=r._private.position.y,l=Math.min(n,a)/2,c=0;"%"===i.units?l=l*i.value/100:void 0!==i.pxValue&&(l=i.pxValue/2);for(var u=1;u<=e.style.pieBackgroundN;u++){{var p=r._private.style["pie-"+u+"-background-size"].value,d=r._private.style["pie-"+u+"-background-color"],h=p/100,g=1.5*Math.PI+2*Math.PI*c,v=2*Math.PI*h,f=g+v;o+l*Math.cos(g),s+l*Math.sin(g)}0===p||c>=1||c+h>1||(t.beginPath(),t.moveTo(o,s),t.arc(o,s,l,g,f),t.closePath(),t.fillStyle="rgb("+d.value[0]+","+d.value[1]+","+d.value[2]+")",t.fill(),c+=h)}t.restore()}}}(cytoscape),function(e){"use strict";var t=e("renderer","canvas");t.prototype.getPixelRatio=function(){var e=this.data.canvases[0],t=e.getContext("2d"),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1,i="undefined"!=typeof InstallTrigger;return i?1:(window.devicePixelRatio||1)/r},t.prototype.matchCanvasSize=function(e){var r,i=this.data,n=e.clientWidth,a=e.clientHeight,o=n,s=a,l=this.getPixelRatio();o*=l,s*=l;var c=i.canvasContainer;c.style.width=n+"px",c.style.height=a+"px";for(var u=0;u0&&(E.strokeStyle="rgba("+S["selection-box-border-color"].value[0]+","+S["selection-box-border-color"].value[1]+","+S["selection-box-border-color"].value[2]+","+S["selection-box-opacity"].value+")",E.strokeRect(p.select[0],p.select[1],p.select[2]-p.select[0],p.select[3]-p.select[1]))}if(p.bgActivePosistion){var d=p.cy.zoom(),k=p.bgActivePosistion;E.fillStyle="rgba("+S["active-bg-color"].value[0]+","+S["active-bg-color"].value[1]+","+S["active-bg-color"].value[2]+","+S["active-bg-opacity"].value+")",E.beginPath(),E.arc(k.x,k.y,S["active-bg-size"].pxValue/d,0,2*Math.PI),E.fill()}a||(p.canvasNeedsRedraw[t.SELECT_BOX]=!1)}var M=+new Date;void 0===l.averageRedrawTime&&(l.averageRedrawTime=M-m),l.averageRedrawTime=l.averageRedrawTime/2+(M-m)/2}r=r||{};var n=r.forcedContext,a=r.drawAllLayers,o=r.forcedZoom,s=r.forcedPan,l=this,c=void 0===r.forcedPxRatio?this.getPixelRatio():r.forcedPxRatio,u=l.data.cy,p=l.data;clearTimeout(this.redrawTimeout),void 0===this.averageRedrawTime&&(this.averageRedrawTime=0);var d=1e3/60,h=1e3,g=this.averageRedrawTime;g=Math.max(d,g),g=Math.min(g,h),void 0===this.lastDrawTime&&(this.lastDrawTime=0);var v=+new Date,f=v-this.lastDrawTime,y=f>=g;if(!n){if(!y)return clearTimeout(this.redrawTimeout),void(this.redrawTimeout=setTimeout(function(){l.redraw()},g));this.lastDrawTime=v}var m=v;n?i():e.util.requestAnimationFrame(i),n||l.initrender||(l.initrender=!0,u.trigger("initrender"))}}(cytoscape),function(e){"use strict";var t=e("renderer","canvas");t.prototype.drawPolygonPath=function(e,t,r,i,n,a){e.translate(t,r),e.scale(i/2,n/2),e.beginPath(),e.moveTo(a[0],a[1]);for(var o=1;o0&&a>0&&(s.clearRect(0,0,n,a),e.bg&&(s.fillStyle=e.bg,s.rect(0,0,n,a),s.fill()),s.globalCompositeOperation="source-over",this.redraw(e.full?{forcedContext:s,drawAllLayers:!0,forcedZoom:1,forcedPan:{x:-i.x1,y:-i.y1}}:{forcedContext:s,drawAllLayers:!0})),o.toDataURL("image/png")}}(cytoscape),function(e){"use strict";var t=e("renderer","canvas");t.prototype.registerBinding=function(e,t,r,i){this.bindings.push({target:e,event:t,handler:r,useCapture:i}),e.addEventListener(t,r,i)},t.prototype.load=function(){var r=this,i=function(e,t,r){if(!t)for(var i=e.parents(),n=0;no[0]&&i.pageXo[1]&&i.pageY=t.panOrBoxSelectDelay)&&Math.abs(c[3]-c[1])+Math.abs(c[2]-c[0])<4&&s.panningEnabled()&&s.userPanningEnabled())r.hoverData.dragging=!0,c[4]=0;else{if(s.boxSelectionEnabled()&&Math.pow(c[2]-c[0],2)+Math.pow(c[3]-c[1],2)>7&&c[4]&&(clearTimeout(r.bgActiveTimeout),r.data.bgActivePosistion=void 0,r.data.canvasNeedsRedraw[t.SELECT_BOX]=!0,r.redraw()),d&&d.isEdge()&&d.active()&&d.unactivate(),u!=p&&(p&&p.trigger(new e.Event(i,{type:"mouseout",cyPosition:{x:l[0],y:l[1]}})),u&&u.trigger(new e.Event(i,{type:"mouseover",cyPosition:{x:l[0],y:l[1]}})),r.hoverData.last=u),d&&d.isNode()&&r.nodeIsDraggable(d)){r.dragData.didDrag=!0,r.hoverData.draggingEles=!0;var y=[];new e.Collection(s,g).positions(function(e,t){if(t.isNode()&&r.nodeIsDraggable(t)){var i=t.position();return{x:i.x+h[0],y:i.y+h[1]}}}),new e.Collection(s,y).trigger("drag"),c[2]==c[0]&&c[3]==c[1]&&(r.data.canvasNeedsRedraw[t.NODE]=!0),r.data.canvasNeedsRedraw[t.DRAG]=!0}n=!0}return c[2]=l[0],c[3]=l[1],n?(i.stopPropagation&&i.stopPropagation(),i.preventDefault&&i.preventDefault(),!1):void 0},1e3/30),!1),r.registerBinding(window,"mouseup",function(i){var n=r.hoverData.capture;if(n){r.hoverData.capture=!1;var o=r.data.cy,s=r.projectIntoViewport(i.pageX,i.pageY),l=r.data.select,c=r.findNearestElement(s[0],s[1],!0),u=(r.getCachedNodes(),r.getCachedEdges(),r.dragData.possibleDragElements),p=r.hoverData.down,d=i.shiftKey;if(r.data.bgActivePosistion=void 0,clearTimeout(r.bgActiveTimeout),r.hoverData.cxtStarted=!1,r.hoverData.draggingEles=!1,p&&p.unactivate(),3===r.hoverData.which){var h=new e.Event(i,{type:"cxttapend",cyPosition:{x:s[0],y:s[1]}});if(p?p.trigger(h):o.trigger(h),!r.hoverData.cxtDragged){var g=new e.Event(i,{type:"cxttap",cyPosition:{x:s[0],y:s[1]}});p?p.trigger(g):o.trigger(g)}r.hoverData.cxtDragged=!1,r.hoverData.which=null}else{if(null!=p||r.dragData.didDrag||Math.pow(l[2]-l[0],2)+Math.pow(l[3]-l[1],2)>7&&l[4]||r.hoverData.dragging||(o.$(":selected").unselect(),u.length>0&&(r.data.canvasNeedsRedraw[t.NODE]=!0),r.dragData.possibleDragElements=u=[]),null!=c?c.trigger(new e.Event(i,{type:"mouseup",cyPosition:{x:s[0],y:s[1]}})).trigger(new e.Event(i,{type:"tapend",cyPosition:{x:s[0],y:s[1]}})).trigger(new e.Event(i,{type:"vmouseup",cyPosition:{x:s[0],y:s[1]}})):null==c&&o.trigger(new e.Event(i,{type:"mouseup",cyPosition:{x:s[0],y:s[1]}})).trigger(new e.Event(i,{type:"tapend",cyPosition:{x:s[0],y:s[1]}})).trigger(new e.Event(i,{type:"vmouseup",cyPosition:{x:s[0],y:s[1]}})),Math.pow(l[2]-l[0],2)+Math.pow(l[3]-l[1],2)==0&&(null!=c?c.trigger(new e.Event(i,{type:"click",cyPosition:{x:s[0],y:s[1]}})).trigger(new e.Event(i,{type:"tap",cyPosition:{x:s[0],y:s[1]}})).trigger(new e.Event(i,{type:"vclick",cyPosition:{x:s[0],y:s[1]}})):null==c&&o.trigger(new e.Event(i,{type:"click",cyPosition:{x:s[0],y:s[1]}})).trigger(new e.Event(i,{type:"tap",cyPosition:{x:s[0],y:s[1]}})).trigger(new e.Event(i,{type:"vclick",cyPosition:{x:s[0],y:s[1]}}))),c!=p||r.dragData.didDrag){if(c==p&&null!=c&&c._private.grabbed){for(var v=o.$(":grabbed"),f=0;f7&&l[4]){var x=[],w=r.getAllInBox(l[0],l[1],l[2],l[3]);r.data.canvasNeedsRedraw[t.SELECT_BOX]=!0,w.length>0&&(r.data.canvasNeedsRedraw[t.NODE]=!0);for(var f=(new e.Event(i,{type:"select"}),0);f=0&&m>=l&&u>=0&&m>=u&&c>=0&&b>=c&&p>=0&&b>=p;var N=s.pan(),C=s.zoom();if(d=x(l,c,u,p),h=[(l+u)/2,(c+p)/2],g=[(h[0]-N.x)/C,(h[1]-N.y)/C],100>d){var D=r.findNearestElement(E[0],E[1],!0),T=r.findNearestElement(E[2],E[3],!0);return D&&D.isNode()?(D.activate().trigger(new e.Event(o,{type:"cxttapstart",cyPosition:{x:E[0],y:E[1]}})),r.touchData.start=D):T&&T.isNode()?(T.activate().trigger(new e.Event(o,{type:"cxttapstart",cyPosition:{x:E[0],y:E[1]}})),r.touchData.start=T):(s.trigger(new e.Event(o,{type:"cxttapstart",cyPosition:{x:E[0],y:E[1]}})),r.touchData.start=null),r.touchData.start&&(r.touchData.start._private.grabbed=!1),r.touchData.cxt=!0,r.touchData.cxtDragged=!1,r.data.bgActivePosistion=void 0,void r.redraw()}}if(o.touches[2]);else if(o.touches[1]);else if(o.touches[0]){var I=r.findNearestElement(E[0],E[1],!0);if(null!=I){if(I.activate(),r.touchData.start=I,"nodes"==I._private.group&&r.nodeIsDraggable(I)){var z=r.dragData.touchDragEles=[];if(n(I,z),I.trigger("grab"),I.selected()){z=r.dragData.touchDragEles=[];for(var B=s.$("node:selected"),R=0;R250&&(r.touchData.start?r.touchData.start.trigger(new e.Event(o,{type:"taphold",cyPosition:{x:E[0],y:E[1]}})):(r.data.cy.trigger(new e.Event(o,{type:"taphold",cyPosition:{x:E[0],y:E[1]}})),s.$(":selected").unselect()))},1e3)}}},!1),r.registerBinding(window,"touchmove",e.util.throttle(function(i){var n=r.data.select,a=r.touchData.capture;a&&i.preventDefault();var o=r.data.cy,s=(r.getCachedNodes(),r.getCachedEdges(),r.touchData.now),h=r.touchData.earlier;if(i.touches[0]){var m=r.projectIntoViewport(i.touches[0].pageX,i.touches[0].pageY);s[0]=m[0],s[1]=m[1]}if(i.touches[1]){var m=r.projectIntoViewport(i.touches[1].pageX,i.touches[1].pageY);s[2]=m[0],s[3]=m[1]}if(i.touches[2]){var m=r.projectIntoViewport(i.touches[2].pageX,i.touches[2].pageY);s[4]=m[0],s[5]=m[1]}for(var b=[],w=0;w=1.5||k>=150){r.touchData.cxt=!1,r.touchData.start&&(r.touchData.start.unactivate(),r.touchData.start=null),r.data.bgActivePosistion=void 0,r.data.canvasNeedsRedraw[t.SELECT_BOX]=!0;var N=new e.Event(i,{type:"cxttapend",cyPosition:{x:s[0],y:s[1]}});r.touchData.start?r.touchData.start.trigger(N):o.trigger(N)}}if(a&&r.touchData.cxt){var N=new e.Event(i,{type:"cxtdrag",cyPosition:{x:s[0],y:s[1]}});r.data.bgActivePosistion=void 0,r.data.canvasNeedsRedraw[t.SELECT_BOX]=!0,r.touchData.start?r.touchData.start.trigger(N):o.trigger(N),r.touchData.start&&(r.touchData.start._private.grabbed=!1),r.touchData.cxtDragged=!0}else if(a&&i.touches[2]&&o.boxSelectionEnabled())r.data.bgActivePosistion=void 0,clearTimeout(this.threeFingerSelectTimeout),this.lastThreeTouch=+new Date,r.data.canvasNeedsRedraw[t.SELECT_BOX]=!0,n&&0!==n.length&&void 0!==n[0]?(n[2]=(s[0]+s[2]+s[4])/3,n[3]=(s[1]+s[3]+s[5])/3):(n[0]=(s[0]+s[2]+s[4])/3,n[1]=(s[1]+s[3]+s[5])/3,n[2]=(s[0]+s[2]+s[4])/3+1,n[3]=(s[1]+s[3]+s[5])/3+1),n[4]=1,r.redraw();else if(a&&i.touches[1]&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){r.data.bgActivePosistion=void 0,r.data.canvasNeedsRedraw[t.SELECT_BOX]=!0;var _=i.touches[0].pageX-v,E=i.touches[0].pageY-f,S=i.touches[1].pageX-v,P=i.touches[1].pageY-f,k=x(_,E,S,P),M=k/d;if(1!=M&&y){var C=_-l,D=E-c,T=S-u,I=P-p,z=(C+T)/2,B=(D+I)/2,R=o.zoom(),X=R*M,Y=o.pan(),V=g[0]*R+Y.x,L=g[1]*R+Y.y,A={x:-X/R*(V-Y.x-z)+V,y:-X/R*(L-Y.y-B)+L};o._private.zoom=X,o._private.pan=A,o.trigger("pan zoom").notify("viewport"),d=k,l=_,c=E,u=S,p=P,r.pinching=!0}if(i.touches[0]){var m=r.projectIntoViewport(i.touches[0].pageX,i.touches[0].pageY);s[0]=m[0],s[1]=m[1]}if(i.touches[1]){var m=r.projectIntoViewport(i.touches[1].pageX,i.touches[1].pageY);s[2]=m[0],s[3]=m[1]}if(i.touches[2]){var m=r.projectIntoViewport(i.touches[2].pageX,i.touches[2].pageY);s[4]=m[0],s[5]=m[1]}}else if(i.touches[0]){{var O=r.touchData.start;r.touchData.last}if(null!=O&&"nodes"==O._private.group&&r.nodeIsDraggable(O)){var F=r.dragData.touchDragEles,q=new e.Collection(o,F).positions(function(e,t){if(r.nodeIsDraggable(t)){r.dragData.didDrag=!0;var i=t.position();return{x:i.x+b[0],y:i.y+b[1]}}});q.trigger("drag"),r.hoverData.draggingEles=!0,r.data.canvasNeedsRedraw[t.DRAG]=!0,r.touchData.startPosition[0]==h[0]&&r.touchData.startPosition[1]==h[1]&&(r.data.canvasNeedsRedraw[t.NODE]=!0)}if(null!=O&&(O.trigger(new e.Event(i,{type:"touchmove",cyPosition:{x:s[0],y:s[1]}})),O.trigger(new e.Event(i,{type:"tapdrag",cyPosition:{x:s[0],y:s[1]}})),O.trigger(new e.Event(i,{type:"vmousemove",cyPosition:{x:s[0],y:s[1]}}))),null==O){var j=r.findNearestElement(s[0],s[1],!0);null!=j&&(j.trigger(new e.Event(i,{type:"touchmove",cyPosition:{x:s[0],y:s[1]}})),j.trigger(new e.Event(i,{type:"tapdrag",cyPosition:{x:s[0],y:s[1]}})),j.trigger(new e.Event(i,{type:"vmousemove",cyPosition:{x:s[0],y:s[1]}}))),null==j&&(o.trigger(new e.Event(i,{type:"touchmove",cyPosition:{x:s[0],y:s[1]}})),o.trigger(new e.Event(i,{type:"tapdrag",cyPosition:{x:s[0],y:s[1]}})),o.trigger(new e.Event(i,{type:"vmousemove",cyPosition:{x:s[0],y:s[1]}})))}r.touchData.last=j;for(var H=0;H4&&(r.touchData.singleTouchMoved=!0);if(a&&(null==O||O.isEdge())&&o.panningEnabled()&&o.userPanningEnabled()){O&&(O.unactivate(),r.data.bgActivePosistion||(r.data.bgActivePosistion={x:s[0],y:s[1]}),r.data.canvasNeedsRedraw[t.SELECT_BOX]=!0),o.panBy({x:b[0]*o.zoom(),y:b[1]*o.zoom()}),r.swipePanning=!0;var m=r.projectIntoViewport(i.touches[0].pageX,i.touches[0].pageY);s[0]=m[0],s[1]=m[1]}}for(var w=0;w0&&(r.data.canvasNeedsRedraw[t.NODE]=!0)}i.touches.length<2&&(r.pinching=!1,r.data.canvasNeedsRedraw[t.NODE]=!0,r.redraw());var y=!1;if(null!=u&&(u._private.active=!1,y=!0,u.trigger("unactivate")),i.touches[2])r.data.bgActivePosistion=void 0,r.data.canvasNeedsRedraw[t.SELECT_BOX]=!0;else if(i.touches[1]);else if(i.touches[0]);else if(!i.touches[0]){if(r.data.bgActivePosistion=void 0,r.data.canvasNeedsRedraw[t.SELECT_BOX]=!0,null!=u){1==u._private.grabbed&&(u._private.grabbed=!1,u.trigger("free"),u._private.rscratch.inDragLayer=!1);for(var m=u._private.edges,b=0;b=t||r.drawPolygon(e._private.position.x,e._private.position.y,t,i,nodeSapes.roundrectangle2.points)},intersectLine:function(t,r,n,a,o){return e.math.findPolygonIntersection(t,r,n,a,o,i.square.points)},intersectBox:function(){i.square.points}},i.pentagon={points:e.math.generateUnitNgonPointsFitToSquare(5,0),draw:function(e,t,n,a,o){r.drawPolygon(e,t,n,a,o,i.pentagon.points)},drawPath:function(e,t,n,a,o){r.drawPolygonPath(e,t,n,a,o,i.pentagon.points)},intersectLine:function(e,t,n,a,o,s,l){return r.polygonIntersectLine(o,s,i.pentagon.points,e,t,n/2,a/2,l)},intersectBox:function(t,r,n,a,o,s,l,c,u){var p=i.pentagon.points;return e.math.boxIntersectPolygon(t,r,n,a,p,o,s,l,c,[0,-1],u)},checkPointRough:function(t,r,n,a,o,s,l){return e.math.checkInBoundingBox(t,r,i.pentagon.points,n,a,o,s,l)},checkPoint:function(t,r,n,a,o,s,l){return e.math.pointInsidePolygon(t,r,i.pentagon.points,s,l,a,o,[0,-1],n)}},i.hexagon={points:e.math.generateUnitNgonPointsFitToSquare(6,0),draw:function(e,t,n,a,o){r.drawPolygon(e,t,n,a,o,i.hexagon.points)},drawPath:function(e,t,n,a,o){r.drawPolygonPath(e,t,n,a,o,i.hexagon.points)},intersectLine:function(t,r,n,a,o,s,l){return e.math.polygonIntersectLine(o,s,i.hexagon.points,t,r,n/2,a/2,l)},intersectBox:function(t,r,n,a,o,s,l,c,u){var p=i.hexagon.points;return e.math.boxIntersectPolygon(t,r,n,a,p,o,s,l,c,[0,-1],u)},checkPointRough:function(t,r,n,a,o,s,l){return e.math.checkInBoundingBox(t,r,i.hexagon.points,n,a,o,s,l)},checkPoint:function(t,r,n,a,o,s,l){return e.math.pointInsidePolygon(t,r,i.hexagon.points,s,l,a,o,[0,-1],n)}},i.heptagon={points:e.math.generateUnitNgonPointsFitToSquare(7,0),draw:function(e,t,n,a,o){r.drawPolygon(e,t,n,a,o,i.heptagon.points)},drawPath:function(e,t,n,a,o){r.drawPolygonPath(e,t,n,a,o,i.heptagon.points)},intersectLine:function(e,t,n,a,o,s,l){return r.polygonIntersectLine(o,s,i.heptagon.points,e,t,n/2,a/2,l)},intersectBox:function(e,t,n,a,o,s,l,c,u){var p=i.heptagon.points;return r.boxIntersectPolygon(e,t,n,a,p,o,s,l,c,[0,-1],u)},checkPointRough:function(t,r,n,a,o,s,l){return e.math.checkInBoundingBox(t,r,i.heptagon.points,n,a,o,s,l)},checkPoint:function(t,r,n,a,o,s,l){return e.math.pointInsidePolygon(t,r,i.heptagon.points,s,l,a,o,[0,-1],n)}},i.octagon={points:e.math.generateUnitNgonPointsFitToSquare(8,0),draw:function(e,t,n,a,o){r.drawPolygon(e,t,n,a,o,i.octagon.points)},drawPath:function(e,t,n,a,o){r.drawPolygonPath(e,t,n,a,o,i.octagon.points)},intersectLine:function(e,t,n,a,o,s,l){return r.polygonIntersectLine(o,s,i.octagon.points,e,t,n/2,a/2,l)},intersectBox:function(e,t,n,a,o,s,l,c,u){var p=i.octagon.points;return r.boxIntersectPolygon(e,t,n,a,p,o,s,l,c,[0,-1],u)},checkPointRough:function(t,r,n,a,o,s,l){return e.math.checkInBoundingBox(t,r,i.octagon.points,n,a,o,s,l)},checkPoint:function(t,r,n,a,o,s,l){return e.math.pointInsidePolygon(t,r,i.octagon.points,s,l,a,o,[0,-1],n)}};var n=new Array(20),a=e.math.generateUnitNgonPoints(5,0),o=e.math.generateUnitNgonPoints(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;ll;l++)n[4*l]=a[2*l],n[4*l+1]=a[2*l+1],n[4*l+2]=o[2*l],n[4*l+3]=o[2*l+1];n=e.math.fitPolygonToSquare(n),i.star5=i.star={points:n,draw:function(e,t,n,a,o){r.drawPolygon(e,t,n,a,o,i.star5.points)},drawPath:function(e,t,n,a,o){r.drawPolygonPath(e,t,n,a,o,i.star5.points)},intersectLine:function(e,t,n,a,o,s,l){return r.polygonIntersectLine(o,s,i.star5.points,e,t,n/2,a/2,l)},intersectBox:function(e,t,n,a,o,s,l,c,u){var p=i.star5.points;return r.boxIntersectPolygon(e,t,n,a,p,o,s,l,c,[0,-1],u)},checkPointRough:function(t,r,n,a,o,s,l){return e.math.checkInBoundingBox(t,r,i.star5.points,n,a,o,s,l)},checkPoint:function(t,r,n,a,o,s,l){return e.math.pointInsidePolygon(t,r,i.star5.points,s,l,a,o,[0,-1],n)}}}(cytoscape),function(e){"use strict";function t(t){this.options=e.util.extend({},r,t)}var r={liveUpdate:!0,ready:void 0,stop:void 0,maxSimulationTime:4e3,fit:!0,padding:[50,50,50,50],simulationBounds:void 0,ungrabifyWhileSimulating:!0,repulsion:void 0,stiffness:void 0,friction:void 0,gravity:!0,fps:void 0,precision:void 0,nodeMass:void 0,edgeLength:void 0,stepSize:1,stableEnergy:function(e){var t=e;return t.max<=.5||t.mean<=.3}};t.prototype.run=function(){function t(e,t){return null==t?void 0:"function"==typeof t?t.apply(e,[e._private.data,{nodes:o.length,edges:s.length,element:e}]):t}function r(e){var t=e.x,r=e.y,i=c,n=u,a=-2,o=2,s=4;return{x:t/i*s+a,y:r/n*s+o}}function i(e){n.fit&&a.fit(),e()}var n=this.options,a=n.cy,o=a.nodes(),s=a.edges(),l=a.container(),c=l.clientWidth,u=l.clientHeight,p=n.simulationBounds;n.simulationBounds?(c=p[2]-p[0],u=p[3]-p[1]):n.simulationBounds=[0,0,c,u];var d=n.simulationBounds;if(d.x1=d[0],d.y1=d[1],d.x2=d[2],d.y2=d[3],a.nodes().size()<=1)return n.fit&&a.reset(),a.nodes().position({x:Math.round((d.x1+d.x2)/2),y:Math.round((d.y1+d.y2)/2)}),a.one("layoutready",n.ready),a.trigger("layoutready"),a.one("layoutstop",n.stop),void a.trigger("layoutstop");var h=this.system=arbor.ParticleSystem(n.repulsion,n.stiffness,n.friction,n.gravity,n.fps,n.dt,n.precision);this.system=h,n.liveUpdate&&n.fit&&a.reset();var g,v=250,f=!1,y=+new Date,m={init:function(){},redraw:function(){var t=h.energy();if(null!=n.stableEnergy&&null!=t&&t.n>0&&n.stableEnergy(t))return void h.stop();clearTimeout(g),g=setTimeout(w,v);var r=[];h.eachNode(function(e,t){var i=(e.name,e.data),n=i.element;null!=n&&(n.locked()||n.grabbed()||(n.silentPosition({x:d.x1+t.x,y:d.y1+t.y}),r.push(n)))});var i=+new Date-y>=16;n.liveUpdate&&r.length>0&&i&&(new e.Collection(a,r).rtrigger("position"),y=+new Date),f||(f=!0,a.one("layoutready",n.ready),a.trigger("layoutready"))}};h.renderer=m,h.screenSize(c,u),h.screenPadding(n.padding[0],n.padding[1],n.padding[2],n.padding[3]),h.screenStep(n.stepSize);var b=function(e){grabbed=this;var t=h.fromScreen(this.position()),r=arbor.Point(t.x,t.y);switch(this.scratch().arbor.p=r,e.type){case"grab":this.scratch().arbor.fixed=!0;break;case"dragstop":this.scratch().arbor.fixed=!1,this.scratch().arbor.tempMass=1e3}};o.bind("grab drag dragstop",b),o.each(function(e,i){if(!this.isFullAutoParent()){var a=this._private.data.id,o=t(this,n.nodeMass),s=this._private.locked;if(!i.isFullAutoParent()){var l=r({x:i.position().x,y:i.position().y});i.locked()||(this.scratch().arbor=h.addNode(a,{element:this,mass:o,fixed:s,x:s?l.x:void 0,y:s?l.y:void 0}))}}}),s.each(function(){var e=(this.id(),this.source().id()),r=this.target().id(),i=t(this,n.edgeLength);this.scratch().arbor=h.addEdge(e,r,{length:i})});var x=o.filter(":grabbable");n.ungrabifyWhileSimulating&&x.ungrabify();var w=function(){function e(){n.liveUpdate||(n.fit&&a.reset(),a.nodes().rtrigger("position")),o.unbind("grab drag dragstop",b),n.ungrabifyWhileSimulating&&x.grabify(),a.one("layoutstop",n.stop),a.trigger("layoutstop")}window.isIE?i(function(){e()}):e()};h.start(),setTimeout(function(){h.stop()},n.maxSimulationTime)},t.prototype.stop=function(){null!=this.system&&system.stop()},e("layout","arbor",t)}(cytoscape),function(e){"use strict";function t(t){this.options=e.util.extend({},r,t)}var r={fit:!0,ready:void 0,stop:void 0,directed:!1,padding:30,circle:!1,roots:void 0,maximalAdjustments:0};t.prototype.run=function(){var t,r=this.options,i=r,n=r.cy,a=n.nodes(),o=n.edges(),s=a.add(o),l=n.container(),c=l.clientWidth,u=l.clientHeight;if(e.is.elementOrCollection(i.roots))t=i.roots;else if(e.is.array(i.roots)){for(var p=[],d=0;dw;){for(var _=b.shift(),E=_.neighborhood().nodes(),S=!1,d=0;dd;d++)for(var P=f[d],T=P.length,I=0;T>I;I++){var g=P[I],z=g._private.scratch.BreadthFirstLayout,B=N(g);B&&(z.intEle=B,D.push(g))}for(var d=0;df.length-1;)f.push([]);f[X].push(g),z.depth=X,z.index=f[X].length-1}k()}for(var Y=0,d=0;dl||0===t)&&(i+=s/c,n++)}return n=Math.max(1,n),i/=n,0===n&&(i=void 0),A[e.id()]=i,i},F=0;3>F;F++){for(var d=0;d0&&f[0].length<=3?s/2:0),p=2*Math.PI/f[r].length*n;return 0===r&&1===f[0].length&&(l=1),{x:q.x+l*Math.cos(p),y:q.y+l*Math.sin(p)}}return{x:(n+1)*a,y:(r+1)*o}}),r.fit&&n.fit(i.padding),n.one("layoutready",r.ready),n.trigger("layoutready"),n.one("layoutstop",r.stop),n.trigger("layoutstop")
+},t.prototype.stop=function(){},e("layout","breadthfirst",t)}(cytoscape),function(e){"use strict";function t(t){this.options=e.util.extend({},r,t)}var r={fit:!0,ready:void 0,stop:void 0,rStepSize:10,padding:30,startAngle:1.5*Math.PI,counterclockwise:!1};t.prototype.run=function(){function e(){var e=0,t=u,r={x:l.x+g*Math.cos(e),y:l.y+g*Math.sin(e)},i={x:l.x+g*Math.cos(t),y:l.y+g*Math.sin(t)},n=Math.sqrt((i.x-r.x)*(i.x-r.x)+(i.y-r.y)*(i.y-r.y));return n}for(var t=this.options,r=t,i=t.cy,n=i.nodes().filter(function(){return!this.isFullAutoParent()}),a=(i.edges(),i.container()),o=a.clientWidth,s=a.clientHeight,l={x:o/2,y:s/2},c=r.startAngle,u=2*Math.PI/n.length,p=0,d=0;d0){var m=Math.abs(f[0].value-y.value);m>=g&&(f=[],v.push(f))}f.push(y)}for(var b={},x=0,w=u+t.minNodeSpacing,p=0;p1){var S=Math.cos(E)-Math.cos(0),P=Math.sin(E)-Math.sin(0),k=Math.sqrt(w*w/(S*S+P*P));x=Math.max(k,x)}for(var M=0;M<_.length;M++){var y=_[M],c=t.startAngle+(t.counterclockwise?1:-1)*E*M,N={x:s.x+x*Math.cos(c),y:s.y+x*Math.sin(c)};b[y.node.id()]=N}x+=w}i.positions(function(){var e=this.id();return b[e]}),e.fit&&r.fit(t.padding),r.one("layoutready",e.ready),r.trigger("layoutready"),r.one("layoutstop",e.stop),r.trigger("layoutstop")},t.prototype.stop=function(){},e("layout","concentric",t)}(cytoscape),function(e){"use strict";function t(t){this.options=e.util.extend({},i,t)}var r,i={ready:function(){},stop:function(){},refresh:0,fit:!0,padding:30,randomize:!0,debug:!1,nodeRepulsion:1e4,nodeOverlap:10,idealEdgeLength:10,edgeElasticity:100,nestingFactor:5,gravity:250,numIter:100,initialTemp:200,coolingFactor:.95,minTemp:1};t.prototype.run=function(){var e=this.options,t=e.cy;r=1==e.debug?!0:!1;var i=new Date,a=n(t,e);r&&s(a),1==e.randomize&&(l(a,t),0=l;){var h=s[l++],g=r.idToIndex[h],v=r.layoutNodes[g],f=v.children;if(f.length>0){r.graphSet.push(f);for(var n=0;ni.count?0:i.graph},o=function(e,t,r,i){var n=i.graphSet[r];if(-1<$.inArray(e,n)&&-1<$.inArray(t,n))return{count:2,graph:r};for(var a=0,s=0;ss;s++)for(var l=e.layoutNodes[e.idToIndex[a[s]]],c=s+1;o>c;c++){var u=e.layoutNodes[e.idToIndex[a[c]]];d(l,u,e,t,r)}}},d=function(e,t,r,i,n){var a="Node repulsion. Node1: "+e.id+" Node2: "+t.id,o=t.positionX-e.positionX,s=t.positionY-e.positionY;if(a+="\ndirectionX: "+o+", directionY: "+s,0==o&&0==s)return void(a+="\nNodes have the same position.");var l=g(e,t,o,s);if(l>0){a+="\nNodes DO overlap.",a+="\nOverlap: "+l;var c=n.nodeOverlap*l,u=Math.sqrt(o*o+s*s);a+="\nDistance: "+u;var p=c*o/u,d=c*s/u}else{a+="\nNodes do NOT overlap.";var v=h(e,o,s),f=h(t,-1*o,-1*s),y=f.x-v.x,m=f.y-v.y,b=y*y+m*m,u=Math.sqrt(b);a+="\nDistance: "+u;var c=n.nodeRepulsion/b,p=c*y/u,d=c*m/u}e.offsetX-=p,e.offsetY-=d,t.offsetX+=p,t.offsetY+=d,a+="\nForceX: "+p+" ForceY: "+d,w(a)},h=function(e,t,r){var i=e.positionX,n=e.positionY,a=e.height,o=e.width,s=r/t,l=a/o,c="Computing clipping point of node "+e.id+" . Height: "+a+", Width: "+o+"\nDirection "+t+", "+r,u={};do{if(0==t&&r>0){u.x=i,c+="\nUp direction",u.y=n+a/2;break}if(0==t&&0>r){u.x=i,u.y=n+a/2,c+="\nDown direction";break}if(t>0&&s>=-1*l&&l>=s){u.x=i+o/2,u.y=n+o*r/2/t,c+="\nRightborder";break}if(0>t&&s>=-1*l&&l>=s){u.x=i-o/2,u.y=n-o*r/2/t,c+="\nLeftborder";break}if(r>0&&(-1*l>=s||s>=l)){u.x=i+a*t/2/r,u.y=n+a/2,c+="\nTop border";break}if(0>r&&(-1*l>=s||s>=l)){u.x=i-a*t/2/r,u.y=n-a/2,c+="\nBottom border";break}}while(!1);return c+="\nClipping point found at "+u.x+", "+u.y,w(c),u},g=function(e,t,r,i){if(r>0)var n=e.maxX-t.minX;else var n=t.maxX-e.minX;if(i>0)var a=e.maxY-t.minY;else var a=t.maxY-e.minY;return n>=0&&a>=0?Math.sqrt(n*n+a*a):0},v=function(e,t,r){for(var i=0;id;d++){var h=e.layoutNodes[e.idToIndex[a[d]]];i="Node: "+h.id;var g=l-h.positionX,v=c-h.positionY,f=Math.sqrt(g*g+v*v);if(f>1){var y=r.gravity*g/f,m=r.gravity*v/f;h.offsetX+=y,h.offsetY+=m,i+=": Applied force: "+y+", "+m}else i+=": skypped since it's too close to center";w(i)}}},y=function(e){var t=[],r=0,i=-1;for(w("propagateForces"),t.push.apply(t,e.graphSet[0]),i+=e.graphSet[0].length;i>=r;){var n=t[r++],a=e.idToIndex[n],o=e.layoutNodes[a],s=o.children;if(0r)var a={x:r*e/n,y:r*t/n};else var a={x:e,y:t};return i+=".\nResult: ("+a.x+", "+a.y+")",w(i),a},x=function(e,t){var r="Propagating new position/size of node "+e.id,i=e.parentId;if(void 0==i)return r+=". No parent node.",void w(r);var n=t.layoutNodes[t.idToIndex[i]],a=!1;return(void 0==n.maxX||e.maxX+n.padRight>n.maxX)&&(n.maxX=e.maxX+n.padRight,a=!0,r+="\nNew maxX for parent node "+n.id+": "+n.maxX),(void 0==n.minX||e.minX-n.padLeftn.maxY)&&(n.maxY=e.maxY+n.padBottom,a=!0,r+="\nNew maxY for parent node "+n.id+": "+n.maxY),(void 0==n.minY||e.minY-n.padTops){var h=p(),g=d();(h-1)*g>=s?p(h-1):(g-1)*h>=s&&d(g-1)}else for(;s>u*c;){var h=p(),g=d();(g+1)*h>=s?d(g+1):p(h+1)}for(var v=a/u,f=o/c,y=0;y=u&&(P=0,S++)},M={},y=0;y0&&(f.rtrigger("position"),f=a.collection())},50),o.bind("drag",function(){e(this)});var x=o.filter(":grabbable"),w=i.stopSystem=function(){r(function(){n.fit&&a.fit(),a.one("layoutstop",n.stop),a.trigger("layoutstop"),i.stopSystem=null})};t(),setTimeout(function(){w()},n.maxSimulationTime)},t.prototype.stop=function(){null!=this.stopSystem&&this.stopSystem()},e("layout","springy",t)}(cytoscape),function(e){"use strict";function t(){}t.prototype.notify=function(){},e("renderer","null",t)}(cytoscape);
\ No newline at end of file
diff --git a/ajax/libs/cytoscape/package.json b/ajax/libs/cytoscape/package.json
new file mode 100644
index 000000000..963c6ae36
--- /dev/null
+++ b/ajax/libs/cytoscape/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "cytoscape.js",
+ "npmName": "cytoscape",
+ "npmFileMap": [
+ {
+ "basePath": "/dist/",
+ "files": [
+ "*"
+ ]
+ }
+ ],
+ "version": "2.2.1",
+ "filename": "cytoscape.min.js",
+ "description": "A JavaScript graph library for analysis and visualisation",
+ "homepage": "http://cytoscape.github.io/cytoscape.js",
+ "license": "LGPL",
+ "keywords": [
+ "graph",
+ "theory",
+ "visualisation",
+ "visualization",
+ "analysis"
+ ],
+ "author": "Max Franz (http://maxfranz.com/)",
+ "bugs": "https://github.com/cytoscape/cytoscape.js/issues",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/cytoscape/cytoscape.js.git"
+ }
+}
\ No newline at end of file