File: /var/dev/shahnamag/front-end/public/vivagraph.min.js
!function(e){var n;"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):("undefined"!=typeof window?n=window:"undefined"!=typeof global?n=global:"undefined"!=typeof self&&(n=self),n.Viva=e())}(function(){return function r(o,i,a){function u(t,e){if(!i[t]){if(!o[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(s)return s(t,!0);n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}n=i[t]={exports:{}};o[t][0].call(n.exports,function(e){var n=o[t][1][e];return u(n||e)},n,n.exports,r,o,i,a)}return i[t].exports}for(var s="function"==typeof require&&require,e=0;e<a.length;e++)u(a[e]);return u}({1:[function(e,n,t){var r=e("ngraph.random"),o={lazyExtend:function(){return e("ngraph.merge").apply(this,arguments)},randomIterator:function(){return r.randomIterator.apply(r,arguments)},random:function(){return r.random.apply(r,arguments)},events:e("ngraph.events")};o.Graph={version:e("./version.js"),graph:e("ngraph.graph"),serializer:function(){return{loadFromJSON:e("ngraph.fromjson"),storeToJSON:e("ngraph.tojson")}},centrality:e("./Algorithms/centrality.js"),operations:e("./Algorithms/operations.js"),geom:function(){return{intersect:e("gintersect"),intersectRect:e("./Utils/intersectRect.js")}},webgl:e("./WebGL/webgl.js"),webglInputEvents:e("./WebGL/webglInputEvents.js"),generator:function(){return e("ngraph.generators")},Input:{domInputManager:e("./Input/domInputManager.js"),webglInputManager:e("./Input/webglInputManager.js")},Utils:{dragndrop:e("./Input/dragndrop.js"),findElementPosition:e("./Utils/findElementPosition.js"),timer:e("./Utils/timer.js"),getDimension:e("./Utils/getDimensions.js"),events:e("./Utils/backwardCompatibleEvents.js")},Layout:{forceDirected:e("ngraph.forcelayout"),constant:e("./Layout/constant.js")},View:{Texture:e("./WebGL/texture.js"),webglAtlas:e("./WebGL/webglAtlas.js"),webglImageNodeProgram:e("./WebGL/webglImageNodeProgram.js"),webglLinkProgram:e("./WebGL/webglLinkProgram.js"),webglNodeProgram:e("./WebGL/webglNodeProgram.js"),webglLine:e("./WebGL/webglLine.js"),webglSquare:e("./WebGL/webglSquare.js"),webglImage:e("./WebGL/webglImage.js"),webglGraphics:e("./View/webglGraphics.js"),_webglUtil:{parseColor:e("./WebGL/parseColor.js")},svgGraphics:e("./View/svgGraphics.js"),renderer:e("./View/renderer.js"),cssGraphics:function(){throw new Error("cssGraphics is deprecated. Please use older version of vivagraph (< 0.7) if you need it")},svgNodeFactory:function(){throw new Error("svgNodeFactory is deprecated. Please use older version of vivagraph (< 0.7) if you need it")},community:function(){throw new Error("community is deprecated. Please use vivagraph < 0.7 if you need it, or `https://github.com/anvaka/ngraph.slpa` module")}},Rect:e("./Utils/rect.js"),svg:e("simplesvg"),BrowserInfo:e("./Utils/browserInfo.js")},n.exports=o},{"./Algorithms/centrality.js":36,"./Algorithms/operations.js":37,"./Input/domInputManager.js":38,"./Input/dragndrop.js":39,"./Input/webglInputManager.js":40,"./Layout/constant.js":41,"./Utils/backwardCompatibleEvents.js":42,"./Utils/browserInfo.js":43,"./Utils/findElementPosition.js":45,"./Utils/getDimensions.js":46,"./Utils/intersectRect.js":47,"./Utils/rect.js":49,"./Utils/timer.js":50,"./View/renderer.js":52,"./View/svgGraphics.js":53,"./View/webglGraphics.js":54,"./WebGL/parseColor.js":55,"./WebGL/texture.js":56,"./WebGL/webgl.js":57,"./WebGL/webglAtlas.js":58,"./WebGL/webglImage.js":59,"./WebGL/webglImageNodeProgram.js":60,"./WebGL/webglInputEvents.js":61,"./WebGL/webglLine.js":62,"./WebGL/webglLinkProgram.js":63,"./WebGL/webglNodeProgram.js":64,"./WebGL/webglSquare.js":65,"./version.js":66,gintersect:3,"ngraph.events":9,"ngraph.forcelayout":11,"ngraph.fromjson":13,"ngraph.generators":14,"ngraph.graph":16,"ngraph.merge":17,"ngraph.random":30,"ngraph.tojson":31,simplesvg:32}],2:[function(e,n,t){r.removeEventListener=function(e,n,t,r){return(o=o||(document.addEventListener?{add:i,rm:a}:{add:u,rm:s})).rm(e,n,t,r)},r.addEventListener=r,n.exports=r;var o=null;function r(e,n,t,r){return(o=o||(document.addEventListener?{add:i,rm:a}:{add:u,rm:s})).add(e,n,t,r)}function i(e,n,t,r){e.addEventListener(n,t,r)}function a(e,n,t,r){e.removeEventListener(n,t,r)}function u(e,n,t,r){if(r)throw new Error("cannot useCapture in oldIE");e.attachEvent("on"+n,t)}function s(e,n,t,r){e.detachEvent("on"+n,t)}},{}],3:[function(e,n,t){n.exports=function(e,n,t,r,o,i,a,u){var s,f,c,d,l,p,h={x:0,y:0};return l=(s=r-n)*a+(f=e-t)*u+(c=t*n-e*r),0==(d=s*o+f*i+c)||0==l||0<=d!=4<=l?(u=(l=u-i)*t+(t=o-a)*r+(o=a*i-o*u),(0==(n=l*e+t*n+o)||0==u||0<=n!=0<=u)&&0!=(p=s*t-l*f)?(t=f*o-t*c,h.x=(t<0?+t:t+0)/p,t=l*c-s*o,h.y=(t<0?+t:t+0)/p,h):null):null}},{}],4:[function(e,n,t){n.exports.degree=e("./src/degree.js"),n.exports.betweenness=e("./src/betweenness.js"),n.exports.closeness=e("./src/closeness.js"),n.exports.eccentricity=e("./src/eccentricity.js")},{"./src/betweenness.js":5,"./src/closeness.js":6,"./src/degree.js":7,"./src/eccentricity.js":8}],5:[function(e,n,t){n.exports=function(i,r){var a,o=[],u=[],s=Object.create(null),f=Object.create(null),c=Object.create(null),d=Object.create(null),l=Object.create(null);i.forEachNode(function(e){l[e.id]=0}),i.forEachNode(function(e){(function(e){for(i.forEachNode(function(e){e=e.id;s[e]=[],f[e]=-1,c[e]=0}),f[e]=0,c[e]=1,o.push(e);o.length;){var n=o.shift();u.push(n),i.forEachLinkedNode(n,t,r)}function t(e){e=e.id,-1===f[e]&&(f[e]=f[n]+1,o.push(e)),f[e]===f[n]+1&&(c[e]+=c[n],s[e].push(n))}})(a=e.id),function(){for(i.forEachNode(p);u.length;){for(var e=u.pop(),n=(1+d[e])/c[e],t=s[e],r=0;r<t.length;++r){var o=t[r];d[o]+=c[o]*n}e!==a&&(l[e]+=d[e])}}()}),r||Object.keys(l).forEach(function(e){l[e]/=2});return l;function p(e){d[e.id]=0}}},{}],6:[function(e,n,t){n.exports=function(r,o){var t,i=[],a=Object.create(null),u=Object.create(null);return r.forEachNode(function(e){u[e.id]=0}),r.forEachNode(function(e){(function(e){for(r.forEachNode(function(e){e=e.id;a[e]=-1}),a[e]=0,i.push(e);i.length;){var n=i.shift();r.forEachLinkedNode(n,t,o)}function t(e){e=e.id;-1===a[e]&&(a[e]=a[n]+1,i.push(e))}})(t=e.id),function(){var e=(n=Object.keys(a).map(function(e){return a[e]}).filter(function(e){return-1!==e})).length,n=n.reduce(function(e,n){return e+n});u[t]=0<n?(e-1)/n:0}()}),u}},{}],7:[function(e,n,t){function i(e,n){var t=0;if(!e)return t;for(var r=0;r<e.length;r+=1)t+=e[r].toId===n?1:0;return t}function a(e,n){var t=0;if(!e)return t;for(var r=0;r<e.length;r+=1)t+=e[r].fromId===n?1:0;return t}function u(e){return e?e.length:0}n.exports=function(t,e){var r,o=Object.create(null);if("both"===(e=(e||"both").toLowerCase())||"inout"===e)r=u;else if("in"===e)r=i;else{if("out"!==e)throw new Error("Expected centrality degree kind is: in, out or both");r=a}return t.forEachNode(function(e){var n=t.getLinks(e.id);o[e.id]=r(n,e.id)}),o}},{}],8:[function(e,n,t){n.exports=function(r,o){var t,i=[],a=Object.create(null),u=Object.create(null);return r.forEachNode(function(e){u[e.id]=0}),r.forEachNode(function(e){(function(e){for(r.forEachNode(function(e){e=e.id;a[e]=-1}),a[e]=0,i.push(e);i.length;){var n=i.shift();r.forEachLinkedNode(n,t,o)}function t(e){e=e.id;-1===a[e]&&(a[e]=a[n]+1,i.push(e))}})(t=e.id),function(){var n=0;Object.keys(a).forEach(function(e){e=a[e];n<e&&(n=e)}),u[t]=n}()}),u}},{}],9:[function(e,n,t){n.exports=function(e){!function(e){if(!e)throw new Error("Eventify cannot use falsy object as events subject");for(var n=["on","fire","off"],t=0;t<n.length;++t)if(e.hasOwnProperty(n[t]))throw new Error("Subject cannot be eventified, since it already has property '"+n[t]+"'")}(e);var i,a,n=(i=e,a=Object.create(null),{on:function(e,n,t){if("function"!=typeof n)throw new Error("callback is expected to be a function");return(a[e]||(a[e]=[])).push({callback:n,ctx:t}),i},off:function(e,n){if(void 0===e)return a=Object.create(null),i;if(a[e])if("function"!=typeof n)delete a[e];else for(var t=a[e],r=0;r<t.length;++r)t[r].callback===n&&t.splice(r,1);return i},fire:function(e){var n,t=a[e];if(!t)return i;1<arguments.length&&(n=Array.prototype.splice.call(arguments,1));for(var r=0;r<t.length;++r){var o=t[r];o.callback.apply(o.ctx,n)}return i}});return e.on=n.on,e.off=n.off,e.fire=n.fire,e}},{}],10:[function(e,n,t){function i(n,t,r){n.hasOwnProperty(r)&&"function"!=typeof t[r]&&(t[r]=function(e){return void 0!==e?(n[r]=e,t):n[r]})}n.exports=function(e,n,t){if("[object Array]"===Object.prototype.toString.call(t))for(var r=0;r<t.length;++r)i(e,n,t[r]);else for(var o in e)i(e,n,o)}},{}],11:[function(g,e,n){e.exports=function(a,e){if(!a)throw new Error("Graph structure cannot be undefined");var u=g("ngraph.physics.simulator")(e),t=function(e){e=a.getLinks(e);return e?1+e.length/3:1};e&&"function"==typeof e.nodeMass&&(t=e.nodeMass);var s=Object.create(null),f={},c=0,r=u.settings.springTransform||m;c=0,a.forEachNode(function(e){d(e.id),c+=1}),a.forEachLink(l),a.on("changed",n);var o=!1,i={step:function(){if(0===c)return!0;var e=u.step();i.lastMove=e,i.fire("step");var n=e/c<=.01;return o!==n&&(e=o=n,i.fire("stable",e)),n},getNodePosition:function(e){return h(e).pos},setNodePosition:function(e){var n=h(e);n.setPosition.apply(n,Array.prototype.slice.call(arguments,1)),u.invalidateBBox()},getLinkPosition:function(e){e=f[e];if(e)return{from:e.from.pos,to:e.to.pos}},getGraphRect:function(){return u.getBBox()},forEachBody:function(n){Object.keys(s).forEach(function(e){n(s[e],e)})},pinNode:function(e,n){h(e.id).isPinned=!!n},isNodePinned:function(e){return h(e.id).isPinned},dispose:function(){a.off("changed",n),i.fire("disposed")},getBody:function(e){return s[e]},getSpring:function(e,n){var t;if(void 0===n)t="object"!=typeof e?e:e.id;else{n=a.hasLink(e,n);if(!n)return;t=n.id}return f[t]},simulator:u,graph:a,lastMove:0};return v(i),i;function n(e){for(var n,t,r,o=0;o<e.length;++o){var i=e[o];"add"===i.changeType?(i.node&&d(i.node.id),i.link&&l(i.link)):"remove"===i.changeType&&(i.node&&(t=i.node,r=void 0,r=t.id,(t=s[r])&&(s[r]=null,delete s[r],u.removeBody(t))),i.link&&(n=i.link,i=t=r=void 0,(i=f[n.id])&&(r=a.getNode(n.fromId),t=a.getNode(n.toId),r&&p(r.id),t&&p(t.id),delete f[n.id],u.removeSpring(i))))}c=a.getNodesCount()}function d(e){var n=s[e];if(!n){var t=a.getNode(e);if(!t)throw new Error("initBody() was called with unknown node id");var r,o=t.position;o||(r=function(e){var n=[];if(!e.links)return n;for(var t=Math.min(e.links.length,2),r=0;r<t;++r){var o=e.links[r],o=o.fromId!==e.id?s[o.fromId]:s[o.toId];o&&o.pos&&n.push(o)}return n}(t),o=u.getBestNewBodyPosition(r)),(n=u.addBodyAt(o)).id=e,s[e]=n,p(e),(t=t)&&(t.isPinned||t.data&&t.data.isPinned)&&(n.isPinned=!0)}}function l(e){p(e.fromId),p(e.toId);var n=s[e.fromId],t=s[e.toId],t=u.addSpring(n,t,e.length);r(e,t),f[e.id]=t}function p(e){var n=s[e];if(n.mass=t(e),Number.isNaN(n.mass))throw new Error("Node mass should be a number")}function h(e){var n=s[e];return n||(d(e),n=s[e]),n}},e.exports.simulator=g("ngraph.physics.simulator");var v=g("ngraph.events");function m(){}},{"ngraph.events":12,"ngraph.physics.simulator":19}],12:[function(e,n,t){arguments[4][9][0].apply(t,arguments)},{dup:9}],13:[function(e,n,t){n.exports=function(e,n,t){var r;n=n||f,t=t||f,r="string"==typeof e?JSON.parse(e):e;var o,i=s();if(void 0===r.links||void 0===r.nodes)throw new Error("Cannot load graph without links and nodes");for(o=0;o<r.nodes.length;++o){var a=n(r.nodes[o]);if(!a.hasOwnProperty("id"))throw new Error("Graph node format is invalid: Node id is missing");i.addNode(a.id,a.data)}for(o=0;o<r.links.length;++o){var u=t(r.links[o]);if(!u.hasOwnProperty("fromId")||!u.hasOwnProperty("toId"))throw new Error("Graph link format is invalid. Both fromId and toId are required");i.addLink(u.fromId,u.toId,u.data)}return i};var s=e("ngraph.graph");function f(e){return e}},{"ngraph.graph":16}],14:[function(g,e,n){var t=g("ngraph.graph");function r(h){return{ladder:t,complete:function(e){if(!e||e<1)throw new Error("At least two nodes are expected for complete graph");var n,t,r=h();for(n=0;n<e;++n)for(t=n+1;t<e;++t)n!==t&&r.addLink(n,t);return r},completeBipartite:function(e,n){if(!e||!n||e<0||n<0)throw new Error("Graph dimensions are invalid. Number of nodes in each partition should be greater than 0");var t,r,o=h();for(t=0;t<e;++t)for(r=e;r<e+n;++r)o.addLink(t,r);return o},balancedBinTree:function(e){if(e<0)throw new Error("Invalid number of nodes in balanced tree");var n,t=h(),r=Math.pow(2,e);0===e&&t.addNode(1);for(n=1;n<r;++n){var o=n,i=2*o,a=2*o+1;t.addLink(o,i),t.addLink(o,a)}return t},path:function(e){if(!e||e<0)throw new Error("Invalid number of nodes");var n,t=h();for(t.addNode(0),n=1;n<e;++n)t.addLink(n-1,n);return t},circularLadder:function(e){if(!e||e<0)throw new Error("Invalid number of nodes");var n=t(e);return n.addLink(0,e-1),n.addLink(e,2*e-1),n},grid:function(e,n){if(e<1||n<1)throw new Error("Invalid number of nodes in grid graph");var t,r,o=h();if(1===e&&1===n)return o.addNode(0),o;for(t=0;t<e;++t)for(r=0;r<n;++r){var i=t+r*e;0<t&&o.addLink(i,t-1+r*e),0<r&&o.addLink(i,t+(r-1)*e)}return o},grid3:function(e,n,t){if(e<1||n<1||t<1)throw new Error("Invalid number of nodes in grid3 graph");var r,o,i,a=h();if(1===e&&1===n&&1===t)return a.addNode(0),a;for(i=0;i<t;++i)for(r=0;r<e;++r)for(o=0;o<n;++o){var u=i*e*n,s=r+o*e+u;0<r&&a.addLink(s,r-1+o*e+u),0<o&&a.addLink(s,r+(o-1)*e+u),0<i&&a.addLink(s,r+o*e+(i-1)*e*n)}return a},noLinks:function(e){if(e<0)throw new Error("Number of nodes should be >= 0");var n,t=h();for(n=0;n<e;++n)t.addNode(n);return t},wattsStrogatz:function(e,n,t,r){if(e<=n)throw new Error("Choose smaller `k`. It cannot be larger than number of nodes `n`");var o,i,a=g("ngraph.random").random(r||42),u=h();for(o=0;o<e;++o)u.addNode(o);for(var s=Math.floor(n/2+1),f=1;f<s;++f)for(o=0;o<e;++o)i=(f+o)%e,u.addLink(o,i);for(f=1;f<s;++f)for(o=0;o<e;++o)if(a.nextDouble()<t){var c=o;i=(f+o)%e;var d=a.next(e),l=d===c||u.hasLink(c,d);if(!l||u.getLinks(c).length!==e-1){for(;l;)d=a.next(e),l=d===c||u.hasLink(c,d);var p=u.hasLink(c,i);u.removeLink(p),u.addLink(c,d)}}return u},cliqueCircle:function(e,n){if(e<1)throw new Error("Invalid number of cliqueCount in cliqueCircle");if(n<1)throw new Error("Invalid number of cliqueSize in cliqueCircle");for(var o=h(),t=0;t<e;++t)!function(e,n){for(var t=0;t<e;++t)o.addNode(t+n);for(t=0;t<e;++t)for(var r=t+1;r<e;++r)o.addLink(t+n,r+n)}(n,t*n),0<t&&o.addLink(t*n,t*n-1);return o.addLink(0,o.getNodesCount()-1),o}};function t(e){if(!e||e<0)throw new Error("Invalid number of nodes");for(var n=h(),t=0;t<e-1;++t)n.addLink(t,t+1),n.addLink(e+t,e+t+1),n.addLink(t,e+t);return n.addLink(e-1,2*e-1),n}}e.exports=r(t),e.exports.factory=r},{"ngraph.graph":16,"ngraph.random":15}],15:[function(e,n,t){function r(e){return new o("number"==typeof e?e:+new Date)}function o(e){this.seed=e}function i(){var e=this.seed;return e=4294967295&(3042594569^(e=4251993797+(e=4294967295&(3550635116+(e=374761393+(e=4294967295&(3345072700^(e=e+2127912214+(e<<12)&4294967295)^e>>>19))+(e<<5)&4294967295)^e<<9))+(e<<3)&4294967295)^e>>>16),(268435455&(this.seed=e))/268435456}n.exports=r,n.exports.random=r,n.exports.randomIterator=function(o,e){var i=e||r();if("function"==typeof i.next)return{forEach:function(e){var n,t,r;for(n=o.length-1;0<n;--n)t=i.next(n+1),r=o[t],o[t]=o[n],o[n]=r,e(r);o.length&&e(o[0])},shuffle:function(){var e,n,t;for(e=o.length-1;0<e;--e)n=i.next(e+1),t=o[n],o[n]=o[e],o[e]=t;return o}};throw new Error("customRandom does not match expected API: next() function is missing")},o.prototype.next=function(e){return Math.floor(this.nextDouble()*e)},o.prototype.nextDouble=i,o.prototype.uniform=i,o.prototype.gaussian=function(){var e,n,t;for(;n=2*this.nextDouble()-1,t=2*this.nextDouble()-1,e=n*n+t*t,1<=e||0===e;);return n*Math.sqrt(-2*Math.log(e)/e)}},{}],16:[function(e,n,t){n.exports=function(e){"uniqueLinkId"in(e=e||{})&&(console.warn("ngraph.graph: Starting from version 0.14 `uniqueLinkId` is deprecated.\nUse `multigraph` option instead\n","\n","Note: there is also change in default behavior: From now own each graph\nis considered to be not a multigraph by default (each edge is unique)."),e.multigraph=e.uniqueLinkId);void 0===e.multigraph&&(e.multigraph=!1);var a="function"==typeof Object.create?Object.create(null):{},i=[],u={},o=0,n=0,t=Object.keys?N:P,s=e.multigraph?function(e,n,t){var r=T(e,n),o=u.hasOwnProperty(r);(o||w(e,n))&&(o||(u[r]=0),o="@"+ ++u[r],r=T(e+o,n+o));return new I(e,n,t,r)}:function(e,n,t){var r=T(e,n);return new I(e,n,t,r)},r=[],f=b,c=b,d=b,l=b,p={addNode:v,addLink:function(e,n,t){d();var r=m(e)||v(e),o=m(n)||v(n),t=s(e,n,t);i.push(t),_(r,t),e!==n&&_(o,t);return f(t,"add"),l(),t},removeLink:x,removeNode:y,getNode:m,getNodesCount:function(){return o},getLinksCount:function(){return i.length},getLinks:function(e){e=m(e);return e?e.links:null},forEachNode:t,forEachLinkedNode:function(e,n,t){var r=m(e);if(r&&r.links&&"function"==typeof n)return(t?function(e,n,t){for(var r=0;r<e.length;++r){var o=e[r];if(o.fromId===n&&t(a[o.toId],o))return!0}}:function(e,n,t){for(var r=0;r<e.length;++r){var o=e[r],i=o.fromId===n?o.toId:o.fromId;if(t(a[i],o))return!0}})(r.links,e,n)},forEachLink:function(e){var n,t;if("function"==typeof e)for(n=0,t=i.length;n<t;++n)e(i[n])},beginUpdate:d,endUpdate:l,clear:function(){d(),t(function(e){y(e.id)}),l()},hasLink:w,hasNode:m,getLink:w};return j(p),function(){var e=p.on;p.on=function(){return p.beginUpdate=d=E,p.endUpdate=l=L,f=h,c=g,(p.on=e).apply(p,arguments)}}(),p;function h(e,n){r.push({link:e,changeType:n})}function g(e,n){r.push({node:e,changeType:n})}function v(e,n){if(void 0===e)throw new Error("Invalid node identifier");d();var t=m(e);return t?(t.data=n,c(t,"update")):(t=new A(e,n),o++,c(t,"add")),a[e]=t,l(),t}function m(e){return a[e]}function y(e){var n=m(e);if(!n)return!1;d();var t=n.links;if(t){n.links=null;for(var r=0;r<t.length;++r)x(t[r])}return delete a[e],o--,c(n,"remove"),l(),!0}function x(e){if(!e)return!1;var n=k(e,i);if(n<0)return!1;d(),i.splice(n,1);var t=m(e.fromId),r=m(e.toId);return t&&0<=(n=k(e,t.links))&&t.links.splice(n,1),r&&0<=(n=k(e,r.links))&&r.links.splice(n,1),f(e,"remove"),l(),!0}function w(e,n){var t,r=m(e);if(!r||!r.links)return null;for(t=0;t<r.links.length;++t){var o=r.links[t];if(o.fromId===e&&o.toId===n)return o}return null}function b(){}function E(){n+=1}function L(){0===--n&&0<r.length&&(p.fire("changed",r),r.length=0)}function N(e){if("function"==typeof e)for(var n=Object.keys(a),t=0;t<n.length;++t)if(e(a[n[t]]))return!0}function P(e){if("function"==typeof e)for(var n in a)if(e(a[n]))return!0}};var j=e("ngraph.events");function k(e,n){if(!n)return-1;if(n.indexOf)return n.indexOf(e);for(var t=n.length,r=0;r<t;r+=1)if(n[r]===e)return r;return-1}function A(e,n){this.id=e,this.links=null,this.data=n}function _(e,n){e.links?e.links.push(n):e.links=[n]}function I(e,n,t,r){this.fromId=e,this.toId=n,this.data=t,this.id=r}function T(e,n){return e.toString()+"👉 "+n.toString()}},{"ngraph.events":9}],17:[function(e,n,t){n.exports=function e(n,t){n=n||{};if(t)for(var r in t){var o,i;t.hasOwnProperty(r)&&(o=n.hasOwnProperty(r),i=typeof t[r],!o||typeof n[r]!=i?n[r]=t[r]:"object"==i&&(n[r]=e(n[r],t[r])))}return n}},{}],18:[function(e,n,t){function r(e,n){this.pos=new o(e,n),this.prevPos=new o(e,n),this.force=new o,this.velocity=new o,this.mass=1}function o(e,n){e&&"number"!=typeof e?(this.x="number"==typeof e.x?e.x:0,this.y="number"==typeof e.y?e.y:0):(this.x="number"==typeof e?e:0,this.y="number"==typeof n?n:0)}function i(e,n,t){this.pos=new a(e,n,t),this.prevPos=new a(e,n,t),this.force=new a,this.velocity=new a,this.mass=1}function a(e,n,t){e&&"number"!=typeof e?(this.x="number"==typeof e.x?e.x:0,this.y="number"==typeof e.y?e.y:0,this.z="number"==typeof e.z?e.z:0):(this.x="number"==typeof e?e:0,this.y="number"==typeof n?n:0,this.z="number"==typeof t?t:0)}n.exports={Body:r,Vector2d:o,Body3d:i,Vector3d:a},r.prototype.setPosition=function(e,n){this.prevPos.x=this.pos.x=e,this.prevPos.y=this.pos.y=n},o.prototype.reset=function(){this.x=this.y=0},i.prototype.setPosition=function(e,n,t){this.prevPos.x=this.pos.x=e,this.prevPos.y=this.pos.y=n,this.prevPos.z=this.pos.z=t},a.prototype.reset=function(){this.x=this.y=this.z=0}},{}],19:[function(m,e,n){e.exports=function(n){var i=m("./lib/spring"),e=m("ngraph.expose"),t=m("ngraph.merge"),r=m("ngraph.events"),o=(n=t(n,{springLength:30,springCoeff:8e-4,gravity:-1.2,theta:.8,dragCoeff:.02,timeStep:20})).createQuadTree||m("ngraph.quadtreebh"),a=n.createBounds||m("./lib/bounds"),u=n.createDragForce||m("./lib/dragForce"),t=n.createSpringForce||m("./lib/springForce"),s=n.integrator||m("./lib/eulerIntegrator"),f=n.createBody||m("./lib/createBody"),c=[],d=[],l=o(n),p=a(c,n),h=t(n),g=u(n),v=!0,u={bodies:c,quadTree:l,springs:d,settings:n,step:function(){!function(){var e,n=c.length;if(n)for(l.insertBodies(c);n--;)(e=c[n]).isPinned||(e.force.reset(),l.updateBodyForce(e),g.update(e));for(n=d.length;n--;)h.update(d[n])}();var e=s(c,n.timeStep);return p.update(),e},addBody:function(e){if(!e)throw new Error("Body is required");return c.push(e),e},addBodyAt:function(e){if(!e)throw new Error("Body position is required");e=f(e);return c.push(e),e},removeBody:function(e){if(e){e=c.indexOf(e);if(!(e<0))return c.splice(e,1),0===c.length&&p.reset(),!0}},addSpring:function(e,n,t,r,o){if(!e||!n)throw new Error("Cannot add null spring to force simulator");r=new i(e,n,t="number"!=typeof t?-1:t,0<=o?o:-1,r);return d.push(r),r},getTotalMovement:function(){return 0},removeSpring:function(e){if(e){e=d.indexOf(e);return-1<e?(d.splice(e,1),!0):void 0}},getBestNewBodyPosition:function(e){return p.getBestNewPosition(e)},getBBox:function(){return v&&(p.update(),v=!1),p.box},invalidateBBox:function(){v=!0},gravity:function(e){return void 0!==e?(n.gravity=e,l.options({gravity:e}),this):n.gravity},theta:function(e){return void 0!==e?(n.theta=e,l.options({theta:e}),this):n.theta}};return e(n,u),r(u),u}},{"./lib/bounds":20,"./lib/createBody":21,"./lib/dragForce":22,"./lib/eulerIntegrator":23,"./lib/spring":24,"./lib/springForce":25,"ngraph.events":9,"ngraph.expose":10,"ngraph.merge":17,"ngraph.quadtreebh":26}],20:[function(e,n,t){n.exports=function(a,i){var u=e("ngraph.random").random(42),s={x1:0,y1:0,x2:0,y2:0};return{box:s,update:function(){var e=a.length;if(0===e)return;var n=Number.MAX_VALUE,t=Number.MAX_VALUE,r=Number.MIN_VALUE,o=Number.MIN_VALUE;for(;e--;){var i=a[e];i.isPinned?(i.pos.x=i.prevPos.x,i.pos.y=i.prevPos.y):(i.prevPos.x=i.pos.x,i.prevPos.y=i.pos.y),i.pos.x<n&&(n=i.pos.x),i.pos.x>r&&(r=i.pos.x),i.pos.y<t&&(t=i.pos.y),i.pos.y>o&&(o=i.pos.y)}s.x1=n,s.x2=r,s.y1=t,s.y2=o},reset:function(){s.x1=s.y1=0,s.x2=s.y2=0},getBestNewPosition:function(e){var n=s,t=0,r=0;if(e.length){for(var o=0;o<e.length;++o)t+=e[o].pos.x,r+=e[o].pos.y;t/=e.length,r/=e.length}else t=(n.x1+n.x2)/2,r=(n.y1+n.y2)/2;n=i.springLength;return{x:t+u.next(n)-n/2,y:r+u.next(n)-n/2}}}}},{"ngraph.random":30}],21:[function(e,n,t){var r=e("ngraph.physics.primitives");n.exports=function(e){return new r.Body(e)}},{"ngraph.physics.primitives":18}],22:[function(r,e,n){e.exports=function(n){var e=r("ngraph.merge"),t={update:function(e){e.force.x-=n.dragCoeff*e.velocity.x,e.force.y-=n.dragCoeff*e.velocity.y}};return r("ngraph.expose")(n=e(n,{dragCoeff:.02}),t,["dragCoeff"]),t}},{"ngraph.expose":10,"ngraph.merge":17}],23:[function(e,n,t){n.exports=function(e,n){var t,r=0,o=0,i=0,a=0,u=e.length;if(0===u)return 0;for(t=0;t<u;++t){var s=e[t],f=n/s.mass;s.velocity.x+=f*s.force.x,s.velocity.y+=f*s.force.y;var c=s.velocity.x,d=s.velocity.y,f=Math.sqrt(c*c+d*d);1<f&&(s.velocity.x=c/f,s.velocity.y=d/f),r=n*s.velocity.x,i=n*s.velocity.y,s.pos.x+=r,s.pos.y+=i,o+=Math.abs(r),a+=Math.abs(i)}return(o*o+a*a)/u}},{}],24:[function(e,n,t){n.exports=function(e,n,t,r,o){this.from=e,this.to=n,this.length=t,this.coeff=r,this.weight="number"==typeof o?o:1}},{}],25:[function(t,e,n){e.exports=function(u){var e=t("ngraph.merge"),s=t("ngraph.random").random(42),n={update:function(e){var n=e.from,t=e.to,r=e.length<0?u.springLength:e.length,o=t.pos.x-n.pos.x,i=t.pos.y-n.pos.y,a=Math.sqrt(o*o+i*i);0===a&&(o=(s.nextDouble()-.5)/50,i=(s.nextDouble()-.5)/50,a=Math.sqrt(o*o+i*i));r=a-r,e=(!e.coeff||e.coeff<0?u.springCoeff:e.coeff)*r/a*e.weight;n.force.x+=e*o,n.force.y+=e*i,t.force.x-=e*o,t.force.y-=e*i}};return t("ngraph.expose")(u=e(u,{springCoeff:2e-4,springLength:80}),n,["springCoeff","springLength"]),n}},{"ngraph.expose":10,"ngraph.merge":17,"ngraph.random":30}],26:[function(o,e,n){e.exports=function(e){(e=e||{}).gravity="number"==typeof e.gravity?e.gravity:-1,e.theta="number"==typeof e.theta?e.theta:.8;var h=o("ngraph.random").random(1984),n=o("./node"),t=o("./insertStack"),g=o("./isSamePosition"),v=e.gravity,m=[],y=new t,x=e.theta,r=[],d=0,w=b();return{insertBodies:function(e){var n,t=Number.MAX_VALUE,r=Number.MAX_VALUE,o=Number.MIN_VALUE,i=Number.MIN_VALUE,a=e.length;n=a;for(;n--;){var u=e[n].pos.x,s=e[n].pos.y;u<t&&(t=u),o<u&&(o=u),s<r&&(r=s),i<s&&(i=s)}var f=o-t,c=i-r;c<f?i=r+f:o=t+c;d=0,(w=b()).left=t,w.right=o,w.top=r,w.bottom=i,0<=(n=a-1)&&(w.body=e[n]);for(;n--;)!function(e){for(y.reset(),y.push(w,e);!y.isEmpty();){var n=y.pop(),t=n.node,r=n.body;if(t.body){var o=t.body;if(t.body=null,g(o.pos,r.pos)){var i=3;do{var a=h.nextDouble(),u=(t.right-t.left)*a,a=(t.bottom-t.top)*a}while(o.pos.x=t.left+u,o.pos.y=t.top+a,0<--i&&g(o.pos,r.pos));if(0===i&&g(o.pos,r.pos))return}y.push(t,o),y.push(t,r)}else{var s=r.pos.x,f=r.pos.y;t.mass=t.mass+r.mass,t.massX=t.massX+r.mass*s,t.massY=t.massY+r.mass*f;var c=0,d=t.left,l=(t.right+d)/2,p=t.top,n=(t.bottom+p)/2;l<s&&(c+=1,d=l,l=t.right),n<f&&(c+=2,p=n,n=t.bottom);f=function(e,n){return 0===n?e.quad0:1===n?e.quad1:2===n?e.quad2:3===n?e.quad3:null}(t,c);f?y.push(f,r):((f=b()).left=d,f.top=p,f.right=l,f.bottom=n,f.body=r,function(e,n,t){0===n?e.quad0=t:1===n?e.quad1=t:2===n?e.quad2=t:3===n&&(e.quad3=t)}(t,c,f))}}}(e[n])},getRoot:function(){return w},updateBodyForce:function(e){var n,t,r,o,i=m,a=0,u=0,s=1,f=0,c=1;i[0]=w;for(;s;){var d=i[f],l=d.body;--s,f+=1;var p=l!==e;l&&p?(t=l.pos.x-e.pos.x,r=l.pos.y-e.pos.y,0===(o=Math.sqrt(t*t+r*r))&&(t=(h.nextDouble()-.5)/50,r=(h.nextDouble()-.5)/50,o=Math.sqrt(t*t+r*r)),n=v*l.mass*e.mass/(o*o*o),a+=n*t,u+=n*r):p&&(t=d.massX/d.mass-e.pos.x,r=d.massY/d.mass-e.pos.y,0===(o=Math.sqrt(t*t+r*r))&&(t=(h.nextDouble()-.5)/50,r=(h.nextDouble()-.5)/50,o=Math.sqrt(t*t+r*r)),(d.right-d.left)/o<x?(n=v*d.mass*e.mass/(o*o*o),a+=n*t,u+=n*r):(d.quad0&&(i[c]=d.quad0,s+=1,c+=1),d.quad1&&(i[c]=d.quad1,s+=1,c+=1),d.quad2&&(i[c]=d.quad2,s+=1,c+=1),d.quad3&&(i[c]=d.quad3,s+=1,c+=1)))}e.force.x+=a,e.force.y+=u},options:function(e){return e?("number"==typeof e.gravity&&(v=e.gravity),"number"==typeof e.theta&&(x=e.theta),this):{gravity:v,theta:x}}};function b(){var e=r[d];return e?(e.quad0=null,e.quad1=null,e.quad2=null,e.quad3=null,e.body=null,e.mass=e.massX=e.massY=0,e.left=e.right=e.top=e.bottom=0):(e=new n,r[d]=e),++d,e}}},{"./insertStack":27,"./isSamePosition":28,"./node":29,"ngraph.random":30}],27:[function(e,n,t){function r(){this.stack=[],this.popIdx=0}function o(e,n){this.node=e,this.body=n}(n.exports=r).prototype={isEmpty:function(){return 0===this.popIdx},push:function(e,n){var t=this.stack[this.popIdx];t?(t.node=e,t.body=n):this.stack[this.popIdx]=new o(e,n),++this.popIdx},pop:function(){if(0<this.popIdx)return this.stack[--this.popIdx]},reset:function(){this.popIdx=0}}},{}],28:[function(e,n,t){n.exports=function(e,n){var t=Math.abs(e.x-n.x),n=Math.abs(e.y-n.y);return t<1e-8&&n<1e-8}},{}],29:[function(e,n,t){n.exports=function(){this.body=null,this.quad0=null,this.quad1=null,this.quad2=null,this.quad3=null,this.mass=0,this.massX=0,this.massY=0,this.left=0,this.top=0,this.bottom=0,this.right=0}},{}],30:[function(e,n,t){function r(e){function n(){return(268435455&(t=4294967295&(3042594569^(t=(t=4294967295&((t=(t=4294967295&(3345072700^(t=t+2127912214+(t<<12)&4294967295)^t>>>19))+374761393+(t<<5)&4294967295)+3550635116^t<<9))+4251993797+(t<<3)&4294967295)^t>>>16)))/268435456}var t="number"==typeof e?e:+new Date;return{next:function(e){return Math.floor(n()*e)},nextDouble:n}}n.exports={random:r,randomIterator:function(o,e){var i=e||r();if("function"==typeof i.next)return{forEach:function(e){for(var n,t,r=o.length-1;0<r;--r)n=i.next(r+1),t=o[n],o[n]=o[r],e(o[r]=t);o.length&&e(o[0])},shuffle:function(){for(var e,n,t=o.length-1;0<t;--t)e=i.next(t+1),n=o[e],o[e]=o[t],o[t]=n;return o}};throw new Error("customRandom does not match expected API: next() function is missing")}}},{}],31:[function(e,n,t){n.exports=function(e,n,t){var r={nodes:[],links:[]},o=n||function(e){var n={id:e.id};void 0!==e.data&&(n.data=e.data);return n},i=t||function(e){var n={fromId:e.fromId,toId:e.toId};void 0!==e.data&&(n.data=e.data);return n};return e.forEachNode(function(e){r.nodes.push(o(e))}),e.forEachLink(function(e){r.links.push(i(e))}),JSON.stringify(r)}},{}],32:[function(e,n,t){(n.exports=d).compile=e("./lib/compile");var u=d.compileTemplate=e("./lib/compile_template"),s=e("add-event-listener"),f="http://www.w3.org/2000/svg",c="http://www.w3.org/1999/xlink";function d(e,n){var t=function(e){var n,r=e;if("string"==typeof e)r=window.document.createElementNS(f,e);else if(e.simplesvg)return e;return r.simplesvg=!0,r.attr=function(e,n){if(2!==arguments.length)return r.getAttributeNS(null,e);null!==n?r.setAttributeNS(null,e,n):r.removeAttributeNS(null,e);return r},r.append=function(e){e=d(e);return r.appendChild(e),e},r.link=function(e){if(arguments.length)return r.setAttributeNS(c,"xlink:href",e),r;return r.getAttributeNS(c,"xlink:href")},r.text=function(e){return void 0===e?r.textContent:(r.textContent=e,r)},r.on=function(e,n,t){return s.addEventListener(r,e,n,t),r},r.off=function(e,n,t){return s.removeEventListener(r,e,n,t),r},r.dataSource=function(e){n=n||u(r);return n.link(e),r},r}(e);if(void 0===n)return t;for(var r=Object.keys(n),o=0;o<r.length;++o){var i=r[o],a=n[i];"link"===i?t.link(a):t.attr(i,a)}return t}},{"./lib/compile":33,"./lib/compile_template":34,"add-event-listener":2}],33:[function(e,n,t){var r=e("./domparser.js"),o=e("../");n.exports=function(e){try{return e=function(e){if(!e)return;var n=e.match(/^<\w+/);{if(n){n=n[0].length;return e.substr(0,n)+' xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" '+e.substr(n)}throw new Error("Cannot parse input text: invalid xml?")}}(e),o(r.parseFromString(e,"text/xml").documentElement)}catch(e){throw e}}},{"../":32,"./domparser.js":35}],34:[function(e,n,t){n.exports=function(e){var r=Object.create(null);return function e(n,t){var r=n.nodeType;var o=1===r||3===r;if(!o)return;var i;if(n.hasChildNodes()){var a=n.childNodes;for(i=0;i<a.length;++i)e(a[i],t)}3===r&&f(n,t);if(!n.attributes)return;var u=n.attributes;for(i=0;i<u.length;++i)s(u[i],n,t)}(e,r),{link:function(n){function t(e){e(n)}Object.keys(r).forEach(function(e){r[e].forEach(t)})}}};var u=/{{(.+?)}}/;function s(e,n,t){var r=e.value;if(r){r=r.match(u);if(r){var o=e.localName,i=r[1];if(!(i.indexOf(".")<0))throw new Error("simplesvg currently does not support nested bindings");r=t[i];r?r.push(a):r=t[i]=[a]}}function a(e){n.setAttributeNS(null,o,e[i])}}function f(n,e){var t,r=n.nodeValue;function o(e){n.nodeValue=e[t]}!r||(r=r.match(u))&&((t=r[1]).indexOf("."),(r=e[t])?r.push(o):r=e[t]=[o])}},{}],35:[function(e,n,t){function r(){throw new Error("DOMParser is not supported by this platform. Please open issue here https://github.com/anvaka/simplesvg")}n.exports="undefined"!=typeof DOMParser?new DOMParser:{parseFromString:r}},{}],36:[function(e,n,t){var r=e("ngraph.centrality");function o(e){return a(r.betweenness(e))}function i(e,n){return a(r.degree(e,n))}function a(t){return Object.keys(t).sort(function(e,n){return t[n]-t[e]}).map(function(e){return{key:e,value:t[e]}})}n.exports=function(){return{betweennessCentrality:o,degreeCentrality:i}}},{"ngraph.centrality":4}],37:[function(e,n,t){n.exports=function(){return{density:function(e,n){var t=e.getNodesCount();return 0===t?NaN:n?e.getLinksCount()/(t*(t-1)):2*e.getLinksCount()/(t*(t-1))}}}},{}],38:[function(e,n,t){n.exports=function(e,r){var o={};return{bindDragNDrop:function(e,n){{var t;n?(t=r.getNodeUI(e.id),t=i(t),"function"==typeof n.onStart&&t.onStart(n.onStart),"function"==typeof n.onDrag&&t.onDrag(n.onDrag),"function"==typeof n.onStop&&t.onStop(n.onStop),o[e.id]=t):(t=o[e.id])&&(t.release(),delete o[e.id])}}}};var i=e("./dragndrop.js")},{"./dragndrop.js":39}],39:[function(e,n,t){n.exports=function(i){function r(e,n,t){p&&p(e,{x:n-x,y:t-w}),x=n,w=t}function o(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function a(e){e.preventDefault&&e.preventDefault()}function n(e){return o(e),!1}function t(e){e=e||window.event,r(e,e.clientX,e.clientY)}function e(e){return e=e||window.event,b?(o(e),!1):1===e.button&&null!==window.event||0===e.button?(x=e.clientX,w=e.clientY,y=e.target||e.srcElement,l&&l(e,{x:x,y:w}),P.on("mousemove",t),P.on("mouseup",L),o(e),v=window.document.onselectstart,m=window.document.ondragstart,window.document.onselectstart=n,y.ondragstart=n,!1):void 0}function u(e){var n,t,r,o;"function"==typeof g&&((e=e||window.event).preventDefault&&e.preventDefault(),e.returnValue=!1,n=-e.deltaY,o=r=0,(t=(t=e)||window.event).pageX||t.pageY?(r=t.pageX,o=t.pageY):(t.clientX||t.clientY)&&(r=t.clientX+window.document.body.scrollLeft+window.document.documentElement.scrollLeft,o=t.clientY+window.document.body.scrollTop+window.document.documentElement.scrollTop),r=[r,o],o=j(i),o={x:r[0]-o[0],y:r[1]-o[1]},g(e,n,o))}function s(e){!g&&e?i.addEventListener("wheel",u,!1):g&&!e&&i.removeEventListener("wheel",u,!1),g=e}function f(e,n){return(e.clientX-n.clientX)*(e.clientX-n.clientX)+(e.clientY-n.clientY)*(e.clientY-n.clientY)}function c(e){var n,t;1===e.touches.length?(o(e),n=e.touches[0],r(e,n.clientX,n.clientY)):2===e.touches.length&&(t=0,(n=f(e.touches[0],e.touches[1]))<E?t=-1:E<n&&(t=1),g(e,t,{x:e.touches[0].clientX,y:e.touches[0].clientY}),E=n,o(e),a(e))}function d(e){if(1===e.touches.length)return t=(n=e).touches[0],o(n),a(n),x=t.clientX,w=t.clientY,y=n.target||n.srcElement,l&&l(n,{x:x,y:w}),void(b||(b=!0,P.on("touchmove",c),P.on("touchend",N),P.on("touchcancel",N)));var n,t;2===e.touches.length&&(o(e),a(e),E=f(e.touches[0],e.touches[1]))}var l,p,h,g,v,m,y,x=0,w=0,b=!1,E=0,L=function(e){e=e||window.event,P.off("mousemove",t),P.off("mouseup",L),window.document.onselectstart=v,y.ondragstart=m,y=null,h&&h(e)},N=function(e){b=!1,P.off("touchmove",c),P.off("touchend",N),P.off("touchcancel",N),y=null,h&&h(e)};return i.addEventListener("mousedown",e),i.addEventListener("touchstart",d),{onStart:function(e){return l=e,this},onDrag:function(e){return p=e,this},onStop:function(e){return h=e,this},onScroll:function(e){return s(e),this},release:function(){i.removeEventListener("mousedown",e),i.removeEventListener("touchstart",d),P.off("mousemove",t),P.off("mouseup",L),P.off("touchmove",c),P.off("touchend",N),P.off("touchcancel",N),s(null)}}};var P=e("../Utils/documentEvents.js"),j=(e("../Utils/browserInfo.js"),e("../Utils/findElementPosition.js"))},{"../Utils/browserInfo.js":43,"../Utils/documentEvents.js":44,"../Utils/findElementPosition.js":45}],40:[function(e,n,t){n.exports=function(e,n){var t=a(n),r=null,o={},i={x:0,y:0};return t.mouseDown(function(e,n){r=e,i.x=n.clientX,i.y=n.clientY,t.mouseCapture(r);e=o[e.id];return e&&e.onStart&&e.onStart(n,i),!0}).mouseUp(function(e){t.releaseMouseCapture(r),r=null;e=o[e.id];return e&&e.onStop&&e.onStop(),!0}).mouseMove(function(e,n){if(r){var t=o[r.id];return t&&t.onDrag&&t.onDrag(n,{x:n.clientX-i.x,y:n.clientY-i.y}),i.x=n.clientX,i.y=n.clientY,!0}}),{bindDragNDrop:function(e,n){(o[e.id]=n)||delete o[e.id]}}};var a=e("../WebGL/webglInputEvents.js")},{"../WebGL/webglInputEvents.js":61}],41:[function(e,n,t){n.exports=function(e,n){n=l(n,{maxX:1024,maxY:1024,seed:"Deterministic randomness made me do this"});function r(e){var n;c[e.id]=f(e),n=c[e.id],e=u,n.x<e.x1&&(e.x1=n.x),n.x>e.x2&&(e.x2=n.x),n.y<e.y1&&(e.y1=n.y),n.y>e.y2&&(e.y2=n.y)}function t(){0!==e.getNodesCount()&&(u.x1=Number.MAX_VALUE,u.y1=Number.MAX_VALUE,u.x2=Number.MIN_VALUE,u.y2=Number.MIN_VALUE,e.forEachNode(r))}function o(e){s[e.id]=e}function i(e){for(var n=0;n<e.length;++n){var t=e[n];t.node&&("add"===t.changeType?r(t.node):delete c[t.node.id]),t.link&&("add"===t.changeType?o(t.link):delete s[t.link.id])}}var a=p(n.seed),u=new h(Number.MAX_VALUE,Number.MAX_VALUE,Number.MIN_VALUE,Number.MIN_VALUE),s={},f=function(e){return{x:a.next(n.maxX),y:a.next(n.maxY)}},c="function"==typeof Object.create?Object.create(null):{};return e.forEachNode(r),e.forEachLink(o),e.on("changed",i),{run:function(e){this.step()},step:function(){return t(),!0},getGraphRect:function(){return u},dispose:function(){e.off("change",i)},isNodePinned:function(e){return!0},pinNode:function(e,n){},getNodePosition:d,getLinkPosition:function(e){e=s[e];return{from:d(e.fromId),to:d(e.toId)}},setNodePosition:function(e,n,t){e=c[e];e&&(e.x=n,e.y=t)},placeNode:function(e){return"function"==typeof e?(f=e,t(),this):f(e)}};function d(e){return c[e]}};var l=e("ngraph.merge"),p=e("ngraph.random").random,h=e("../Utils/rect.js")},{"../Utils/rect.js":49,"ngraph.merge":17,"ngraph.random":30}],42:[function(e,n,t){var r=e("ngraph.events");n.exports=function(n){return console.log("This method is deprecated. Please use Viva.events() instead"),n&&(void 0===n.on&&void 0===n.off&&void 0===n.fire?{extend:function(){var e=r(n);return e.addEventListener=e.on,e},on:n.on,stop:n.off}:{extend:function(){return n},on:n.on,stop:n.off})}},{"ngraph.events":9}],43:[function(e,n,t){n.exports=function(){if("undefined"==typeof window||!window.hasOwnProperty("navigator"))return{browser:"",version:"0"};var e=window.navigator.userAgent.toLowerCase(),e=/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(e)||[];return{browser:e[1]||"",version:e[2]||"0"}}()},{}],44:[function(e,n,t){e("./nullEvents.js");function r(e,n){document.addEventListener(e,n)}function o(e,n){document.removeEventListener(e,n)}n.exports={on:r,off:o}},{"./nullEvents.js":48}],45:[function(e,n,t){n.exports=function(e){var n=0,t=0;if(e.offsetParent)for(;n+=e.offsetLeft,t+=e.offsetTop,null!==(e=e.offsetParent););return[n,t]}},{}],46:[function(e,n,t){n.exports=function(e){if(!e)throw{message:"Cannot get dimensions of undefined container"};var n=e.clientWidth,e=e.clientHeight;return{left:0,top:0,width:n,height:e}}},{}],47:[function(e,n,t){var s=e("gintersect");n.exports=function(e,n,t,r,o,i,a,u){return s(e,n,e,r,o,i,a,u)||s(e,r,t,r,o,i,a,u)||s(t,r,t,n,o,i,a,u)||s(t,n,e,n,o,i,a,u)}},{gintersect:3}],48:[function(e,n,t){function r(){}n.exports={on:r,off:r,stop:r}},{}],49:[function(e,n,t){n.exports=function(e,n,t,r){this.x1=e||0,this.y1=n||0,this.x2=t||0,this.y2=r||0}},{}],50:[function(e,n,t){!function(r){function a(){}n.exports=function(){var e,o,i=0,n=["ms","moz","webkit","o"];o="undefined"!=typeof window?window:void 0!==r?r:{setTimeout:a,clearTimeout:a};for(e=0;e<n.length&&!o.requestAnimationFrame;++e){var t=n[e];o.requestAnimationFrame=o[t+"RequestAnimationFrame"],o.cancelAnimationFrame=o[t+"CancelAnimationFrame"]||o[t+"CancelRequestAnimationFrame"]}o.requestAnimationFrame||(o.requestAnimationFrame=function(e){var n=(new Date).getTime(),t=Math.max(0,16-(n-i)),r=o.setTimeout(function(){e(n+t)},t);return i=n+t,r});o.cancelAnimationFrame||(o.cancelAnimationFrame=function(e){o.clearTimeout(e)});return function(e){var n;return t(),{stop:r,restart:function(){n||t()}};function t(){n=o.requestAnimationFrame(t),e()||r()}function r(){o.cancelAnimationFrame(n),n=0}}}()}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],51:[function(e,n,t){var r=e("./nullEvents.js");function o(e,n){window.addEventListener(e,n)}function i(e,n){window.removeEventListener(e,n)}n.exports="undefined"!=typeof window?{on:o,off:i}:r},{"./nullEvents.js":48}],52:[function(e,n,t){n.exports=function(i,a){var t,r,o,u=(a=a||{}).layout,s=a.graphics,f=a.container,n=void 0===a.interactive||a.interactive,c=!1,d=!0,e=!1,l=!1,p=!1,h={offsetX:0,offsetY:0,scale:1},g=C({});return{run:function(e){var n;return c||(f=f||window.document.body,u=u||S(i,{springLength:80,springCoeff:2e-4}),s=s||D(i,{container:f}),a.hasOwnProperty("renderLinks")||(a.renderLinks=!0),a.prerender=a.prerender||0,t=(s.inputManager||U)(i,s),function(){if("number"==typeof a.prerender&&0<a.prerender)for(var e=0;e<a.prerender;e+=1)u.step()}(),s.init(f),i.forEachNode(b),a.renderLinks&&i.forEachLink(L),w(),M.on("resize",A),_(),v("drag")&&(o=O(f)).onDrag(function(e,n){s.translateRel(n.x,n.y),m(),g.fire("drag",n)}),v("scroll")&&(o=o||O(f)).onScroll(function(e,n,t){T(n<0,t)}),i.forEachNode(P),I(),i.on("changed",k),c=!0),n=e,r=r||R(void 0!==n?function(){if(--n<0)return!1;return y()}:y,30),this},reset:function(){s.resetScale(),w(),h.scale=1},pause:function(){p=!0,r.stop()},resume:function(){p=!1,r.restart()},rerender:function(){return m(),this},zoomOut:function(){return T(!0)},zoomIn:function(){return T(!1)},getTransform:function(){return h},moveTo:function(e,n){s.graphCenterChanged(h.offsetX-e*h.scale,h.offsetY-n*h.scale),m()},getGraphics:function(){return s},getLayout:function(){return u},dispose:function(){c=!1,I(),_(),M.off("resize",A),g.off(),r.stop(),i.forEachLink(function(e){a.renderLinks&&N(e)}),i.forEachNode(function(e){j(e),E(e)}),u.dispose(),s.release(f)},on:function(e,n){return g.on(e,n),this},off:function(e,n){return g.off(e,n),this}};function v(e){return"string"==typeof n?0<=n.indexOf(e):"boolean"!=typeof n||n}function m(){s.beginRender(),a.renderLinks&&s.renderLinks(),s.renderNodes(),s.endRender()}function y(){return e=u.step()&&!l,m(),!e}function x(){p||(e=!1,r.restart())}function w(){var e=u.getGraphRect(),n=B(f),t=(e.x2+e.x1)/2,e=(e.y2+e.y1)/2;h.offsetX=n.width/2-(t*h.scale-t),h.offsetY=n.height/2-(e*h.scale-e),s.graphCenterChanged(h.offsetX,h.offsetY),d=!1}function b(e){var n=u.getNodePosition(e.id);s.addNode(e,n)}function E(e){s.releaseNode(e)}function L(e){var n=u.getLinkPosition(e.id);s.addLink(e,n)}function N(e){s.releaseLink(e)}function P(r){var e;v("node")&&(e=!1,t.bindDragNDrop(r,{onStart:function(){e=u.isNodePinned(r),u.pinNode(r,!0),l=!0,x()},onDrag:function(e,n){var t=u.getNodePosition(r.id);u.setNodePosition(r.id,t.x+n.x/h.scale,t.y+n.y/h.scale),l=!0,m()},onStop:function(){u.pinNode(r,e),l=!1}}))}function j(e){t.bindDragNDrop(e,null)}function k(e){for(var n,t,r,o=0;o<e.length;o+=1)(n=e[o]).node?(r=void 0,r=(t=n).node,"add"===t.changeType?(b(r),P(r),d&&w()):"remove"===t.changeType?(j(r),E(r),0===i.getNodesCount()&&(d=!0)):"update"===t.changeType&&(j(r),E(r),b(r),P(r))):n.link&&function(e){var n=e.link;if("add"===e.changeType)a.renderLinks&&L(n);else if("remove"===e.changeType)a.renderLinks&&N(n);else if("update"===e.changeType)throw"Update type is not implemented. TODO: Implement me!"}(n);x()}function A(){w(),y()}function _(){o&&(o.release(),o=null)}function I(){i.off("changed",k)}function T(e,n){var t;n||(n={x:(t=B(f)).width/2,y:t.height/2});e=Math.pow(1.4,e?-.2:.2);return h.scale=s.scale(e,n),m(),g.fire("scale",h.scale),h.scale}};var C=e("ngraph.events"),S=e("ngraph.forcelayout"),D=e("./svgGraphics.js"),M=e("../Utils/windowEvents.js"),U=e("../Input/domInputManager.js"),R=e("../Utils/timer.js"),B=e("../Utils/getDimensions.js"),O=e("../Input/dragndrop.js")},{"../Input/domInputManager.js":38,"../Input/dragndrop.js":39,"../Utils/getDimensions.js":46,"../Utils/timer.js":50,"../Utils/windowEvents.js":51,"./svgGraphics.js":53,"ngraph.events":9,"ngraph.forcelayout":11}],53:[function(e,n,t){n.exports=function(){function r(e){e.fire("rescaled")}function t(){var e;i&&(e="matrix("+s+", 0, 0,"+s+","+o+","+u+")",i.attr("transform",e))}var i,a,n,o=0,u=0,s=1,f={},c={},d=function(e){return y("rect").attr("width",10).attr("height",10).attr("fill","#00a2e8")},l=function(e,n){e.attr("x",n.x-5).attr("y",n.y-5)},p=function(e){return y("line").attr("stroke","#999")},h=function(e,n,t){e.attr("x1",n.x).attr("y1",n.y).attr("x2",t.x).attr("y2",t.y)},g={x:0,y:0},v={x:0,y:0},m={x:0,y:0};a=function(){var e=y("svg");return i=y("g").attr("buffered-rendering","dynamic"),e.appendChild(i),e}();var e={getNodeUI:function(e){return f[e]},getLinkUI:function(e){return c[e]},node:function(e){if("function"==typeof e)return d=e,this},link:function(e){if("function"==typeof e)return p=e,this},placeNode:function(e){return l=e,this},placeLink:function(e){return h=e,this},beginRender:function(){},endRender:function(){},graphCenterChanged:function(e,n){o=e,u=n,t()},inputManager:w,translateRel:function(e,n){var t=a.createSVGPoint(),r=i.getCTM(),o=a.createSVGPoint().matrixTransform(r.inverse());t.x=e,t.y=n,(t=t.matrixTransform(r.inverse())).x=(t.x-o.x)*r.a,t.y=(t.y-o.y)*r.d,r.e+=t.x,r.f+=t.y;r="matrix("+r.a+", 0, 0,"+r.d+","+r.e+","+r.f+")";i.attr("transform",r)},scale:function(e,n){(t=a.createSVGPoint()).x=n.x,t.y=n.y;var t=t.matrixTransform(i.getCTM().inverse()),t=a.createSVGMatrix().translate(t.x,t.y).scale(e).translate(-t.x,-t.y),t=i.getCTM().multiply(t);s=t.a,o=t.e,u=t.f;t="matrix("+t.a+", 0, 0,"+t.d+","+t.e+","+t.f+")";return i.attr("transform",t),r(this),s},resetScale:function(){s=1;return i.attr("transform","matrix(1, 0, 0, 1, 0, 0)"),r(this),this},init:function(e){e.appendChild(a),t(),"function"==typeof n&&n(a)},release:function(e){a&&e&&e.removeChild(a)},addLink:function(e,n){var t=p(e);if(t)return t.position=n,t.link=e,c[e.id]=t,0<i.childElementCount?i.insertBefore(t,i.firstChild):i.appendChild(t),t},releaseLink:function(e){var n=c[e.id];n&&(i.removeChild(n),delete c[e.id])},addNode:function(e,n){var t=d(e);if(t)return t.position=n,t.node=e,f[e.id]=t,i.appendChild(t),t},releaseNode:function(e){var n=f[e.id];n&&(i.removeChild(n),delete f[e.id])},renderNodes:function(){for(var e in f)f.hasOwnProperty(e)&&(e=f[e],g.x=e.position.x,g.y=e.position.y,l(e,g,e.node))},renderLinks:function(){for(var e in c)c.hasOwnProperty(e)&&(e=c[e],v.x=e.position.from.x,v.y=e.position.from.y,m.x=e.position.to.x,m.y=e.position.to.y,h(e,v,m,e.link))},getGraphicsRoot:function(e){return"function"==typeof e&&(a?e(a):n=e),a},getSvgRoot:function(){return a}};return x(e),e};var y=e("simplesvg"),x=e("ngraph.events"),w=e("../Input/domInputManager.js")},{"../Input/domInputManager.js":38,"ngraph.events":9,simplesvg:32}],54:[function(e,n,t){n.exports=function(r){r=C(r,{enableBlending:!0,preserveDrawingBuffer:!1,clearColor:!1,clearColorValue:{r:1,g:1,b:1,a:1}});function o(){E.updateTransform(m),L.updateTransform(m)}function i(){m=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function a(){u&&s&&(c=s.width=Math.max(u.offsetWidth,1),d=s.height=Math.max(u.offsetHeight,1),f&&f.viewport(0,0,c,d),E&&E.updateSize(c/2,d/2),L&&L.updateSize(c/2,d/2))}var u,s,f,c,d,l,p,h,g=0,v=0,m=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],y=[],x=[],w={},b={},E=k(),L=A(),N=function(e){return _()},P=function(e){return I(3014898687)};s=window.document.createElement("canvas");var e={getLinkUI:function(e){return b[e]},getNodeUI:function(e){return w[e]},node:function(e){if("function"==typeof e)return N=e,this},link:function(e){if("function"==typeof e)return P=e,this},placeNode:function(e){return l=e,this},placeLink:function(e){return p=e,this},inputManager:j,beginRender:function(){},endRender:function(){0<v&&E.render(),0<g&&L.render()},bringLinkToFront:function(e){var n,t=E.getFrontLinkId();E.bringToFront(e),t>e.id&&(n=e.id,e=x[t],x[t]=x[n],x[t].id=t,x[n]=e,x[n].id=n)},graphCenterChanged:function(e,n){m[12]=2*e/c-1,m[13]=1-2*n/d,o()},addLink:function(e,n){var t=v++,r=P(e);return r.id=t,r.pos=n,E.createLink(r),x[t]=r,b[e.id]=r},addNode:function(e,n){var t=g++,r=N(e);return r.id=t,r.position=n,r.node=e,L.createNode(r),y[t]=r,w[e.id]=r},translateRel:function(e,n){m[12]+=2*m[0]*e/c/m[0],m[13]-=2*m[5]*n/d/m[5],o()},scale:function(e,n){var t=2*n.x/c-1,n=1-2*n.y/d;return t-=m[12],n-=m[13],m[12]+=t*(1-e),m[13]+=n*(1-e),m[0]*=e,m[5]*=e,o(),this.fire("rescaled"),m[0]},resetScale:function(){return i(),f&&(a(),o()),this},updateSize:a,init:function(e){var n={};if(r.preserveDrawingBuffer&&(n.preserveDrawingBuffer=!0),u=e,a(),i(),u.appendChild(s),!(f=s.getContext("experimental-webgl",n))){var t="Could not initialize WebGL. Seems like the browser doesn't support it.";throw window.alert(t),t}r.enableBlending&&(f.blendFunc(f.SRC_ALPHA,f.ONE_MINUS_SRC_ALPHA),f.enable(f.BLEND)),r.clearColor&&(t=r.clearColorValue,f.clearColor(t.r,t.g,t.b,t.a),this.beginRender=function(){f.clear(f.COLOR_BUFFER_BIT)}),E.load(f),E.updateSize(c/2,d/2),L.load(f),L.updateSize(c/2,d/2),o(),"function"==typeof h&&h(s)},release:function(e){s&&e&&e.removeChild(s)},isSupported:function(){var e=window.document.createElement("canvas");return e&&e.getContext&&e.getContext("experimental-webgl")},releaseLink:function(e){0<v&&--v;var n=b[e.id];delete b[e.id],E.removeLink(n);e=n.id;e<v&&0!==v&&v!==e&&(n=x[v],(x[e]=n).id=e)},releaseNode:function(e){0<g&&--g;var n=w[e.id];delete w[e.id],L.removeNode(n);var t=n.id;t<g&&0!==g&&g!==t&&(e=y[g],(y[t]=e).id=t,L.replaceProperties(n,e))},renderNodes:function(){for(var e={x:0,y:0},n=0;n<g;++n){var t=y[n];e.x=t.position.x,e.y=t.position.y,l&&l(t,e),L.position(t,e)}},renderLinks:function(){if(!this.omitLinksRendering)for(var e={x:0,y:0},n={x:0,y:0},t=0;t<v;++t){var r=x[t],o=r.pos.from;n.x=o.x,n.y=-o.y,o=r.pos.to,e.x=o.x,e.y=-o.y,p&&p(r,n,e),E.position(r,n,e)}},getGraphicsRoot:function(e){return"function"==typeof e&&(s?e(s):h=e),s},setNodeProgram:function(e){if(!f&&e)L=e;else if(e)throw"Not implemented. Cannot swap shader on the fly... Yet."},setLinkProgram:function(e){if(!f&&e)E=e;else if(e)throw"Not implemented. Cannot swap shader on the fly... Yet."},transformClientToGraphCoordinates:function(e){return e.x=2*e.x/c-1,e.y=1-2*e.y/d,e.x=(e.x-m[12])/m[0],e.y=(e.y-m[13])/m[5],e.x=e.x*(c/2),e.y=e.y*(-d/2),e},transformGraphToClientCoordinates:function(e){return e.x=e.x/(c/2),e.y=e.y/(-d/2),e.x=e.x*m[0]+m[12],e.y=e.y*m[5]+m[13],e.x=(e.x+1)*c/2,e.y=(1-e.y)*d/2,e},getNodeAtClientPos:function(e,n){if("function"!=typeof n)return null;this.transformClientToGraphCoordinates(e);for(var t=0;t<g;++t)if(n(y[t],e.x,e.y))return y[t].node;return null}};return T(e),e};var j=e("../Input/webglInputManager.js"),k=e("../WebGL/webglLinkProgram.js"),A=e("../WebGL/webglNodeProgram.js"),_=e("../WebGL/webglSquare.js"),I=e("../WebGL/webglLine.js"),T=e("ngraph.events"),C=e("ngraph.merge")},{"../Input/webglInputManager.js":40,"../WebGL/webglLine.js":62,"../WebGL/webglLinkProgram.js":63,"../WebGL/webglNodeProgram.js":64,"../WebGL/webglSquare.js":65,"ngraph.events":9,"ngraph.merge":17}],55:[function(e,n,t){n.exports=function(e){var n=10414335;if("string"==typeof e&&e)if(9===(e=4===e.length?e.replace(/([^#])/g,"$1$1"):e).length)n=parseInt(e.substr(1),16);else{if(7!==e.length)throw'Color expected in hex format with preceding "#". E.g. #00ff00. Got value: '+e;n=parseInt(e.substr(1),16)<<8|255}else"number"==typeof e&&(n=e);return n}},{}],56:[function(e,n,t){n.exports=function(e){this.canvas=window.document.createElement("canvas"),this.ctx=this.canvas.getContext("2d"),this.isDirty=!1,this.canvas.width=this.canvas.height=e}},{}],57:[function(e,n,t){function o(e,n,t,r){for(var o=0;o<r;++o)e[n+o]=e[t+o]}function i(e,n,t,r){for(var o=0;o<r;++o){var i=e[n+o];e[n+o]=e[t+o],e[t+o]=i}}n.exports=function(a){return{createProgram:function(e,n){var t=a.createProgram(),e=r(e,a.VERTEX_SHADER),n=r(n,a.FRAGMENT_SHADER);if(a.attachShader(t,e),a.attachShader(t,n),a.linkProgram(t),a.getProgramParameter(t,a.LINK_STATUS))return t;t=a.getShaderInfoLog(t);throw window.alert(t),t},extendArray:function(e,n,t){if((n+1)*t>e.length){t=new Float32Array(e.length*t*2);return t.set(e),t}return e},copyArrayPart:o,swapArrayPart:i,getLocations:function(e,n){for(var t={},r=0;r<n.length;++r){var o=n[r],i=-1;if("a"===o[0]&&"_"===o[1]){if(-1===(i=a.getAttribLocation(e,o)))throw new Error("Program doesn't have required attribute: "+o);t[o.slice(2)]=i}else{if("u"!==o[0]||"_"!==o[1])throw new Error("Couldn't figure out your intent. All uniforms should start with 'u_' prefix, and attributes with 'a_'");if(null===(i=a.getUniformLocation(e,o)))throw new Error("Program doesn't have required uniform: "+o);t[o.slice(2)]=i}}return t},context:a};function r(e,n){n=a.createShader(n);if(a.shaderSource(n,e),a.compileShader(n),a.getShaderParameter(n,a.COMPILE_STATUS))return n;n=a.getShaderInfoLog(n);throw window.alert(n),n}}},{}],58:[function(e,n,t){var p=e("./texture.js");n.exports=function(t){var e,a=Math.sqrt(t||1024)<<0,u=a,o=1,s={},n=0,f=[],c=[];if(!function(e){return 0==(e&e-1)}(t))throw"Tiles per texture should be power of two.";var r={isDirty:!1,clearDirty:function(){var e;for(r.isDirty=!1,e=0;e<f.length;++e)f[e].isDirty=!1},remove:function(e){var n=s[e];if(!n)return!1;if(delete s[e],--o===n.offset)return!0;e=d(n.offset);return function(e,n){var t=f[e.textureNumber].canvas,r=f[n.textureNumber].ctx,o=n.col*u,i=n.row*u;r.drawImage(t,e.col*u,e.row*u,u,u,o,i,u,u),f[e.textureNumber].isDirty=!0,f[n.textureNumber].isDirty=!0}(d(o),e),s[c[o]].offset=n.offset,c[n.offset]=c[o],l(),!0},getTextures:function(){return f},getCoordinates:function(e){return s[e]},load:function(e,n){{var t,r;s.hasOwnProperty(e)?n(s[e]):(t=new window.Image,r=o,o+=1,t.crossOrigin="anonymous",t.onload=function(){l(),function(e,n,t){var r=d(e),o={offset:e};r.textureNumber>=f.length&&function(){var e=new p(a*u);f.push(e)}();var i=f[r.textureNumber];i.ctx.drawImage(n,r.col*u,r.row*u,u,u),c[e]=n.src,s[n.src]=o,i.isDirty=!0,t(o)}(r,t,n)},t.src=e)}}};return r;function d(e){var n=e%t;return{textureNumber:e/t<<0,row:n/a<<0,col:n%a}}function i(){r.isDirty=!0,n=0,e=null}function l(){e&&(window.clearTimeout(e),n+=1,e=null),10<n?i():e=window.setTimeout(i,400)}}},{"./texture.js":56}],59:[function(e,n,t){n.exports=function(e,n){return{_texture:0,_offset:0,size:"number"==typeof e?e:32,src:n}}},{}],60:[function(e,n,t){var v=e("./webglAtlas.js"),m=e("./webgl.js");n.exports=function(n){var t,r,o,i,a,u,s,f,c,d,l=["precision mediump float;","varying vec4 color;","varying vec3 vTextureCoord;","uniform sampler2D u_sampler0;","uniform sampler2D u_sampler1;","uniform sampler2D u_sampler2;","uniform sampler2D u_sampler3;","void main(void) {","   if (vTextureCoord.z == 0.) {","     gl_FragColor = texture2D(u_sampler0, vTextureCoord.xy);","   } else if (vTextureCoord.z == 1.) {","     gl_FragColor = texture2D(u_sampler1, vTextureCoord.xy);","   } else if (vTextureCoord.z == 2.) {","     gl_FragColor = texture2D(u_sampler2, vTextureCoord.xy);","   } else if (vTextureCoord.z == 3.) {","     gl_FragColor = texture2D(u_sampler3, vTextureCoord.xy);","   } else { gl_FragColor = vec4(0, 1, 0, 1); }","}"].join("\n"),p=["attribute vec2 a_vertexPos;","attribute float a_customAttributes;","uniform vec2 u_screenSize;","uniform mat4 u_transform;","uniform float u_tilesPerTexture;","varying vec3 vTextureCoord;","void main(void) {","   gl_Position = u_transform * vec4(a_vertexPos/u_screenSize, 0, 1);","float corner = mod(a_customAttributes, 4.);","float tileIndex = mod(floor(a_customAttributes / 4.), u_tilesPerTexture);","float tilesPerRow = sqrt(u_tilesPerTexture);","float tileSize = 1./tilesPerRow;","float tileColumn = mod(tileIndex, tilesPerRow);","float tileRow = floor(tileIndex/tilesPerRow);","if(corner == 0.0) {","  vTextureCoord.xy = vec2(0, 1);","} else if(corner == 1.0) {","  vTextureCoord.xy = vec2(1, 1);","} else if(corner == 2.0) {","  vTextureCoord.xy = vec2(0, 0);","} else {","  vTextureCoord.xy = vec2(1, 0);","}","vTextureCoord *= tileSize;","vTextureCoord.x += tileColumn * tileSize;","vTextureCoord.y += tileRow * tileSize;","vTextureCoord.z = floor(floor(a_customAttributes / 4.)/u_tilesPerTexture);","}"].join("\n"),n=n||1024,h=0,g=new Float32Array(64);return{load:function(e){a=m(o=e),t=new v(n),r=a.createProgram(p,l),o.useProgram(r),u=a.getLocations(r,["a_vertexPos","a_customAttributes","u_screenSize","u_transform","u_sampler0","u_sampler1","u_sampler2","u_sampler3","u_tilesPerTexture"]),o.uniform1f(u.tilesPerTexture,n),o.enableVertexAttribArray(u.vertexPos),o.enableVertexAttribArray(u.customAttributes),i=o.createBuffer()},position:function(e,n){var t=18*e.id;g[t]=n.x-e.size,g[1+t]=-n.y-e.size,g[2+t]=4*e._offset,g[3+t]=n.x+e.size,g[4+t]=-n.y-e.size,g[5+t]=4*e._offset+1,g[6+t]=n.x-e.size,g[7+t]=-n.y+e.size,g[8+t]=4*e._offset+2,g[9+t]=n.x-e.size,g[10+t]=-n.y+e.size,g[11+t]=4*e._offset+2,g[12+t]=n.x+e.size,g[13+t]=-n.y-e.size,g[14+t]=4*e._offset+1,g[15+t]=n.x+e.size,g[16+t]=-n.y+e.size,g[17+t]=4*e._offset+3},createNode:function(n){g=a.extendArray(g,h,18),h+=1;var e=t.getCoordinates(n.src);e?n._offset=e.offset:(n._offset=0,t.load(n.src,function(e){n._offset=e.offset}))},removeNode:function(e){0<h&&--h;e.id<h&&0<h&&(e.src&&t.remove(e.src),a.copyArrayPart(g,18*e.id,18*h,18))},replaceProperties:function(e,n){n._offset=e._offset},updateTransform:function(e){d=!0,c=e},updateSize:function(e,n){s=e,f=n,d=!0},render:function(){o.useProgram(r),o.bindBuffer(o.ARRAY_BUFFER,i),o.bufferData(o.ARRAY_BUFFER,g,o.DYNAMIC_DRAW),d&&(d=!1,o.uniformMatrix4fv(u.transform,!1,c),o.uniform2f(u.screenSize,s,f));o.vertexAttribPointer(u.vertexPos,2,o.FLOAT,!1,3*Float32Array.BYTES_PER_ELEMENT,0),o.vertexAttribPointer(u.customAttributes,1,o.FLOAT,!1,3*Float32Array.BYTES_PER_ELEMENT,8),function(){if(t.isDirty){var e,n=t.getTextures();for(e=0;e<n.length;++e)!n[e].isDirty&&n[e].nativeObject||function(e,n){e.nativeObject&&o.deleteTexture(e.nativeObject);var t=o.createTexture();o.activeTexture(o["TEXTURE"+n]),o.bindTexture(o.TEXTURE_2D,t),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,e.canvas),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR_MIPMAP_NEAREST),o.generateMipmap(o.TEXTURE_2D),o.uniform1i(u["sampler"+n],n),e.nativeObject=t}(n[e],e);t.clearDirty()}}(),o.drawArrays(o.TRIANGLES,0,6*h)}}}},{"./webgl.js":57,"./webglAtlas.js":58}],61:[function(e,n,t){var L=e("../Utils/documentEvents.js");n.exports=function(n){if(n.webglInputEvents)return n.webglInputEvents;var c,d,l=null,p=[],h=[],g=[],v=[],t=[],m=[],y=[];!function(e){function r(e){E(t,[a,e]),i.x=e.clientX,i.y=e.clientY}function o(){d=e.getBoundingClientRect()}var i={x:0,y:0},a=null,u=1,s=+new Date,f=function(){L.off("mousemove",r),L.off("mouseup",f)};window.addEventListener("resize",o),o(),e.addEventListener("mousemove",function(e){var n,t;l||(u++%7==0&&(o(),u=1),n=!1,i.x=e.clientX-d.left,i.y=e.clientY-d.top,(t=x(i))&&a!==t?(a&&E(h,[a]),a=t,n=n||E(p,[a])):null===t&&a!==t&&(n=n||E(h,[a]),a=null),n&&w(e))}),e.addEventListener("mousedown",function(e){var n,t=!1;o(),i.x=e.clientX-d.left,i.y=e.clientY-d.top,n=[x(i),e],a=n[0]?(t=E(g,n),L.on("mousemove",r),L.on("mouseup",f),c=window.document.onselectstart,window.document.onselectstart=b,n[0]):null,t&&w(e)}),e.addEventListener("mouseup",function(e){var n=+new Date;i.x=e.clientX-d.left,i.y=e.clientY-d.top;var t=x(i),r=t===a;(t=[t||a,e])[0]&&(window.document.onselectstart=c,E(n-s<400&&r?y:m,t),s=n,E(v,t)&&w(e))})}(n.getGraphicsRoot());var r={mouseEnter:function(e){"function"==typeof e&&p.push(e);return r},mouseLeave:function(e){"function"==typeof e&&h.push(e);return r},mouseDown:function(e){"function"==typeof e&&g.push(e);return r},mouseUp:function(e){"function"==typeof e&&v.push(e);return r},mouseMove:function(e){"function"==typeof e&&t.push(e);return r},click:function(e){"function"==typeof e&&m.push(e);return r},dblClick:function(e){"function"==typeof e&&y.push(e);return r},mouseCapture:function(e){l=e},releaseMouseCapture:function(){l=null}};return n.webglInputEvents=r;function o(e,n,t){if(e&&e.size){var r=e.position,e=e.size;return r.x-e<n&&n<r.x+e&&r.y-e<t&&t<r.y+e}return!0}function x(e){return n.getNodeAtClientPos(e,o)}function w(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function b(e){return w(e),!1}function E(e,n){for(var t=0;t<e.length;t+=1)if(e[t].apply(void 0,n))return!0}}},{"../Utils/documentEvents.js":44}],62:[function(e,n,t){var r=e("./parseColor.js");n.exports=function(e){return{color:r(e)}}},{"./parseColor.js":55}],63:[function(e,n,t){var y=e("./webgl.js");n.exports=function(){var n,t,r,o,i,a,u,s,f,c,d=2*(2*Float32Array.BYTES_PER_ELEMENT+Uint32Array.BYTES_PER_ELEMENT),l=["precision mediump float;","varying vec4 color;","void main(void) {","   gl_FragColor = color;","}"].join("\n"),p=["attribute vec2 a_vertexPos;","attribute vec4 a_color;","uniform vec2 u_screenSize;","uniform mat4 u_transform;","varying vec4 color;","void main(void) {","   gl_Position = u_transform * vec4(a_vertexPos/u_screenSize, 0.0, 1.0);","   color = a_color.abgr;","}"].join("\n"),h=0,g=new ArrayBuffer(16*d),v=new Float32Array(g),m=new Uint32Array(g);return{load:function(e){o=y(t=e),n=o.createProgram(p,l),t.useProgram(n),i=o.getLocations(n,["a_vertexPos","a_color","u_screenSize","u_transform"]),t.enableVertexAttribArray(i.vertexPos),t.enableVertexAttribArray(i.color),r=t.createBuffer()},position:function(e,n,t){var r=6*e.id;v[r]=n.x,v[1+r]=n.y,m[2+r]=e.color,v[3+r]=t.x,v[4+r]=t.y,m[5+r]=e.color},createLink:function(e){var n,t,r;(h+1)*d>g.byteLength&&(n=new ArrayBuffer(2*g.byteLength),t=new Float32Array(n),(r=new Uint32Array(n)).set(m),v=t,m=r,g=n),h+=1,a=e.id},removeLink:function(e){0<h&&--h,e.id<h&&0<h&&o.copyArrayPart(m,6*e.id,6*h,6)},updateTransform:function(e){c=!0,f=e},updateSize:function(e,n){u=e,s=n,c=!0},render:function(){t.useProgram(n),t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,g,t.DYNAMIC_DRAW),c&&(c=!1,t.uniformMatrix4fv(i.transform,!1,f),t.uniform2f(i.screenSize,u,s)),t.vertexAttribPointer(i.vertexPos,2,t.FLOAT,!1,3*Float32Array.BYTES_PER_ELEMENT,0),t.vertexAttribPointer(i.color,4,t.UNSIGNED_BYTE,!0,3*Float32Array.BYTES_PER_ELEMENT,8),t.drawArrays(t.LINES,0,2*h),a=h-1},bringToFront:function(e){a>e.id&&o.swapArrayPart(v,6*e.id,6*a,6),0<a&&--a},getFrontLinkId:function(){return a}}}},{"./webgl.js":57}],64:[function(e,n,t){var m=e("./webgl.js");n.exports=function(){var n,t,r,o,i,a,u,s,f,c=3*Float32Array.BYTES_PER_ELEMENT+Uint32Array.BYTES_PER_ELEMENT,d=["precision mediump float;","varying vec4 color;","void main(void) {","   gl_FragColor = color;","}"].join("\n"),l=["attribute vec3 a_vertexPos;","attribute vec4 a_color;","uniform vec2 u_screenSize;","uniform mat4 u_transform;","varying vec4 color;","void main(void) {","   gl_Position = u_transform * vec4(a_vertexPos.xy/u_screenSize, 0, 1);","   gl_PointSize = a_vertexPos.z * u_transform[0][0];","   color = a_color.abgr;","}"].join("\n"),p=new ArrayBuffer(16*c),h=new Float32Array(p),g=new Uint32Array(p),v=0;return{load:function(e){i=m(t=e),n=i.createProgram(l,d),t.useProgram(n),o=i.getLocations(n,["a_vertexPos","a_color","u_screenSize","u_transform"]),t.enableVertexAttribArray(o.vertexPos),t.enableVertexAttribArray(o.color),r=t.createBuffer()},position:function(e,n){var t=e.id;h[4*t]=n.x,h[4*t+1]=-n.y,h[4*t+2]=e.size,g[4*t+3]=e.color},updateTransform:function(e){f=!0,s=e},updateSize:function(e,n){a=e,u=n,f=!0},removeNode:function(e){0<v&&--v;e.id<v&&0<v&&i.copyArrayPart(g,4*e.id,4*v,4)},createNode:function(){(function(){var e,n,t;(v+1)*c>=p.byteLength&&(e=new ArrayBuffer(2*p.byteLength),n=new Float32Array(e),(t=new Uint32Array(e)).set(g),h=n,g=t,p=e)})(),v+=1},replaceProperties:function(){},render:function(){t.useProgram(n),t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,p,t.DYNAMIC_DRAW),f&&(f=!1,t.uniformMatrix4fv(o.transform,!1,s),t.uniform2f(o.screenSize,a,u));t.vertexAttribPointer(o.vertexPos,3,t.FLOAT,!1,4*Float32Array.BYTES_PER_ELEMENT,0),t.vertexAttribPointer(o.color,4,t.UNSIGNED_BYTE,!0,4*Float32Array.BYTES_PER_ELEMENT,12),t.drawArrays(t.POINTS,0,v)}}}},{"./webgl.js":57}],65:[function(e,n,t){var r=e("./parseColor.js");n.exports=function(e,n){return{size:"number"==typeof e?e:10,color:r(n)}}},{"./parseColor.js":55}],66:[function(e,n,t){n.exports="0.10.1"},{}]},{},[1])(1)});