You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

js-graph

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

js-graph - npm Package Compare versions

Comparing version

to
1.6.1-alpha

71

dist/js-graph.es6.js

@@ -312,2 +312,30 @@ 'use strict';

verticesWithPathFrom(from) {
if (!this.hasVertex(from)) { throw new JsGraph.VertexNotExistsError(from) }
return this._verticesWithPathFrom(from, new Set());
}
*_verticesWithPathFrom(from, done) {
for (let to of this._edges.get(from).keys()) {
if (this.hasEdge(from, to) && !done.has(to)) {
done.add(to);
yield [to, this._vertices.get(to)];
yield* this._verticesWithPathFrom(to, done);
}
}
}
verticesWithPathTo(to) {
if (!this.hasVertex(to)) { throw new JsGraph.VertexNotExistsError(to) }
return this._verticesWithPathTo(to, new Set());
}
*_verticesWithPathTo(to, done) {
for (let from of this._reverseEdges.get(to)) {
if (this.hasEdge(from, to) && !done.has(from)) {
done.add(from);
yield [from, this._vertices.get(from)];
yield* this._verticesWithPathTo(from, done);
}
}
}
*vertices_topologically() {

@@ -354,2 +382,8 @@ var visited = []; // stack

eachEdge(handler) {
for (let args of this.edges()) {
if (handler(...args) === false) { break }
}
}
eachVertexFrom(from, handler) {

@@ -367,4 +401,4 @@ for (let args of this.verticesFrom(from)) {

eachEdge(handler) {
for (let args of this.edges()) {
eachVertexWithPathFrom(from, handler) {
for (let args of this.verticesWithPathFrom(from)) {
if (handler(...args) === false) { break }

@@ -374,2 +408,8 @@ }

eachVertexWithPathTo(to, handler) {
for (let args of this.verticesWithPathTo(to)) {
if (handler(...args) === false) { break }
}
}
eachVertexTopologically(handler) {

@@ -395,6 +435,21 @@ for (let args of this.vertices_topologically()) {

//////////////////////////////////////
////////// Advanced Queries //////////
//////////////////////////////////////
////////////////////////////////////////
////////// (Advanced) Queries //////////
////////////////////////////////////////
equals(other, eq=(x,y,from,to)=>x===y) {
if (!(other instanceof JsGraph)) { return false }
if (this.vertexCount() !== other.vertexCount()) { return false }
if (this.edgeCount() !== other.edgeCount() ) { return false }
for (let [key, value] of this.vertices()) {
if (!other.hasVertex(key)) { return false }
if (!eq(value, other.vertexValue(key), key)) { return false }
}
for (let [from, to, value] of this.edges()) {
if (!other.hasEdge(from, to)) { return false }
if (!eq(value, other.edgeValue(from, to), from, to)) { return false }
}
return true;
}
hasCycle() {

@@ -465,9 +520,9 @@ var visited = {};

clone() {
clone(transform=v=>v) {
var result = new JsGraph();
for (let [key, val] of this.vertices()) {
result.addVertex(key, val);
result.addVertex(key, transform(val));
}
for (let [from, to, val] of this.edges()) {
result.addEdge(from, to, val);
result.addEdge(from, to, transform(val));
}

@@ -474,0 +529,0 @@ return result;

5

dist/js-graph.full.min.js

@@ -1,3 +0,4 @@

(function e(t,r){if(typeof exports==="object"&&typeof module==="object")module.exports=r();else if(typeof define==="function"&&define.amd)define(r);else if(typeof exports==="object")exports["JsGraph"]=r();else t["JsGraph"]=r()})(this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={exports:{},id:n,loaded:false};e[n].call(i.exports,i,i.exports,r);i.loaded=true;return i.exports}r.m=e;r.c=t;r.p="";return r(0)}([function(e,t,r){r(1);e.exports=r(2)},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";var n=function(e,t){if(Array.isArray(e)){return e}else if(Symbol.iterator in Object(e)){var r=[];for(var n=e[Symbol.iterator](),i;!(i=n.next()).done;){r.push(i.value);if(t&&r.length===t)break}return r}else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}};var i=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}else{return Array.from(e)}};var a=function(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})};var u=function(e,t){if(typeof t!=="function"&&t!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)e.__proto__=t};var s=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.configurable=true;if(n.value)n.writable=true;Object.defineProperty(e,n.key,n)}}return function(t,r,n){if(r)e(t.prototype,r);if(n)e(t,n);return t}}();var o=function(){function e(e,t){for(var r in t){var n=t[r];n.configurable=true;if(n.value)n.writable=true}Object.defineProperties(e,t)}return function(t,r,n){if(r)e(t.prototype,r);if(n)e(t,n);return t}}();var f=function(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}};var c=function(){function e(){f(this,e);this._callbacks=new Set}o(e,{add:{value:function t(e){var t=this;if(!this._callbacks.has(e)){this._callbacks.add(e)}return function(){t._callbacks["delete"](e)}}},fire:{value:function r(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++){t[r]=arguments[r]}var n=true;var i=false;var a=undefined;try{for(var u=this._callbacks[Symbol.iterator](),s;!(n=(s=u.next()).done);n=true){var o=s.value;o.apply(undefined,t)}}catch(f){i=true;a=f}finally{try{if(!n&&u["return"]){u["return"]()}}finally{if(i){throw a}}}}}});return e}();var l=function(){function e(){f(this,e);this._vertices=new Map;this._edges=new Map;this._reverseEdges=new Map;this._vertexCount=0;this._edgeCount=0;this._addVertexCallbacks=new c;this._removeVertexCallbacks=new c;this._addEdgeCallbacks=new c;this._removeEdgeCallbacks=new c}s(e,[{key:"onAddVertex",value:function t(e){return this._addVertexCallbacks.add(e)}},{key:"onRemoveVertex",value:function r(e){return this._removeVertexCallbacks.add(e)}},{key:"addNewVertex",value:function a(t,r){if(this.hasVertex(t)){throw new e.VertexExistsError(t,this._vertices.get(t))}this._vertices.set(t,r);this._edges.set(t,new Map);this._reverseEdges.set(t,new Set);this._vertexCount+=1;this._addVertexCallbacks.fire(t,r)}},{key:"setVertex",value:function u(t,r){if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}this._vertices.set(t,r)}},{key:"ensureVertex",value:function o(e,t){if(!this.hasVertex(e)){this.addNewVertex(e,t)}}},{key:"addVertex",value:function l(e,t){if(this.hasVertex(e)){this.setVertex(e,t)}else{this.addNewVertex(e,t)}}},{key:"removeExistingVertex",value:function h(t){if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}if(this._edges.get(t).size>0){throw new e.HasConnectedEdgesError(t)}if(this._reverseEdges.get(t).size>0){throw new e.HasConnectedEdgesError(t)}var r=this._vertices.get(t);this._vertices["delete"](t);this._vertexCount-=1;this._removeVertexCallbacks.fire(t,r)}},{key:"destroyExistingVertex",value:function v(t){var r=this;if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}this.eachVertexFrom(t,function(e){r.removeEdge(t,e)});this.eachVertexTo(t,function(e){r.removeEdge(e,t)});this.removeExistingVertex(t)}},{key:"removeVertex",value:function d(e){if(this.hasVertex(e)){this.removeExistingVertex(e)}}},{key:"destroyVertex",value:function g(e){if(this.hasVertex(e)){this.destroyExistingVertex(e)}}},{key:"vertexCount",value:function p(){return this._vertexCount}},{key:"hasVertex",value:function y(e){return this._vertices.has(e)}},{key:"vertexValue",value:function x(e){return this._vertices.get(e)}},{key:"onAddEdge",value:function w(e){return this._addEdgeCallbacks.add(e)}},{key:"onRemoveEdge",value:function m(e){return this._removeEdgeCallbacks.add(e)}},{key:"addNewEdge",value:function E(t,r,n){if(this.hasEdge(t,r)){throw new e.EdgeExistsError(t,r,this.edgeValue(t,r))}if(!this.hasVertex(t)){if(this.hasVertex(r)){throw new e.VertexNotExistsError(t)}else{throw new e.VertexNotExistsError(t).v(r)}}else if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}this._edges.get(t).set(r,n);this._reverseEdges.get(r).add(t);this._edgeCount+=1;this._addEdgeCallbacks.fire(t,r,n)}},{key:"createNewEdge",value:function b(t,r,n){if(this.hasEdge(t,r)){throw new e.EdgeExistsError(t,r,this.edgeValue(t,r))}this.ensureVertex(t);this.ensureVertex(r);this.addNewEdge(t,r,n)}},{key:"setEdge",value:function k(t,r,n){if(!this.hasEdge(t,r)){throw new e.EdgeNotExistsError(t,r)}this._edges.get(t).set(r,n)}},{key:"spanEdge",value:function _(t,r,n){if(!this.hasVertex(t)){if(this.hasVertex(r)){throw new e.VertexNotExistsError(t)}else{throw new e.VertexNotExistsError(t).v(r)}}else if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}if(!this.hasEdge(t,r)){this.addNewEdge(t,r,n)}}},{key:"addEdge",value:function V(e,t,r){if(this.hasEdge(e,t)){this.setEdge(e,t,r)}else{this.addNewEdge(e,t,r)}}},{key:"ensureEdge",value:function N(e,t,r){if(!this.hasEdge(e,t)){this.createNewEdge(e,t,r)}}},{key:"createEdge",value:function S(e,t,r){if(this.hasEdge(e,t)){this.setEdge(e,t,r)}else{this.createNewEdge(e,t,r)}}},{key:"removeExistingEdge",value:function O(t,r){if(!this.hasEdge(t,r)){throw new e.EdgeNotExistsError(t,r)}var n=this._edges.get(t).get(r);this._edges.get(t)["delete"](r);this._reverseEdges.get(r)["delete"](t);this._edgeCount-=1;this._removeEdgeCallbacks.fire(t,r,n)}},{key:"removeEdge",value:function C(e,t){if(this.hasEdge(e,t)){this.removeExistingEdge(e,t)}}},{key:"edgeCount",value:function j(){return this._edgeCount}},{key:"hasEdge",value:function P(e,t){return this.hasVertex(e)&&this.hasVertex(t)&&this._edges.has(e)&&this._edges.get(e).has(t)}},{key:"edgeValue",value:function L(e,t){return this.hasEdge(e,t)?this._edges.get(e).get(t):undefined}},{key:Symbol.iterator,value:function(){return this.vertices()}},{key:"vertices",value:regeneratorRuntime.mark(function I(){var e=this;var t,r,i,a,u,s,o,f,c;return regeneratorRuntime.wrap(function l(h){while(1)switch(h.prev=h.next){case 0:t=new Set;r=true;i=false;a=undefined;h.prev=4;u=e._vertices[Symbol.iterator]();case 6:if(r=(s=u.next()).done){h.next=17;break}o=n(s.value,2);f=o[0];c=o[1];if(!(e.hasVertex(f)&&!t.has(f))){h.next=14;break}t.add(f);h.next=14;return[f,c];case 14:r=true;h.next=6;break;case 17:h.next=23;break;case 19:h.prev=19;h.t0=h["catch"](4);i=true;a=h.t0;case 23:h.prev=23;h.prev=24;if(!r&&u["return"]){u["return"]()}case 26:h.prev=26;if(!i){h.next=29;break}throw a;case 29:return h.finish(26);case 30:return h.finish(23);case 31:case"end":return h.stop()}},I,this,[[4,19,23,31],[24,,26,30]])})},{key:"edges",value:regeneratorRuntime.mark(function F(){var e=this;var t,r,n,i,a,u,s,o,f,c,l,h,v;return regeneratorRuntime.wrap(function d(g){while(1)switch(g.prev=g.next){case 0:t=new Map;r=true;n=false;i=undefined;g.prev=4;a=e._edges.keys()[Symbol.iterator]();case 6:if(r=(u=a.next()).done){g.next=40;break}s=u.value;if(!t.has(s)){t.set(s,new Set)}o=true;f=false;c=undefined;g.prev=12;l=e._edges.get(s).keys()[Symbol.iterator]();case 14:if(o=(h=l.next()).done){g.next=23;break}v=h.value;if(!(e.hasEdge(s,v)&&!t.get(s).has(v))){g.next=20;break}t.get(s).add(v);g.next=20;return[s,v,e._edges.get(s).get(v)];case 20:o=true;g.next=14;break;case 23:g.next=29;break;case 25:g.prev=25;g.t1=g["catch"](12);f=true;c=g.t1;case 29:g.prev=29;g.prev=30;if(!o&&l["return"]){l["return"]()}case 32:g.prev=32;if(!f){g.next=35;break}throw c;case 35:return g.finish(32);case 36:return g.finish(29);case 37:r=true;g.next=6;break;case 40:g.next=46;break;case 42:g.prev=42;g.t2=g["catch"](4);n=true;i=g.t2;case 46:g.prev=46;g.prev=47;if(!r&&a["return"]){a["return"]()}case 49:g.prev=49;if(!n){g.next=52;break}throw i;case 52:return g.finish(49);case 53:return g.finish(46);case 54:case"end":return g.stop()}},F,this,[[4,42,46,54],[12,25,29,37],[30,,32,36],[47,,49,53]])})},{key:"verticesFrom",value:function T(t){if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}return this._verticesFrom(t)}},{key:"_verticesFrom",value:regeneratorRuntime.mark(function R(e){var t=this;var r,n,i,a,u,s,o;return regeneratorRuntime.wrap(function f(c){while(1)switch(c.prev=c.next){case 0:r=new Set;n=true;i=false;a=undefined;c.prev=4;u=t._edges.get(e).keys()[Symbol.iterator]();case 6:if(n=(s=u.next()).done){c.next=15;break}o=s.value;if(!(t.hasEdge(e,o)&&!r.has(o))){c.next=12;break}r.add(o);c.next=12;return[o,t._vertices.get(o),t._edges.get(e).get(o)];case 12:n=true;c.next=6;break;case 15:c.next=21;break;case 17:c.prev=17;c.t3=c["catch"](4);i=true;a=c.t3;case 21:c.prev=21;c.prev=22;if(!n&&u["return"]){u["return"]()}case 24:c.prev=24;if(!i){c.next=27;break}throw a;case 27:return c.finish(24);case 28:return c.finish(21);case 29:case"end":return c.stop()}},R,this,[[4,17,21,29],[22,,24,28]])})},{key:"verticesTo",value:function A(t){if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}return this._verticesTo(t)}},{key:"_verticesTo",value:regeneratorRuntime.mark(function M(e){var t=this;var r,n,i,a,u,s,o;return regeneratorRuntime.wrap(function f(c){while(1)switch(c.prev=c.next){case 0:r=new Set;n=true;i=false;a=undefined;c.prev=4;u=t._reverseEdges.get(e)[Symbol.iterator]();case 6:if(n=(s=u.next()).done){c.next=15;break}o=s.value;if(!(t.hasEdge(o,e)&&!r.has(o))){c.next=12;break}r.add(o);c.next=12;return[o,t._vertices.get(o),t._edges.get(o).get(e)];case 12:n=true;c.next=6;break;case 15:c.next=21;break;case 17:c.prev=17;c.t4=c["catch"](4);i=true;a=c.t4;case 21:c.prev=21;c.prev=22;if(!n&&u["return"]){u["return"]()}case 24:c.prev=24;if(!i){c.next=27;break}throw a;case 27:return c.finish(24);case 28:return c.finish(21);case 29:case"end":return c.stop()}},M,this,[[4,17,21,29],[22,,24,28]])})},{key:"vertices_topologically",value:regeneratorRuntime.mark(function G(){var t=this;var r=regeneratorRuntime.mark(function d(t){var r,s,o,f,c,l,h,v,g;return regeneratorRuntime.wrap(function p(y){while(1)switch(y.prev=y.next){case 0:i.push(t);r=i.indexOf(t);if(!(r!==i.length-1)){y.next=5;break}s=i.slice(r+1).reverse();throw new e.CycleError(s);case 5:if(a.has(t)){y.next=36;break}o=true;f=false;c=undefined;y.prev=9;l=u.verticesTo(t)[Symbol.iterator]();case 11:if(o=(h=l.next()).done){y.next=18;break}v=n(h.value,1);g=v[0];return y.delegateYield(d(g),"t5",15);case 15:o=true;y.next=11;break;case 18:y.next=24;break;case 20:y.prev=20;y.t6=y["catch"](9);f=true;c=y.t6;case 24:y.prev=24;y.prev=25;if(!o&&l["return"]){l["return"]()}case 27:y.prev=27;if(!f){y.next=30;break}throw c;case 30:return y.finish(27);case 31:return y.finish(24);case 32:if(!u.hasVertex(t)){y.next=35;break}y.next=35;return[t,u._vertices.get(t)];case 35:a.add(t);case 36:i.pop();case 37:case"end":return y.stop()}},d,this,[[9,20,24,32],[25,,27,31]])});var i,a,u,s,o,f,c,l,h,v;return regeneratorRuntime.wrap(function g(e){while(1)switch(e.prev=e.next){case 0:i=[];a=new Set;u=t;s=true;o=false;f=undefined;e.prev=6;c=t.vertices()[Symbol.iterator]();case 8:if(s=(l=c.next()).done){e.next=16;break}h=n(l.value,1);v=h[0];if(a.has(v)){e.next=13;break}return e.delegateYield(r(v),"t7",13);case 13:s=true;e.next=8;break;case 16:e.next=22;break;case 18:e.prev=18;e.t8=e["catch"](6);o=true;f=e.t8;case 22:e.prev=22;e.prev=23;if(!s&&c["return"]){c["return"]()}case 25:e.prev=25;if(!o){e.next=28;break}throw f;case 28:return e.finish(25);case 29:return e.finish(22);case 30:case"end":return e.stop()}},G,this,[[6,18,22,30],[23,,25,29]])})},{key:"eachVertex",value:function z(e){var t=true;var r=false;var n=undefined;try{for(var a=this.vertices()[Symbol.iterator](),u;!(t=(u=a.next()).done);t=true){var s=u.value;if(e.apply(undefined,i(s))===false){break}}}catch(o){r=true;n=o}finally{try{if(!t&&a["return"]){a["return"]()}}finally{if(r){throw n}}}}},{key:"eachVertexFrom",value:function D(e,t){var r=true;var n=false;var a=undefined;try{for(var u=this.verticesFrom(e)[Symbol.iterator](),s;!(r=(s=u.next()).done);r=true){var o=s.value;if(t.apply(undefined,i(o))===false){break}}}catch(f){n=true;a=f}finally{try{if(!r&&u["return"]){u["return"]()}}finally{if(n){throw a}}}}},{key:"eachVertexTo",value:function W(e,t){var r=true;var n=false;var a=undefined;try{for(var u=this.verticesTo(e)[Symbol.iterator](),s;!(r=(s=u.next()).done);r=true){var o=s.value;if(t.apply(undefined,i(o))===false){break}}}catch(f){n=true;a=f}finally{try{if(!r&&u["return"]){u["return"]()}}finally{if(n){throw a}}}}},{key:"eachEdge",value:function Y(e){var t=true;var r=false;var n=undefined;try{for(var a=this.edges()[Symbol.iterator](),u;!(t=(u=a.next()).done);t=true){var s=u.value;if(e.apply(undefined,i(s))===false){break}}}catch(o){r=true;n=o}finally{try{if(!t&&a["return"]){a["return"]()}}finally{if(r){throw n}}}}},{key:"eachVertexTopologically",value:function J(e){var t=true;var r=false;var n=undefined;try{for(var a=this.vertices_topologically()[Symbol.iterator](),u;!(t=(u=a.next()).done);t=true){var s=u.value;if(e.apply(undefined,i(s))===false){break}}}catch(o){r=true;n=o}finally{try{if(!t&&a["return"]){a["return"]()}}finally{if(r){throw n}}}}},{key:"clearEdges",value:function $(){var e=this;this.eachEdge(function(t,r){e.removeEdge(t,r)})}},{key:"clear",value:function U(){var e=this;this.eachVertex(function(t){e.destroyVertex(t)})}},{key:"hasCycle",value:function H(){var e=this;var t={};var r={};var n=false;var i=function(a){if(t[a]){n=true;return}if(r[a]){return}r[a]=true;t[a]=true;e.eachVertexFrom(a,function(e){i(e);if(n){return false}});t[a]=false};this.eachVertex(function(e){i(e);if(n){return false}});return n}},{key:"hasPath",value:function X(e,t){var r=this;if(!this.hasVertex(e)||!this.hasVertex(t)){return false}var n={};var i=function(e){if(r.hasEdge(e,t)){return true}n[e]=true;var a=false;r.eachVertexFrom(e,function(e){if(!a&&!n[e]&&i(e)){a=true}});delete n[e];return a};return i(e)}},{key:"clone",value:function q(){var t=new e;var r=true;var i=false;var a=undefined;try{for(var u=this.vertices()[Symbol.iterator](),s;!(r=(s=u.next()).done);r=true){var o=n(s.value,2);var f=o[0];var c=o[1];t.addVertex(f,c)}}catch(l){i=true;a=l}finally{try{if(!r&&u["return"]){u["return"]()}}finally{if(i){throw a}}}var h=true;var v=false;var d=undefined;try{for(var g=this.edges()[Symbol.iterator](),p;!(h=(p=g.next()).done);h=true){var y=n(p.value,3);var x=y[0];var w=y[1];var c=y[2];t.addEdge(x,w,c)}}catch(l){v=true;d=l}finally{try{if(!h&&g["return"]){g["return"]()}}finally{if(v){throw d}}}return t}},{key:"transitiveReduction",value:function K(){var e=this.clone();var t=true;var r=false;var i=undefined;try{for(var a=this.vertices()[Symbol.iterator](),u;!(t=(u=a.next()).done);t=true){var s=n(u.value,1);var o=s[0];var f=true;var c=false;var l=undefined;try{for(var h=this.vertices()[Symbol.iterator](),v;!(f=(v=h.next()).done);f=true){var d=n(v.value,1);var g=d[0];if(e.hasEdge(o,g)){var p=true;var y=false;var x=undefined;try{for(var w=this.vertices()[Symbol.iterator](),m;!(p=(m=w.next()).done);p=true){var E=n(m.value,1);var b=E[0];if(e.hasPath(g,b)){e.removeEdge(o,b)}}}catch(k){y=true;x=k}finally{try{if(!p&&w["return"]){w["return"]()}}finally{if(y){throw x}}}}}}catch(k){c=true;l=k}finally{try{if(!f&&h["return"]){h["return"]()}}finally{if(c){throw l}}}}}catch(k){r=true;i=k}finally{try{if(!t&&a["return"]){a["return"]()}}finally{if(r){throw i}}}return e}}]);return e}();e.exports=l;l.VertexExistsError=function(e){function t(e,r){f(this,t);this.vertices={};this.v(e,r)}u(t,e);o(t,{v:{value:function r(e,t){this.vertices[e]=t;this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this.vertices===1?"a vertex":"vertices";this.message="This graph has "+e+" '"+Object.keys(this.vertices).join("', '")+"'"}}});return t}(Error);l.VertexNotExistsError=function(e){function t(e){f(this,t);this.vertices={};this.v(e)}u(t,e);o(t,{v:{value:function r(e){this.vertices[e]=undefined;this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this.vertices===1?"a vertex":"vertices";this.message="This graph does not have "+e+" '"+Object.keys(this.vertices).join("', '")+"'"}}});return t}(Error);l.EdgeExistsError=function(e){function t(e,r,n){f(this,t);this.edges={};this.e(e,r,n)}u(t,e);o(t,{e:{value:function r(e,t,n){this.edges[e]=a({},t,n);this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this;var t=[];Object.keys(this.edges).forEach(function(r){Object.keys(e.edges[r]).forEach(function(e){t.push("('"+r+"', '"+e+"')")})});var r=t.length===1?"an edge":"edges";this.message="This graph has "+r+" "+t.join(", ")}}});return t}(Error);l.EdgeNotExistsError=function(e){function t(e,r){f(this,t);this.edges={};this.e(e,r)}u(t,e);o(t,{e:{value:function r(e,t){this.edges[e]=a({},t,undefined);this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this;var t=[];Object.keys(this.edges).forEach(function(r){Object.keys(e.edges[r]).forEach(function(e){t.push("('"+r+"', '"+e+"')")})});var r=t.length===1?"an edge":"edges";this.message="This graph does not have "+r+" "+t.join(", ")}}});return t}(Error);l.HasConnectedEdgesError=function(e){function t(e){f(this,t);this.message="The '"+e+"' vertex has connected edges";this.key=e}u(t,e);return t}(Error);l.CycleError=function(e){function t(e){f(this,t);this.message="This graph contains a cycle: "+e;this.cycle=e}u(t,e);return t}(Error)},function(e,t,r){(function(e){"use strict";if(e._babelPolyfill){throw new Error("only one instance of babel/polyfill is allowed")}e._babelPolyfill=true;r(4);r(5)}).call(t,function(){return this}())},function(e,t,r){!function(t,r,n){"use strict";var i="Object",a="Function",u="Array",s="String",o="Number",f="RegExp",c="Date",l="Map",h="Set",v="WeakMap",d="WeakSet",g="Symbol",p="Promise",y="Math",x="Arguments",w="prototype",m="constructor",E="toString",b=E+"Tag",k="toLocaleString",_="hasOwnProperty",V="forEach",N="iterator",S="@@"+N,O="process",C="createElement",j=t[a],P=t[i],L=t[u],I=t[s],F=t[o],T=t[f],R=t[c],A=t[l],M=t[h],G=t[v],z=t[d],D=t[g],W=t[y],Y=t.TypeError,J=t.RangeError,$=t.setTimeout,U=t.setImmediate,H=t.clearImmediate,X=t.parseInt,q=t.isFinite,K=t[O],B=K&&K.nextTick,Q=t.document,Z=Q&&Q.documentElement,ee=t.navigator,te=t.define,re=t.console||{},ne=L[w],ie=P[w],ae=j[w],ue=1/0,se=".";function oe(e){return e!==null&&(typeof e=="object"||typeof e=="function")}function fe(e){return typeof e=="function"}var ce=we(/./.test,/\[native code\]\s*\}\s*$/,1);var le=ie[E];function he(e,t,r){if(e&&!Pe(e=r?e:e[w],Lt))Nt(e,Lt,t)}function ve(e){return le.call(e).slice(8,-1)}function de(e){var t,r;return e==n?e===n?"Undefined":"Null":typeof(r=(t=P(e))[Lt])=="string"?r:ve(t)}var ge=ae.call,pe=ae.apply,ye;function xe(){var e=pt(this),t=arguments.length,r=L(t),n=0,i=Mt._,a=false;while(t>n)if((r[n]=arguments[n++])===i)a=true;return function(){var n=this,u=arguments.length,s=0,o=0,f;if(!a&&!u)return me(e,r,n);f=r.slice();if(a)for(;t>s;s++)if(f[s]===i)f[s]=arguments[o++];while(u>o)f.push(arguments[o++]);return me(e,f,n)}}function we(e,t,r){pt(e);if(~r&&t===n)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}function me(e,t,r){var i=r===n;switch(t.length|0){case 0:return i?e():e.call(r);case 1:return i?e(t[0]):e.call(r,t[0]);case 2:return i?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return i?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return i?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3]);case 5:return i?e(t[0],t[1],t[2],t[3],t[4]):e.call(r,t[0],t[1],t[2],t[3],t[4])}return e.apply(r,t)}var Ee=P.create,be=P.getPrototypeOf,ke=P.setPrototypeOf,_e=P.defineProperty,Ve=P.defineProperties,Ne=P.getOwnPropertyDescriptor,Se=P.keys,Oe=P.getOwnPropertyNames,Ce=P.getOwnPropertySymbols,je=P.isFrozen,Pe=we(ge,ie[_],2),Le=P,Ie;function Fe(e){return Le(gt(e))}function Te(e){return e}function Re(){return this}function Ae(e,t){if(Pe(e,t))return e[t]}function Me(e){yt(e);return Ce?Oe(e).concat(Ce(e)):Oe(e)}var Ge=P.assign||function(e,t){var r=P(gt(e)),n=arguments.length,i=1;while(n>i){var a=Le(arguments[i++]),u=Se(a),s=u.length,o=0,f;while(s>o)r[f=u[o++]]=a[f]}return r};function ze(e,t){var r=Fe(e),n=Se(r),i=n.length,a=0,u;while(i>a)if(r[u=n[a++]]===t)return u}function De(e){return I(e).split(",")}var We=ne.push,Ye=ne.unshift,Je=ne.slice,$e=ne.splice,Ue=ne.indexOf,He=ne[V];function Xe(e){var t=e==1,r=e==2,i=e==3,a=e==4,u=e==6,s=e==5||u;return function(o){var f=P(gt(this)),c=arguments[1],l=Le(f),h=we(o,c,3),v=ot(l.length),d=0,g=t?L(v):r?[]:n,p,y;for(;v>d;d++)if(s||d in l){p=l[d];y=h(p,d,f);if(e){if(t)g[d]=y;else if(y)switch(e){case 3:return true;case 5:return p;case 6:return d;case 2:g.push(p)}else if(a)return false}}return u?-1:i||a?a:g}}function qe(e){return function(t){var r=Fe(this),n=ot(r.length),i=ft(arguments[1],n);if(e&&t!=t){for(;n>i;i++)if(ut(r[i]))return e||i}else for(;n>i;i++)if(e||i in r){if(r[i]===t)return e||i}return!e&&-1}}function Ke(e,t){return typeof e=="function"?e:t}var Be=9007199254740991,Qe=W.pow,Ze=W.abs,et=W.ceil,tt=W.floor,rt=W.max,nt=W.min,it=W.random,at=W.trunc||function(e){return(e>0?tt:et)(e)};function ut(e){return e!=e}function st(e){return isNaN(e)?0:at(e)}function ot(e){return e>0?nt(st(e),Be):0}function ft(e,t){var e=st(e);return e<0?rt(e+t,0):nt(e,t)}function ct(e){return e>9?e:"0"+e}function lt(e,t,r){var n=oe(t)?function(e){return t[e]}:t;return function(t){return I(r?t:this).replace(e,n)}}function ht(e){return function(t){var r=I(gt(this)),i=st(t),a=r.length,u,s;if(i<0||i>=a)return e?"":n;u=r.charCodeAt(i);return u<55296||u>56319||i+1===a||(s=r.charCodeAt(i+1))<56320||s>57343?e?r.charAt(i):u:e?r.slice(i,i+2):(u-55296<<10)+(s-56320)+65536}}var vt="Reduce of empty object with no initial value";function dt(e,t,r){if(!e)throw Y(r?t+r:t)}function gt(e){if(e==n)throw Y("Function called on null or undefined");return e}function pt(e){dt(fe(e),e," is not a function!");return e}function yt(e){dt(oe(e),e," is not an object!");return e}function xt(e,t,r){dt(e instanceof t,r,": use the 'new' operator!")}function wt(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}function mt(e,t,r){e[t]=r;return e}function Et(e){return _t?function(t,r,n){return _e(t,r,wt(e,n))}:mt}function bt(e){return g+"("+e+")_"+(++Vt+it())[E](36)}function kt(e,t){return D&&D[e]||(t?D:Ot)(g+se+e)}var _t=!!function(){try{return _e({},"a",{get:function(){return 2}}).a==2}catch(e){}}(),Vt=0,Nt=Et(1),St=D?mt:Nt,Ot=D||bt;function Ct(e,t){for(var r in t)Nt(e,r,t[r]);return e}var jt=kt("unscopables"),Pt=ne[jt]||{},Lt=kt(b),It=kt("species"),Ft;function Tt(e){if(_t&&(r||!ce(e)))_e(e,It,{configurable:true,get:Re})}var Rt=ve(K)==O,At={},Mt=r?t:At,Gt=t.core,zt,Dt=1,Wt=2,Yt=4,Jt=8,$t=16,Ut=32;function Ht(e,n,i){var a,u,s,o,f=e&Wt,c=f?t:e&Yt?t[n]:(t[n]||ie)[w],l=f?At:At[n]||(At[n]={});if(f)i=n;for(a in i){u=!(e&Dt)&&c&&a in c&&(!fe(c[a])||ce(c[a]));s=(u?c:i)[a];if(!r&&f&&!fe(c[a]))o=i[a];else if(e&$t&&u)o=we(s,t);else if(e&Ut&&!r&&c[a]==s){o=function(e){return this instanceof s?new s(e):s(e)};o[w]=s[w]}else o=e&Jt&&fe(s)?we(ge,s):s;if(r&&c&&!u){if(f)c[a]=s;else delete c[a]&&Nt(c,a,s)}if(l[a]!=s)Nt(l,a,o)}}if(typeof e!="undefined"&&e.exports)e.exports=At;else if(fe(te)&&te.amd)te(function(){return At});else zt=true;if(zt||r){At.noConflict=function(){t.core=Gt;return At};t.core=At}Ft=kt(N);var Xt=Ot("iter"),qt=1,Kt=2,Bt={},Qt={},Zt="keys"in ne&&!("next"in[].keys());er(Qt,Re);function er(e,t){Nt(e,Ft,t);S in ne&&Nt(e,S,t)}function tr(e,t,r,n){e[w]=Ee(n||Qt,{next:wt(1,r)});he(e,t+" Iterator")}function rr(e,t,n,i){var a=e[w],u=Ae(a,Ft)||Ae(a,S)||i&&Ae(a,i)||n;if(r){er(a,u);if(u!==n){var s=be(u.call(new e));he(s,t+" Iterator",true);Pe(a,S)&&er(s,Re)}}Bt[t]=u;Bt[t+" Iterator"]=Re;return u}function nr(e,t,r,n,i,a){function u(e){return function(){return new r(this,e)}}tr(r,t,n);var s=u(qt+Kt),o=u(Kt);if(i==Kt)o=rr(e,t,o,"values");else s=rr(e,t,s,"entries");if(i){Ht(Jt+Dt*Zt,t,{entries:s,keys:a?o:u(qt),values:o})}}function ir(e,t){return{value:t,done:!!e}}function ar(e){var r=P(e),n=t[g],i=(n&&n[N]||S)in r;return i||Ft in r||Pe(Bt,de(r))}function ur(e){var r=t[g],n=e[r&&r[N]||S],i=n||e[Ft]||Bt[de(e)];return yt(i.call(e))}function sr(e,t,r){return r?me(e,t):e(t)}function or(e){var t=true;var r={next:function(){throw 1},"return":function(){t=false}};r[Ft]=Re;try{e(r)}catch(n){}return t}function fr(e){var t=e["return"];if(t!==n)t.call(e)}function cr(e,t){try{e(t)}catch(r){fr(t);throw r}}function lr(e,t,r,n){cr(function(e){var i=we(r,n,t?2:1),a;while(!(a=e.next()).done)if(sr(i,a.value,t)===false){return fr(e)}},ur(e))}!function(e,r,n,a){if(!ce(D)){D=function(t){dt(!(this instanceof D),g+" is not a "+m);var r=bt(t),i=St(Ee(D[w]),e,r);n[r]=i;_t&&a&&_e(ie,r,{configurable:true,set:function(e){Nt(this,r,e)}});return i};Nt(D[w],E,function(){return this[e]})}Ht(Wt+Ut,{Symbol:D});var u={"for":function(e){return Pe(r,e+="")?r[e]:r[e]=D(e)},iterator:Ft||kt(N),keyFor:xe.call(ze,r),species:It,toStringTag:Lt=kt(b,true),unscopables:jt,pure:Ot,set:St,useSetter:function(){a=true},useSimple:function(){a=false}};He.call(De("hasInstance,isConcatSpreadable,match,replace,search,split,toPrimitive"),function(e){u[e]=kt(e)});Ht(Yt,g,u);he(D,g);Ht(Yt+Dt*!ce(D),i,{getOwnPropertyNames:function(e){var t=Oe(Fe(e)),r=[],i,a=0;while(t.length>a)Pe(n,i=t[a++])||r.push(i);return r},getOwnPropertySymbols:function(e){var t=Oe(Fe(e)),r=[],i,a=0;while(t.length>a)Pe(n,i=t[a++])&&r.push(n[i]);return r}});he(W,y,true);he(t.JSON,"JSON",true)}(Ot("tag"),{},{},true);!function(){var e={assign:Ge,is:function(e,t){return e===t?e!==0||1/e===1/t:e!=e&&t!=t}};"__proto__"in ie&&function(t,r){try{r=we(ge,Ne(ie,"__proto__").set,2);r({},ne)}catch(n){t=true}e.setPrototypeOf=ke=ke||function(e,n){yt(e);dt(n===null||oe(n),n,": can't set as prototype!");if(t)e.__proto__=n;else r(e,n);return e}}();Ht(Yt,i,e)}();!function(e){e[Lt]=se;if(ve(e)!=se)Nt(ie,E,function(){return"[object "+de(this)+"]"})}({});!function(){function e(e,t){var r=P[e],n=At[i][e],a=0,u={};if(!n||ce(n)){u[e]=t==1?function(e){return oe(e)?r(e):e}:t==2?function(e){return oe(e)?r(e):true}:t==3?function(e){return oe(e)?r(e):false}:t==4?function(e,t){return r(Fe(e),t)}:function(e){return r(Fe(e))};try{r(se)}catch(s){a=1}Ht(Yt+Dt*a,i,u)}}e("freeze",1);e("seal",1);e("preventExtensions",1);e("isFrozen",2);e("isSealed",2);e("isExtensible",3);e("getOwnPropertyDescriptor",4);e("getPrototypeOf");e("keys");e("getOwnPropertyNames")}();!function(e){e in ae||_t&&_e(ae,e,{configurable:true,get:function(){var t=I(this).match(/^\s*function ([^ (]*)/),r=t?t[1]:"";Pe(this,e)||_e(this,e,wt(5,r));return r},set:function(t){Pe(this,e)||_e(this,e,wt(0,t))}})}("name");F("0o1")&&F("0b1")||function(e,r){function n(e){if(oe(e))e=i(e);if(typeof e=="string"&&e.length>2&&e.charCodeAt(0)==48){var t=false;switch(e.charCodeAt(1)){case 66:case 98:t=true;case 79:case 111:return X(e.slice(2),t?2:8)}}return+e}function i(e){var t,r;if(fe(t=e.valueOf)&&!oe(r=t.call(e)))return r;if(fe(t=e[E])&&!oe(r=t.call(e)))return r;throw Y("Can't convert object to number")}F=function a(t){return this instanceof a?new e(n(t)):n(t)};He.call(_t?Oe(e):De("MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY"),function(t){t in F||_e(F,t,Ne(e,t))});F[w]=r;r[m]=F;Nt(t,o,F)}(F,F[w]);!function(e){Ht(Yt,o,{EPSILON:Qe(2,-52),isFinite:function(e){return typeof e=="number"&&q(e)},isInteger:e,isNaN:ut,isSafeInteger:function(t){return e(t)&&Ze(t)<=Be},MAX_SAFE_INTEGER:Be,MIN_SAFE_INTEGER:-Be,parseFloat:parseFloat,parseInt:X})}(F.isInteger||function(e){return!oe(e)&&q(e)&&tt(e)===e});!function(){var e=W.E,t=W.exp,r=W.log,n=W.sqrt,i=W.sign||function(e){return(e=+e)==0||e!=e?e:e<0?-1:1};function a(e){return!q(e=+e)||e==0?e:e<0?-a(-e):r(e+n(e*e+1))}function u(e){return(e=+e)==0?e:e>-1e-6&&e<1e-6?e+e*e/2:t(e)-1}Ht(Yt,y,{acosh:function(t){return(t=+t)<1?NaN:q(t)?r(t/e+n(t+1)*n(t-1)/e)+1:t},asinh:a,atanh:function(e){return(e=+e)==0?e:r((1+e)/(1-e))/2},cbrt:function(e){return i(e=+e)*Qe(Ze(e),1/3)},clz32:function(e){return(e>>>=0)?32-e[E](2).length:32},cosh:function(e){return(t(e=+e)+t(-e))/2},expm1:u,fround:function(e){return new Float32Array([e])[0]},hypot:function(e,t){var r=0,i=arguments.length,a=i,u=L(i),s=-ue,o;while(i--){o=u[i]=+arguments[i];if(o==ue||o==-ue)return ue;if(o>s)s=o}s=o||1;while(a--)r+=Qe(u[a]/s,2);return s*n(r)},imul:function(e,t){var r=65535,n=+e,i=+t,a=r&n,u=r&i;return 0|a*u+((r&n>>>16)*u+a*(r&i>>>16)<<16>>>0)},log1p:function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:r(1+e)},log10:function(e){return r(e)/W.LN10},log2:function(e){return r(e)/W.LN2},sign:i,sinh:function(r){return Ze(r=+r)<1?(u(r)-u(-r))/2:(t(r-1)-t(-r-1))*(e/2)},tanh:function(e){var r=u(e=+e),n=u(-e);return r==ue?1:n==ue?-1:(r-n)/(t(e)+t(-e))},trunc:at})}();!function(e){function t(e){if(ve(e)==f)throw Y()}Ht(Yt,s,{fromCodePoint:function(t){var r=[],n=arguments.length,i=0,a;while(n>i){a=+arguments[i++];if(ft(a,1114111)!==a)throw J(a+" is not a valid code point");r.push(a<65536?e(a):e(((a-=65536)>>10)+55296,a%1024+56320))}return r.join("")},raw:function(e){var t=Fe(e.raw),r=ot(t.length),n=arguments.length,i=[],a=0;while(r>a){i.push(I(t[a++]));if(a<n)i.push(I(arguments[a]))}return i.join("")}});Ht(Jt,s,{codePointAt:ht(false),endsWith:function(e){t(e);var r=I(gt(this)),i=arguments[1],a=ot(r.length),u=i===n?a:nt(ot(i),a);e+="";return r.slice(u-e.length,u)===e},includes:function(e){t(e);return!!~I(gt(this)).indexOf(e,arguments[1])},repeat:function(e){var t=I(gt(this)),r="",n=st(e);if(0>n||n==ue)throw J("Count can't be negative");for(;n>0;(n>>>=1)&&(t+=t))if(n&1)r+=t;return r},startsWith:function(e){t(e);var r=I(gt(this)),n=ot(nt(arguments[1],r.length));e+="";return r.slice(n,n+e.length)===e}})}(I.fromCharCode);!function(){Ht(Yt+Dt*or(L.from),u,{from:function(e){var t=P(gt(e)),r=arguments[1],i=r!==n,a=i?we(r,arguments[2],2):n,u=0,s,o,f;if(ar(t)){o=new(Ke(this,L));cr(function(e){for(;!(f=e.next()).done;u++){o[u]=i?a(f.value,u):f.value}},ur(t))}else{o=new(Ke(this,L))(s=ot(t.length));for(;s>u;u++){o[u]=i?a(t[u],u):t[u]}}o.length=u;return o}});Ht(Yt,u,{of:function(){var e=0,t=arguments.length,r=new(Ke(this,L))(t);while(t>e)r[e]=arguments[e++];r.length=t;return r}});Tt(L)}();!function(){Ht(Jt,u,{copyWithin:function(e,t){var r=P(gt(this)),i=ot(r.length),a=ft(e,i),u=ft(t,i),s=arguments[2],o=s===n?i:ft(s,i),f=nt(o-u,i-a),c=1;if(u<a&&a<u+f){c=-1;u=u+f-1;a=a+f-1}while(f-->0){if(u in r)r[a]=r[u];else delete r[a];a+=c;u+=c}return r},fill:function(e){var t=P(gt(this)),r=ot(t.length),i=ft(arguments[1],r),a=arguments[2],u=a===n?r:ft(a,r);while(u>i)t[i++]=e;return t},find:Xe(5),findIndex:Xe(6)});if(r){He.call(De("find,findIndex,fill,copyWithin,entries,keys,values"),function(e){Pt[e]=true});jt in ne||Nt(ne,jt,Pt)}}();!function(e){nr(L,u,function(e,t){St(this,Xt,{o:Fe(e),i:0,k:t})},function(){var e=this[Xt],t=e.o,r=e.k,i=e.i++;if(!t||i>=t.length){e.o=n;return ir(1)}if(r==qt)return ir(0,i);if(r==Kt)return ir(0,t[i]);return ir(0,[i,t[i]])},Kt);Bt[x]=Bt[u];nr(I,s,function(e){St(this,Xt,{o:I(e),i:0})},function(){var t=this[Xt],r=t.o,n=t.i,i;if(n>=r.length)return ir(1);i=e.call(r,n);t.i+=i.length;return ir(0,i)})}(ht(true));_t&&!function(e,r){if(!function(){try{return T(/a/g,"i")=="/a/i"}catch(e){}}()){T=function i(e,t){
return new r(ve(e)==f&&t!==n?e.source:e,t)};He.call(Oe(r),function(e){e in T||_e(T,e,{configurable:true,get:function(){return r[e]},set:function(t){r[e]=t}})});e[m]=T;T[w]=e;Nt(t,f,T)}if(/./g.flags!="g")_e(e,"flags",{configurable:true,get:lt(/^.*\/(\w*)$/,"$1")});Tt(T)}(T[w],T);fe(U)&&fe(H)||function(e){var r=t.postMessage,n=t.addEventListener,i=t.MessageChannel,a=0,u={},s,o,f;U=function(e){var t=[],r=1;while(arguments.length>r)t.push(arguments[r++]);u[++a]=function(){me(fe(e)?e:j(e),t)};s(a);return a};H=function(e){delete u[e]};function c(e){if(Pe(u,e)){var t=u[e];delete u[e];t()}}function l(e){c(e.data)}if(Rt){s=function(e){B(xe.call(c,e))}}else if(n&&fe(r)&&!t.importScripts){s=function(e){r(e,"*")};n("message",l,false)}else if(fe(i)){o=new i;f=o.port2;o.port1.onmessage=l;s=we(f.postMessage,f,1)}else if(Q&&e in Q[C]("script")){s=function(t){Z.appendChild(Q[C]("script"))[e]=function(){Z.removeChild(this);c(t)}}}else{s=function(e){$(c,0,e)}}}("onreadystatechange");Ht(Wt+$t,{setImmediate:U,clearImmediate:H});!function(e,t){fe(e)&&fe(e.resolve)&&e.resolve(t=new e(function(){}))==t||function(t,r){function i(e){var t;if(oe(e))t=e.then;return fe(t)?t:false}function a(e){var t=e[r],n=t.c,i=0,u;if(t.h)return true;while(n.length>i){u=n[i++];if(u.fail||a(u.P))return true}}function u(e,r){var n=e.c;if(r||n.length)t(function(){var t=e.p,u=e.v,s=e.s==1,o=0;if(r&&!a(t)){$(function(){if(!a(t)){if(Rt){if(!K.emit("unhandledRejection",u,t)){}}else if(fe(re.error)){re.error("Unhandled promise rejection",u)}}},1e3)}else while(n.length>o)!function(t){var r=s?t.ok:t.fail,n,a;try{if(r){if(!s)e.h=true;n=r===true?u:r(u);if(n===t.P){t.rej(Y(p+"-chain cycle"))}else if(a=i(n)){a.call(n,t.res,t.rej)}else t.res(n)}else t.rej(u)}catch(o){t.rej(o)}}(n[o++]);n.length=0})}function s(e){var t=this,r,n;if(t.d)return;t.d=true;t=t.r||t;try{if(r=i(e)){n={r:t,d:false};r.call(e,we(s,n,1),we(o,n,1))}else{t.v=e;t.s=1;u(t)}}catch(a){o.call(n||{r:t,d:false},a)}}function o(e){var t=this;if(t.d)return;t.d=true;t=t.r||t;t.v=e;t.s=2;u(t,true)}function f(e){var t=yt(e)[It];return t!=n?t:e}e=function(t){pt(t);xt(this,e,p);var i={p:this,c:[],s:0,d:false,v:n,h:false};Nt(this,r,i);try{t(we(s,i,1),we(o,i,1))}catch(a){o.call(i,a)}};Ct(e[w],{then:function(t,i){var a=yt(yt(this)[m])[It];var s={ok:fe(t)?t:true,fail:fe(i)?i:false},o=s.P=new(a!=n?a:e)(function(e,t){s.res=pt(e);s.rej=pt(t)}),f=this[r];f.c.push(s);f.s&&u(f);return o},"catch":function(e){return this.then(n,e)}});Ct(e,{all:function(e){var t=f(this),r=[];return new t(function(n,i){lr(e,false,We,r);var a=r.length,u=L(a);if(a)He.call(r,function(e,r){t.resolve(e).then(function(e){u[r]=e;--a||n(u)},i)});else n(u)})},race:function(e){var t=f(this);return new t(function(r,n){lr(e,false,function(e){t.resolve(e).then(r,n)})})},reject:function(e){return new(f(this))(function(t,r){r(e)})},resolve:function(e){return oe(e)&&r in e&&be(e)===this[w]?e:new(f(this))(function(t,r){t(e)})}})}(B||U,Ot("record"));he(e,p);Tt(e);Ht(Wt+Dt*!ce(e),{Promise:e})}(t[p]);!function(){var e=Ot("uid"),t=Ot("O1"),i=Ot("weak"),a=Ot("leak"),u=Ot("last"),s=Ot("first"),o=_t?Ot("size"):"size",f=0,c={};function g(i,a,c,l,h,v){var d=h?"set":"add",g=i&&i[w],p={};function y(e,t){if(t!=n)lr(t,h,e[d],e);return e}function x(e,t){var n=g[e];if(r)g[e]=function(e,r){var i=n.call(this,e===0?0:e,r);return t?this:i}}if(!ce(i)||!(v||!Zt&&Pe(g,V)&&Pe(g,"entries"))){i=v?function(t){xt(this,i,a);St(this,e,f++);y(this,t)}:function(e){var r=this;xt(r,i,a);St(r,t,Ee(null));St(r,o,0);St(r,u,n);St(r,s,n);y(r,e)};Ct(Ct(i[w],c),l);v||!_t||_e(i[w],"size",{get:function(){return gt(this[o])}})}else{var E=i,b=new i,k=b[d](v?{}:-0,1),_;if(or(function(e){new i(e)})){i=function(e){xt(this,i,a);return y(new E,e)};i[w]=g;if(r)g[m]=i}v||b[V](function(e,t){_=1/t===-ue});if(_){x("delete");x("has");h&&x("get")}if(_||k!==b)x(d,true)}he(i,a);Tt(i);p[a]=i;Ht(Wt+Ut+Dt*!ce(i),p);v||nr(i,a,function(e,t){St(this,Xt,{o:e,k:t})},function(){var e=this[Xt],t=e.k,r=e.l;while(r&&r.r)r=r.p;if(!e.o||!(e.l=r=r?r.n:e.o[s])){e.o=n;return ir(1)}if(t==qt)return ir(0,r.k);if(t==Kt)return ir(0,r.v);return ir(0,[r.k,r.v])},h?qt+Kt:Kt,!h);return i}function p(t,r){if(!oe(t))return(typeof t=="string"?"S":"P")+t;if(je(t))return"F";if(!Pe(t,e)){if(!r)return"E";Nt(t,e,++f)}return"O"+t[e]}function y(e,r){var n=p(r),i;if(n!="F")return e[t][n];for(i=e[s];i;i=i.n){if(i.k==r)return i}}function x(e,r,i){var a=y(e,r),f,c;if(a)a.v=i;else{e[u]=a={i:c=p(r,true),k:r,v:i,p:f=e[u],n:n,r:false};if(!e[s])e[s]=a;if(f)f.n=a;e[o]++;if(c!="F")e[t][c]=a}return e}var E={clear:function(){for(var e=this,r=e[t],i=e[s];i;i=i.n){i.r=true;if(i.p)i.p=i.p.n=n;delete r[i.i]}e[s]=e[u]=n;e[o]=0},"delete":function(e){var r=this,n=y(r,e);if(n){var i=n.n,a=n.p;delete r[t][n.i];n.r=true;if(a)a.n=i;if(i)i.p=a;if(r[s]==n)r[s]=i;if(r[u]==n)r[u]=a;r[o]--}return!!n},forEach:function(e){var t=we(e,arguments[1],3),r;while(r=r?r.n:this[s]){t(r.v,r.k,this);while(r&&r.r)r=r.p}},has:function(e){return!!y(this,e)}};A=g(A,l,{get:function(e){var t=y(this,e);return t&&t.v},set:function(e,t){return x(this,e===0?0:e,t)}},E,true);M=g(M,h,{add:function(e){return x(this,e=e===0?0:e,e)}},E);function b(t,r,n){if(je(yt(r)))k(t).set(r,n);else{Pe(r,i)||Nt(r,i,{});r[i][t[e]]=n}return t}function k(e){return e[a]||Nt(e,a,new A)[a]}var _={"delete":function(t){if(!oe(t))return false;if(je(t))return k(this)["delete"](t);return Pe(t,i)&&Pe(t[i],this[e])&&delete t[i][this[e]]},has:function(t){if(!oe(t))return false;if(je(t))return k(this).has(t);return Pe(t,i)&&Pe(t[i],this[e])}};G=g(G,v,{get:function(t){if(oe(t)){if(je(t))return k(this).get(t);if(Pe(t,i))return t[i][this[e]]}},set:function(e,t){return b(this,e,t)}},_,true,true);if(r&&(new G).set(P.freeze(c),7).get(c)!=7){He.call(De("delete,has,get,set"),function(e){var t=G[w][e];G[w][e]=function(r,n){if(oe(r)&&je(r)){var i=k(this)[e](r,n);return e=="set"?this:i}return t.call(this,r,n)}})}z=g(z,d,{add:function(e){return b(this,e,true)}},_,false,true)}();!function(){function e(e){var t=[],r;for(r in e)t.push(r);St(this,Xt,{o:e,a:t,i:0})}tr(e,i,function(){var e=this[Xt],t=e.a,r;do{if(e.i>=t.length)return ir(1)}while(!((r=t[e.i++])in e.o));return ir(0,r)});function t(e){return function(t){yt(t);try{return e.apply(n,arguments),true}catch(r){return false}}}function r(e,t){var i=arguments.length<3?e:arguments[2],a=Ne(yt(e),t),u;if(a)return Pe(a,"value")?a.value:a.get===n?n:a.get.call(i);return oe(u=be(e))?r(u,t,i):n}function a(e,t,r){var i=arguments.length<4?e:arguments[3],u=Ne(yt(e),t),s,o;if(!u){if(oe(o=be(e))){return a(o,t,r,i)}u=wt(0)}if(Pe(u,"value")){if(u.writable===false||!oe(i))return false;s=Ne(i,t)||wt(0);s.value=r;return _e(i,t,s),true}return u.set===n?false:(u.set.call(i,r),true)}var u=P.isExtensible||Te;var s={apply:we(ge,pe,3),construct:function(e,t){var r=pt(arguments.length<3?e:arguments[2])[w],n=Ee(oe(r)?r:ie),i=pe.call(e,n,t);return oe(i)?i:n},defineProperty:t(_e),deleteProperty:function(e,t){var r=Ne(yt(e),t);return r&&!r.configurable?false:delete e[t]},enumerate:function(t){return new e(yt(t))},get:r,getOwnPropertyDescriptor:function(e,t){return Ne(yt(e),t)},getPrototypeOf:function(e){return be(yt(e))},has:function(e,t){return t in e},isExtensible:function(e){return!!u(yt(e))},ownKeys:Me,preventExtensions:t(P.preventExtensions||Te),set:a};if(ke)s.setPrototypeOf=function(e,t){return ke(yt(e),t),true};Ht(Wt,{Reflect:{}});Ht(Yt,"Reflect",s)}();!function(){Ht(Jt,u,{includes:qe(true)});Ht(Jt,s,{at:ht(true)});function e(e){return function(t){var r=Fe(t),n=Se(t),i=n.length,a=0,u=L(i),s;if(e)while(i>a)u[a]=[s=n[a++],r[s]];else while(i>a)u[a]=r[n[a++]];return u}}Ht(Yt,i,{getOwnPropertyDescriptors:function(e){var t=Fe(e),r={};He.call(Me(t),function(e){_e(r,e,wt(0,Ne(t,e)))});return r},values:e(false),entries:e(true)});Ht(Yt,f,{escape:lt(/([\\\-[\]{}()*+?.,^$|])/g,"\\$1",true)})}();!function(e){ye=kt(e+"Get",true);var t=kt(e+h,true),r=kt(e+"Delete",true);Ht(Yt,g,{referenceGet:ye,referenceSet:t,referenceDelete:r});Nt(ae,ye,Re);function n(e){if(e){var n=e[w];Nt(n,ye,n.get);Nt(n,t,n.set);Nt(n,r,n["delete"])}}n(A);n(G)}("reference");!function(e){function t(t,r){He.call(De(t),function(t){if(t in ne)e[t]=we(ge,ne[t],r)})}t("pop,reverse,shift,keys,values,entries",1);t("indexOf,every,some,forEach,map,filter,find,findIndex,includes",3);t("join,slice,concat,push,splice,unshift,sort,lastIndexOf,"+"reduce,reduceRight,copyWithin,fill,turn");Ht(Yt,u,e)}({});!function(e){if(r&&e&&!(Ft in e[w])){Nt(e[w],Ft,Bt[u])}Bt.NodeList=Bt[u]}(t.NodeList)}(typeof self!="undefined"&&self.Math===Math?self:Function("return this")(),true)},function(e,t,r){(function(t){!function(t){"use strict";var r=Object.prototype.hasOwnProperty;var n;var i=typeof Symbol==="function"&&Symbol.iterator||"@@iterator";var a=typeof e==="object";var u=t.regeneratorRuntime;if(u){if(a){e.exports=u}return}u=t.regeneratorRuntime=a?e.exports:{};function s(e,t,r,n){return new y(e,t,r||null,n||[])}u.wrap=s;function o(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(n){return{type:"throw",arg:n}}}var f="suspendedStart";var c="suspendedYield";var l="executing";var h="completed";var v={};function d(){}function g(){}var p=g.prototype=y.prototype;d.prototype=p.constructor=g;g.constructor=d;d.displayName="GeneratorFunction";u.isGeneratorFunction=function(e){var t=typeof e==="function"&&e.constructor;return t?t===d||(t.displayName||t.name)==="GeneratorFunction":false};u.mark=function(e){e.__proto__=g;e.prototype=Object.create(p);return e};u.async=function(e,t,r,n){return new Promise(function(i,a){var u=s(e,t,r,n);var f=l.bind(u.next);var c=l.bind(u["throw"]);function l(e){var t=o(this,null,e);if(t.type==="throw"){a(t.arg);return}var r=t.arg;if(r.done){i(r.value)}else{Promise.resolve(r.value).then(f,c)}}f()})};function y(e,t,r,i){var a=t?Object.create(t.prototype):this;var u=new m(i);var s=f;function d(t,i){if(s===l){throw new Error("Generator is already running")}if(s===h){return b()}while(true){var a=u.delegate;if(a){var d=o(a.iterator[t],a.iterator,i);if(d.type==="throw"){u.delegate=null;t="throw";i=d.arg;continue}t="next";i=n;var g=d.arg;if(g.done){u[a.resultName]=g.value;u.next=a.nextLoc}else{s=c;return g}u.delegate=null}if(t==="next"){if(s===f&&typeof i!=="undefined"){throw new TypeError("attempt to send "+JSON.stringify(i)+" to newborn generator")}if(s===c){u.sent=i}else{delete u.sent}}else if(t==="throw"){if(s===f){s=h;throw i}if(u.dispatchException(i)){t="next";i=n}}else if(t==="return"){u.abrupt("return",i)}s=l;var d=o(e,r,u);if(d.type==="normal"){s=u.done?h:c;var g={value:d.arg,done:u.done};if(d.arg===v){if(u.delegate&&t==="next"){i=n}}else{return g}}else if(d.type==="throw"){s=h;if(t==="next"){u.dispatchException(d.arg)}else{i=d.arg}}}}a.next=d.bind(a,"next");a["throw"]=d.bind(a,"throw");a["return"]=d.bind(a,"return");return a}p[i]=function(){return this};p.toString=function(){return"[object Generator]"};function x(e){var t={tryLoc:e[0]};if(1 in e){t.catchLoc=e[1]}if(2 in e){t.finallyLoc=e[2];t.afterLoc=e[3]}this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal";delete t.arg;e.completion=t}function m(e){this.tryEntries=[{tryLoc:"root"}];e.forEach(x,this);this.reset()}u.keys=function(e){var t=[];for(var r in e){t.push(r)}t.reverse();return function n(){while(t.length){var r=t.pop();if(r in e){n.value=r;n.done=false;return n}}n.done=true;return n}};function E(e){if(e){var t=e[i];if(t){return t.call(e)}if(typeof e.next==="function"){return e}if(!isNaN(e.length)){var a=-1,u=function s(){while(++a<e.length){if(r.call(e,a)){s.value=e[a];s.done=false;return s}}s.value=n;s.done=true;return s};return u.next=u}}return{next:b}}u.values=E;function b(){return{value:n,done:true}}m.prototype={constructor:m,reset:function(){this.prev=0;this.next=0;this.sent=n;this.done=false;this.delegate=null;this.tryEntries.forEach(w);for(var e=0,t;r.call(this,t="t"+e)||e<20;++e){this[t]=null}},stop:function(){this.done=true;var e=this.tryEntries[0];var t=e.completion;if(t.type==="throw"){throw t.arg}return this.rval},dispatchException:function(e){if(this.done){throw e}var t=this;function n(r,n){u.type="throw";u.arg=e;t.next=r;return!!n}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i];var u=a.completion;if(a.tryLoc==="root"){return n("end")}if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc");var o=r.call(a,"finallyLoc");if(s&&o){if(this.prev<a.catchLoc){return n(a.catchLoc,true)}else if(this.prev<a.finallyLoc){return n(a.finallyLoc)}}else if(s){if(this.prev<a.catchLoc){return n(a.catchLoc,true)}}else if(o){if(this.prev<a.finallyLoc){return n(a.finallyLoc)}}else{throw new Error("try statement without catch or finally")}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}if(a&&(e==="break"||e==="continue")&&a.tryLoc<=t&&t<a.finallyLoc){a=null}var u=a?a.completion:{};u.type=e;u.arg=t;if(a){this.next=a.finallyLoc}else{this.complete(u)}return v},complete:function(e,t){if(e.type==="throw"){throw e.arg}if(e.type==="break"||e.type==="continue"){this.next=e.arg}else if(e.type==="return"){this.rval=e.arg;this.next="end"}else if(e.type==="normal"&&t){this.next=t}return v},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e){return this.complete(r.completion,r.afterLoc)}}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(n.type==="throw"){var i=n.arg;w(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){this.delegate={iterator:E(e),resultName:t,nextLoc:r};return v}}}(typeof t==="object"?t:typeof window==="object"?window:this)}).call(t,function(){return this}())}])});
(function e(t,r){if(typeof exports==="object"&&typeof module==="object")module.exports=r();else if(typeof define==="function"&&define.amd)define(r);else if(typeof exports==="object")exports["JsGraph"]=r();else t["JsGraph"]=r()})(this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={exports:{},id:n,loaded:false};e[n].call(i.exports,i,i.exports,r);i.loaded=true;return i.exports}r.m=e;r.c=t;r.p="";return r(0)}([function(e,t,r){r(1);e.exports=r(2)},function(e,t,r){e.exports=r(3)},function(e,t,r){"use strict";var n=function(e,t){if(Array.isArray(e)){return e}else if(Symbol.iterator in Object(e)){var r=[];for(var n=e[Symbol.iterator](),i;!(i=n.next()).done;){r.push(i.value);if(t&&r.length===t)break}return r}else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}};var i=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}else{return Array.from(e)}};var a=function(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})};var u=function(e,t){if(typeof t!=="function"&&t!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof t)}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(t)e.__proto__=t};var s=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.configurable=true;if(n.value)n.writable=true;Object.defineProperty(e,n.key,n)}}return function(t,r,n){if(r)e(t.prototype,r);if(n)e(t,n);return t}}();var o=function(){function e(e,t){for(var r in t){var n=t[r];n.configurable=true;if(n.value)n.writable=true}Object.defineProperties(e,t)}return function(t,r,n){if(r)e(t.prototype,r);if(n)e(t,n);return t}}();var f=function(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}};var c=function(){function e(){f(this,e);this._callbacks=new Set}o(e,{add:{value:function t(e){var t=this;if(!this._callbacks.has(e)){this._callbacks.add(e)}return function(){t._callbacks["delete"](e)}}},fire:{value:function r(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++){t[r]=arguments[r]}var n=true;var i=false;var a=undefined;try{for(var u=this._callbacks[Symbol.iterator](),s;!(n=(s=u.next()).done);n=true){var o=s.value;o.apply(undefined,t)}}catch(f){i=true;a=f}finally{try{if(!n&&u["return"]){u["return"]()}}finally{if(i){throw a}}}}}});return e}();var l=function(){function e(){f(this,e);this._vertices=new Map;this._edges=new Map;this._reverseEdges=new Map;this._vertexCount=0;this._edgeCount=0;this._addVertexCallbacks=new c;this._removeVertexCallbacks=new c;this._addEdgeCallbacks=new c;this._removeEdgeCallbacks=new c}s(e,[{key:"onAddVertex",value:function t(e){return this._addVertexCallbacks.add(e)}},{key:"onRemoveVertex",value:function r(e){return this._removeVertexCallbacks.add(e)}},{key:"addNewVertex",value:function a(t,r){if(this.hasVertex(t)){throw new e.VertexExistsError(t,this._vertices.get(t))}this._vertices.set(t,r);this._edges.set(t,new Map);this._reverseEdges.set(t,new Set);this._vertexCount+=1;this._addVertexCallbacks.fire(t,r)}},{key:"setVertex",value:function u(t,r){if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}this._vertices.set(t,r)}},{key:"ensureVertex",value:function o(e,t){if(!this.hasVertex(e)){this.addNewVertex(e,t)}}},{key:"addVertex",value:function l(e,t){if(this.hasVertex(e)){this.setVertex(e,t)}else{this.addNewVertex(e,t)}}},{key:"removeExistingVertex",value:function h(t){if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}if(this._edges.get(t).size>0){throw new e.HasConnectedEdgesError(t)}if(this._reverseEdges.get(t).size>0){throw new e.HasConnectedEdgesError(t)}var r=this._vertices.get(t);this._vertices["delete"](t);this._vertexCount-=1;this._removeVertexCallbacks.fire(t,r)}},{key:"destroyExistingVertex",value:function v(t){var r=this;if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}this.eachVertexFrom(t,function(e){r.removeEdge(t,e)});this.eachVertexTo(t,function(e){r.removeEdge(e,t)});this.removeExistingVertex(t)}},{key:"removeVertex",value:function d(e){if(this.hasVertex(e)){this.removeExistingVertex(e)}}},{key:"destroyVertex",value:function g(e){if(this.hasVertex(e)){this.destroyExistingVertex(e)}}},{key:"vertexCount",value:function p(){return this._vertexCount}},{key:"hasVertex",value:function y(e){return this._vertices.has(e)}},{key:"vertexValue",value:function x(e){return this._vertices.get(e)}},{key:"onAddEdge",value:function w(e){return this._addEdgeCallbacks.add(e)}},{key:"onRemoveEdge",value:function m(e){return this._removeEdgeCallbacks.add(e)}},{key:"addNewEdge",value:function E(t,r,n){if(this.hasEdge(t,r)){throw new e.EdgeExistsError(t,r,this.edgeValue(t,r))}if(!this.hasVertex(t)){if(this.hasVertex(r)){throw new e.VertexNotExistsError(t)}else{throw new e.VertexNotExistsError(t).v(r)}}else if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}this._edges.get(t).set(r,n);this._reverseEdges.get(r).add(t);this._edgeCount+=1;this._addEdgeCallbacks.fire(t,r,n)}},{key:"createNewEdge",value:function b(t,r,n){if(this.hasEdge(t,r)){throw new e.EdgeExistsError(t,r,this.edgeValue(t,r))}this.ensureVertex(t);this.ensureVertex(r);this.addNewEdge(t,r,n)}},{key:"setEdge",value:function k(t,r,n){if(!this.hasEdge(t,r)){throw new e.EdgeNotExistsError(t,r)}this._edges.get(t).set(r,n)}},{key:"spanEdge",value:function _(t,r,n){if(!this.hasVertex(t)){if(this.hasVertex(r)){throw new e.VertexNotExistsError(t)}else{throw new e.VertexNotExistsError(t).v(r)}}else if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}if(!this.hasEdge(t,r)){this.addNewEdge(t,r,n)}}},{key:"addEdge",value:function V(e,t,r){if(this.hasEdge(e,t)){this.setEdge(e,t,r)}else{this.addNewEdge(e,t,r)}}},{key:"ensureEdge",value:function S(e,t,r){if(!this.hasEdge(e,t)){this.createNewEdge(e,t,r)}}},{key:"createEdge",value:function N(e,t,r){if(this.hasEdge(e,t)){this.setEdge(e,t,r)}else{this.createNewEdge(e,t,r)}}},{key:"removeExistingEdge",value:function P(t,r){if(!this.hasEdge(t,r)){throw new e.EdgeNotExistsError(t,r)}var n=this._edges.get(t).get(r);this._edges.get(t)["delete"](r);this._reverseEdges.get(r)["delete"](t);this._edgeCount-=1;this._removeEdgeCallbacks.fire(t,r,n)}},{key:"removeEdge",value:function C(e,t){if(this.hasEdge(e,t)){this.removeExistingEdge(e,t)}}},{key:"edgeCount",value:function O(){return this._edgeCount}},{key:"hasEdge",value:function j(e,t){return this.hasVertex(e)&&this.hasVertex(t)&&this._edges.has(e)&&this._edges.get(e).has(t)}},{key:"edgeValue",value:function L(e,t){return this.hasEdge(e,t)?this._edges.get(e).get(t):undefined}},{key:Symbol.iterator,value:function(){return this.vertices()}},{key:"vertices",value:regeneratorRuntime.mark(function F(){var e=this;var t,r,i,a,u,s,o,f,c;return regeneratorRuntime.wrap(function l(h){while(1)switch(h.prev=h.next){case 0:t=new Set;r=true;i=false;a=undefined;h.prev=4;u=e._vertices[Symbol.iterator]();case 6:if(r=(s=u.next()).done){h.next=17;break}o=n(s.value,2);f=o[0];c=o[1];if(!(e.hasVertex(f)&&!t.has(f))){h.next=14;break}t.add(f);h.next=14;return[f,c];case 14:r=true;h.next=6;break;case 17:h.next=23;break;case 19:h.prev=19;h.t0=h["catch"](4);i=true;a=h.t0;case 23:h.prev=23;h.prev=24;if(!r&&u["return"]){u["return"]()}case 26:h.prev=26;if(!i){h.next=29;break}throw a;case 29:return h.finish(26);case 30:return h.finish(23);case 31:case"end":return h.stop()}},F,this,[[4,19,23,31],[24,,26,30]])})},{key:"edges",value:regeneratorRuntime.mark(function T(){var e=this;var t,r,n,i,a,u,s,o,f,c,l,h,v;return regeneratorRuntime.wrap(function d(g){while(1)switch(g.prev=g.next){case 0:t=new Map;r=true;n=false;i=undefined;g.prev=4;a=e._edges.keys()[Symbol.iterator]();case 6:if(r=(u=a.next()).done){g.next=40;break}s=u.value;if(!t.has(s)){t.set(s,new Set)}o=true;f=false;c=undefined;g.prev=12;l=e._edges.get(s).keys()[Symbol.iterator]();case 14:if(o=(h=l.next()).done){g.next=23;break}v=h.value;if(!(e.hasEdge(s,v)&&!t.get(s).has(v))){g.next=20;break}t.get(s).add(v);g.next=20;return[s,v,e._edges.get(s).get(v)];case 20:o=true;g.next=14;break;case 23:g.next=29;break;case 25:g.prev=25;g.t1=g["catch"](12);f=true;c=g.t1;case 29:g.prev=29;g.prev=30;if(!o&&l["return"]){l["return"]()}case 32:g.prev=32;if(!f){g.next=35;break}throw c;case 35:return g.finish(32);case 36:return g.finish(29);case 37:r=true;g.next=6;break;case 40:g.next=46;break;case 42:g.prev=42;g.t2=g["catch"](4);n=true;i=g.t2;case 46:g.prev=46;g.prev=47;if(!r&&a["return"]){a["return"]()}case 49:g.prev=49;if(!n){g.next=52;break}throw i;case 52:return g.finish(49);case 53:return g.finish(46);case 54:case"end":return g.stop()}},T,this,[[4,42,46,54],[12,25,29,37],[30,,32,36],[47,,49,53]])})},{key:"verticesFrom",value:function I(t){if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}return this._verticesFrom(t)}},{key:"_verticesFrom",value:regeneratorRuntime.mark(function R(e){var t=this;var r,n,i,a,u,s,o;return regeneratorRuntime.wrap(function f(c){while(1)switch(c.prev=c.next){case 0:r=new Set;n=true;i=false;a=undefined;c.prev=4;u=t._edges.get(e).keys()[Symbol.iterator]();case 6:if(n=(s=u.next()).done){c.next=15;break}o=s.value;if(!(t.hasEdge(e,o)&&!r.has(o))){c.next=12;break}r.add(o);c.next=12;return[o,t._vertices.get(o),t._edges.get(e).get(o)];case 12:n=true;c.next=6;break;case 15:c.next=21;break;case 17:c.prev=17;c.t3=c["catch"](4);i=true;a=c.t3;case 21:c.prev=21;c.prev=22;if(!n&&u["return"]){u["return"]()}case 24:c.prev=24;if(!i){c.next=27;break}throw a;case 27:return c.finish(24);case 28:return c.finish(21);case 29:case"end":return c.stop()}},R,this,[[4,17,21,29],[22,,24,28]])})},{key:"verticesTo",value:function A(t){if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}return this._verticesTo(t)}},{key:"_verticesTo",value:regeneratorRuntime.mark(function M(e){var t=this;var r,n,i,a,u,s,o;return regeneratorRuntime.wrap(function f(c){while(1)switch(c.prev=c.next){case 0:r=new Set;n=true;i=false;a=undefined;c.prev=4;u=t._reverseEdges.get(e)[Symbol.iterator]();case 6:if(n=(s=u.next()).done){c.next=15;break}o=s.value;if(!(t.hasEdge(o,e)&&!r.has(o))){c.next=12;break}r.add(o);c.next=12;return[o,t._vertices.get(o),t._edges.get(o).get(e)];case 12:n=true;c.next=6;break;case 15:c.next=21;break;case 17:c.prev=17;c.t4=c["catch"](4);i=true;a=c.t4;case 21:c.prev=21;c.prev=22;if(!n&&u["return"]){u["return"]()}case 24:c.prev=24;if(!i){c.next=27;break}throw a;case 27:return c.finish(24);case 28:return c.finish(21);case 29:case"end":return c.stop()}},M,this,[[4,17,21,29],[22,,24,28]])})},{key:"verticesWithPathFrom",value:function W(t){if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}return this._verticesWithPathFrom(t,new Set)}},{key:"_verticesWithPathFrom",value:regeneratorRuntime.mark(function G(e,t){var r=this;var n,i,a,u,s,o;return regeneratorRuntime.wrap(function f(c){while(1)switch(c.prev=c.next){case 0:n=true;i=false;a=undefined;c.prev=3;u=r._edges.get(e).keys()[Symbol.iterator]();case 5:if(n=(s=u.next()).done){c.next=15;break}o=s.value;if(!(r.hasEdge(e,o)&&!t.has(o))){c.next=12;break}t.add(o);c.next=11;return[o,r._vertices.get(o)];case 11:return c.delegateYield(r._verticesWithPathFrom(o,t),"t5",12);case 12:n=true;c.next=5;break;case 15:c.next=21;break;case 17:c.prev=17;c.t6=c["catch"](3);i=true;a=c.t6;case 21:c.prev=21;c.prev=22;if(!n&&u["return"]){u["return"]()}case 24:c.prev=24;if(!i){c.next=27;break}throw a;case 27:return c.finish(24);case 28:return c.finish(21);case 29:case"end":return c.stop()}},G,this,[[3,17,21,29],[22,,24,28]])})},{key:"verticesWithPathTo",value:function z(t){if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}return this._verticesWithPathTo(t,new Set)}},{key:"_verticesWithPathTo",value:regeneratorRuntime.mark(function Y(e,t){var r=this;var n,i,a,u,s,o;return regeneratorRuntime.wrap(function f(c){while(1)switch(c.prev=c.next){case 0:n=true;i=false;a=undefined;c.prev=3;u=r._reverseEdges.get(e)[Symbol.iterator]();case 5:if(n=(s=u.next()).done){c.next=15;break}o=s.value;if(!(r.hasEdge(o,e)&&!t.has(o))){c.next=12;break}t.add(o);c.next=11;return[o,r._vertices.get(o)];case 11:return c.delegateYield(r._verticesWithPathTo(o,t),"t7",12);case 12:n=true;c.next=5;break;case 15:c.next=21;break;case 17:c.prev=17;c.t8=c["catch"](3);i=true;a=c.t8;case 21:c.prev=21;c.prev=22;if(!n&&u["return"]){u["return"]()}case 24:c.prev=24;if(!i){c.next=27;break}throw a;case 27:return c.finish(24);case 28:return c.finish(21);case 29:case"end":return c.stop()}},Y,this,[[3,17,21,29],[22,,24,28]])})},{key:"vertices_topologically",value:regeneratorRuntime.mark(function D(){var t=this;var r=regeneratorRuntime.mark(function d(t){var r,s,o,f,c,l,h,v,g;return regeneratorRuntime.wrap(function p(y){while(1)switch(y.prev=y.next){case 0:i.push(t);r=i.indexOf(t);if(!(r!==i.length-1)){y.next=5;break}s=i.slice(r+1).reverse();throw new e.CycleError(s);case 5:if(a.has(t)){y.next=36;break}o=true;f=false;c=undefined;y.prev=9;l=u.verticesTo(t)[Symbol.iterator]();case 11:if(o=(h=l.next()).done){y.next=18;break}v=n(h.value,1);g=v[0];return y.delegateYield(d(g),"t9",15);case 15:o=true;y.next=11;break;case 18:y.next=24;break;case 20:y.prev=20;y.t10=y["catch"](9);f=true;c=y.t10;case 24:y.prev=24;y.prev=25;if(!o&&l["return"]){l["return"]()}case 27:y.prev=27;if(!f){y.next=30;break}throw c;case 30:return y.finish(27);case 31:return y.finish(24);case 32:if(!u.hasVertex(t)){y.next=35;break}y.next=35;return[t,u._vertices.get(t)];case 35:a.add(t);case 36:i.pop();case 37:case"end":return y.stop()}},d,this,[[9,20,24,32],[25,,27,31]])});var i,a,u,s,o,f,c,l,h,v;return regeneratorRuntime.wrap(function g(e){while(1)switch(e.prev=e.next){case 0:i=[];a=new Set;u=t;s=true;o=false;f=undefined;e.prev=6;c=t.vertices()[Symbol.iterator]();case 8:if(s=(l=c.next()).done){e.next=16;break}h=n(l.value,1);v=h[0];if(a.has(v)){e.next=13;break}return e.delegateYield(r(v),"t11",13);case 13:s=true;e.next=8;break;case 16:e.next=22;break;case 18:e.prev=18;e.t12=e["catch"](6);o=true;f=e.t12;case 22:e.prev=22;e.prev=23;if(!s&&c["return"]){c["return"]()}case 25:e.prev=25;if(!o){e.next=28;break}throw f;case 28:return e.finish(25);case 29:return e.finish(22);case 30:case"end":return e.stop()}},D,this,[[6,18,22,30],[23,,25,29]])})},{key:"eachVertex",value:function J(e){var t=true;var r=false;var n=undefined;try{for(var a=this.vertices()[Symbol.iterator](),u;!(t=(u=a.next()).done);t=true){var s=u.value;if(e.apply(undefined,i(s))===false){break}}}catch(o){r=true;n=o}finally{try{if(!t&&a["return"]){a["return"]()}}finally{if(r){throw n}}}}},{key:"eachEdge",value:function $(e){var t=true;var r=false;var n=undefined;try{for(var a=this.edges()[Symbol.iterator](),u;!(t=(u=a.next()).done);t=true){var s=u.value;if(e.apply(undefined,i(s))===false){break}}}catch(o){r=true;n=o}finally{try{if(!t&&a["return"]){a["return"]()}}finally{if(r){throw n}}}}},{key:"eachVertexFrom",value:function U(e,t){var r=true;var n=false;var a=undefined;try{for(var u=this.verticesFrom(e)[Symbol.iterator](),s;!(r=(s=u.next()).done);r=true){var o=s.value;if(t.apply(undefined,i(o))===false){break}}}catch(f){n=true;a=f}finally{try{if(!r&&u["return"]){u["return"]()}}finally{if(n){throw a}}}}},{key:"eachVertexTo",value:function H(e,t){var r=true;var n=false;var a=undefined;try{for(var u=this.verticesTo(e)[Symbol.iterator](),s;!(r=(s=u.next()).done);r=true){var o=s.value;if(t.apply(undefined,i(o))===false){break}}}catch(f){n=true;a=f}finally{try{if(!r&&u["return"]){u["return"]()}}finally{if(n){throw a}}}}},{key:"eachVertexWithPathFrom",value:function q(e,t){var r=true;var n=false;var a=undefined;try{for(var u=this.verticesWithPathFrom(e)[Symbol.iterator](),s;!(r=(s=u.next()).done);r=true){var o=s.value;if(t.apply(undefined,i(o))===false){break}}}catch(f){n=true;a=f}finally{try{if(!r&&u["return"]){u["return"]()}}finally{if(n){throw a}}}}},{key:"eachVertexWithPathTo",value:function X(e,t){var r=true;var n=false;var a=undefined;try{for(var u=this.verticesWithPathTo(e)[Symbol.iterator](),s;!(r=(s=u.next()).done);r=true){var o=s.value;if(t.apply(undefined,i(o))===false){break}}}catch(f){n=true;a=f}finally{try{if(!r&&u["return"]){u["return"]()}}finally{if(n){throw a}}}}},{key:"eachVertexTopologically",value:function K(e){var t=true;var r=false;var n=undefined;try{for(var a=this.vertices_topologically()[Symbol.iterator](),u;!(t=(u=a.next()).done);t=true){var s=u.value;if(e.apply(undefined,i(s))===false){break}}}catch(o){r=true;n=o}finally{try{if(!t&&a["return"]){a["return"]()}}finally{if(r){throw n}}}}},{key:"clearEdges",value:function B(){var e=this;this.eachEdge(function(t,r){e.removeEdge(t,r)})}},{key:"clear",value:function Q(){var e=this;this.eachVertex(function(t){e.destroyVertex(t)})}},{key:"equals",value:function Z(t){var r=arguments[1]===undefined?function(e,t,r,n){return e===t}:arguments[1];if(!(t instanceof e)){return false}if(this.vertexCount()!==t.vertexCount()){return false}if(this.edgeCount()!==t.edgeCount()){return false}var i=true;var a=false;var u=undefined;try{for(var s=this.vertices()[Symbol.iterator](),o;!(i=(o=s.next()).done);i=true){var f=n(o.value,2);var c=f[0];var l=f[1];if(!t.hasVertex(c)){return false}if(!r(l,t.vertexValue(c),c)){return false}}}catch(h){a=true;u=h}finally{try{if(!i&&s["return"]){s["return"]()}}finally{if(a){throw u}}}var v=true;var d=false;var g=undefined;try{for(var p=this.edges()[Symbol.iterator](),y;!(v=(y=p.next()).done);v=true){var x=n(y.value,3);var w=x[0];var m=x[1];var l=x[2];if(!t.hasEdge(w,m)){return false}if(!r(l,t.edgeValue(w,m),w,m)){return false}}}catch(h){d=true;g=h}finally{try{if(!v&&p["return"]){p["return"]()}}finally{if(d){throw g}}}return true}},{key:"hasCycle",value:function ee(){var e=this;var t={};var r={};var n=false;var i=function(a){if(t[a]){n=true;return}if(r[a]){return}r[a]=true;t[a]=true;e.eachVertexFrom(a,function(e){i(e);if(n){return false}});t[a]=false};this.eachVertex(function(e){i(e);if(n){return false}});return n}},{key:"hasPath",value:function te(e,t){var r=this;if(!this.hasVertex(e)||!this.hasVertex(t)){return false}var n={};var i=function(e){if(r.hasEdge(e,t)){return true}n[e]=true;var a=false;r.eachVertexFrom(e,function(e){if(!a&&!n[e]&&i(e)){a=true}});delete n[e];return a};return i(e)}},{key:"clone",value:function re(){var t=arguments[0]===undefined?function(e){return e}:arguments[0];var r=new e;var i=true;var a=false;var u=undefined;try{for(var s=this.vertices()[Symbol.iterator](),o;!(i=(o=s.next()).done);i=true){var f=n(o.value,2);var c=f[0];var l=f[1];r.addVertex(c,t(l))}}catch(h){a=true;u=h}finally{try{if(!i&&s["return"]){s["return"]()}}finally{if(a){throw u}}}var v=true;var d=false;var g=undefined;try{for(var p=this.edges()[Symbol.iterator](),y;!(v=(y=p.next()).done);v=true){var x=n(y.value,3);var w=x[0];var m=x[1];var l=x[2];r.addEdge(w,m,t(l))}}catch(h){d=true;g=h}finally{try{if(!v&&p["return"]){p["return"]()}}finally{if(d){throw g}}}return r}},{key:"transitiveReduction",value:function ne(){var e=this.clone();var t=true;var r=false;var i=undefined;try{for(var a=this.vertices()[Symbol.iterator](),u;!(t=(u=a.next()).done);t=true){var s=n(u.value,1);var o=s[0];var f=true;var c=false;var l=undefined;try{for(var h=this.vertices()[Symbol.iterator](),v;!(f=(v=h.next()).done);f=true){var d=n(v.value,1);var g=d[0];if(e.hasEdge(o,g)){var p=true;var y=false;var x=undefined;try{for(var w=this.vertices()[Symbol.iterator](),m;!(p=(m=w.next()).done);p=true){var E=n(m.value,1);var b=E[0];if(e.hasPath(g,b)){e.removeEdge(o,b)}}}catch(k){y=true;x=k}finally{try{if(!p&&w["return"]){w["return"]()}}finally{if(y){throw x}}}}}}catch(k){c=true;l=k}finally{try{if(!f&&h["return"]){h["return"]()}}finally{if(c){throw l}}}}}catch(k){r=true;i=k}finally{try{if(!t&&a["return"]){a["return"]()}}finally{if(r){throw i}}}return e}}]);return e}();e.exports=l;l.VertexExistsError=function(e){function t(e,r){f(this,t);this.vertices={};this.v(e,r)}u(t,e);o(t,{v:{value:function r(e,t){this.vertices[e]=t;this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this.vertices===1?"a vertex":"vertices";this.message="This graph has "+e+" '"+Object.keys(this.vertices).join("', '")+"'"}}});return t}(Error);l.VertexNotExistsError=function(e){function t(e){f(this,t);this.vertices={};this.v(e)}u(t,e);o(t,{v:{value:function r(e){this.vertices[e]=undefined;this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this.vertices===1?"a vertex":"vertices";this.message="This graph does not have "+e+" '"+Object.keys(this.vertices).join("', '")+"'"}}});return t}(Error);l.EdgeExistsError=function(e){function t(e,r,n){f(this,t);this.edges={};this.e(e,r,n)}u(t,e);o(t,{e:{value:function r(e,t,n){this.edges[e]=a({},t,n);this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this;var t=[];Object.keys(this.edges).forEach(function(r){Object.keys(e.edges[r]).forEach(function(e){t.push("('"+r+"', '"+e+"')")})});var r=t.length===1?"an edge":"edges";this.message="This graph has "+r+" "+t.join(", ")}}});return t}(Error);l.EdgeNotExistsError=function(e){function t(e,r){f(this,t);this.edges={};this.e(e,r)}u(t,e);o(t,{e:{value:function r(e,t){this.edges[e]=a({},t,undefined);this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this;var t=[];Object.keys(this.edges).forEach(function(r){Object.keys(e.edges[r]).forEach(function(e){t.push("('"+r+"', '"+e+"')")})});var r=t.length===1?"an edge":"edges";this.message="This graph does not have "+r+" "+t.join(", ")}}});return t}(Error);l.HasConnectedEdgesError=function(e){function t(e){f(this,t);this.message="The '"+e+"' vertex has connected edges";this.key=e}u(t,e);return t}(Error);l.CycleError=function(e){function t(e){f(this,t);this.message="This graph contains a cycle: "+e;this.cycle=e}u(t,e);return t}(Error)},function(e,t,r){(function(e){"use strict";if(e._babelPolyfill){throw new Error("only one instance of babel/polyfill is allowed")}e._babelPolyfill=true;r(4);r(5)}).call(t,function(){return this}())},function(e,t,r){!function(t,r,n){"use strict";var i="Object",a="Function",u="Array",s="String",o="Number",f="RegExp",c="Date",l="Map",h="Set",v="WeakMap",d="WeakSet",g="Symbol",p="Promise",y="Math",x="Arguments",w="prototype",m="constructor",E="toString",b=E+"Tag",k="toLocaleString",_="hasOwnProperty",V="forEach",S="iterator",N="@@"+S,P="process",C="createElement",O=t[a],j=t[i],L=t[u],F=t[s],T=t[o],I=t[f],R=t[c],A=t[l],M=t[h],W=t[v],G=t[d],z=t[g],Y=t[y],D=t.TypeError,J=t.RangeError,$=t.setTimeout,U=t.setImmediate,H=t.clearImmediate,q=t.parseInt,X=t.isFinite,K=t[P],B=K&&K.nextTick,Q=t.document,Z=Q&&Q.documentElement,ee=t.navigator,te=t.define,re=t.console||{},ne=L[w],ie=j[w],ae=O[w],ue=1/0,se=".";function oe(e){return e!==null&&(typeof e=="object"||typeof e=="function")}function fe(e){return typeof e=="function"}var ce=we(/./.test,/\[native code\]\s*\}\s*$/,1);var le=ie[E];function he(e,t,r){if(e&&!je(e=r?e:e[w],Lt))St(e,Lt,t)}function ve(e){return le.call(e).slice(8,-1)}function de(e){var t,r;return e==n?e===n?"Undefined":"Null":typeof(r=(t=j(e))[Lt])=="string"?r:ve(t)}var ge=ae.call,pe=ae.apply,ye;function xe(){var e=pt(this),t=arguments.length,r=L(t),n=0,i=Mt._,a=false;while(t>n)if((r[n]=arguments[n++])===i)a=true;return function(){var n=this,u=arguments.length,s=0,o=0,f;if(!a&&!u)return me(e,r,n);f=r.slice();if(a)for(;t>s;s++)if(f[s]===i)f[s]=arguments[o++];while(u>o)f.push(arguments[o++]);return me(e,f,n)}}function we(e,t,r){pt(e);if(~r&&t===n)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}function me(e,t,r){var i=r===n;switch(t.length|0){case 0:return i?e():e.call(r);case 1:return i?e(t[0]):e.call(r,t[0]);case 2:return i?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return i?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return i?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3]);case 5:return i?e(t[0],t[1],t[2],t[3],t[4]):e.call(r,t[0],t[1],t[2],t[3],t[4])}return e.apply(r,t)}var Ee=j.create,be=j.getPrototypeOf,ke=j.setPrototypeOf,_e=j.defineProperty,Ve=j.defineProperties,Se=j.getOwnPropertyDescriptor,Ne=j.keys,Pe=j.getOwnPropertyNames,Ce=j.getOwnPropertySymbols,Oe=j.isFrozen,je=we(ge,ie[_],2),Le=j,Fe;function Te(e){return Le(gt(e))}function Ie(e){return e}function Re(){return this}function Ae(e,t){if(je(e,t))return e[t]}function Me(e){yt(e);return Ce?Pe(e).concat(Ce(e)):Pe(e)}var We=j.assign||function(e,t){var r=j(gt(e)),n=arguments.length,i=1;while(n>i){var a=Le(arguments[i++]),u=Ne(a),s=u.length,o=0,f;while(s>o)r[f=u[o++]]=a[f]}return r};function Ge(e,t){var r=Te(e),n=Ne(r),i=n.length,a=0,u;while(i>a)if(r[u=n[a++]]===t)return u}function ze(e){return F(e).split(",")}var Ye=ne.push,De=ne.unshift,Je=ne.slice,$e=ne.splice,Ue=ne.indexOf,He=ne[V];function qe(e){var t=e==1,r=e==2,i=e==3,a=e==4,u=e==6,s=e==5||u;return function(o){var f=j(gt(this)),c=arguments[1],l=Le(f),h=we(o,c,3),v=ot(l.length),d=0,g=t?L(v):r?[]:n,p,y;for(;v>d;d++)if(s||d in l){p=l[d];y=h(p,d,f);if(e){if(t)g[d]=y;else if(y)switch(e){case 3:return true;case 5:return p;case 6:return d;case 2:g.push(p)}else if(a)return false}}return u?-1:i||a?a:g}}function Xe(e){return function(t){var r=Te(this),n=ot(r.length),i=ft(arguments[1],n);if(e&&t!=t){for(;n>i;i++)if(ut(r[i]))return e||i}else for(;n>i;i++)if(e||i in r){if(r[i]===t)return e||i}return!e&&-1}}function Ke(e,t){return typeof e=="function"?e:t}var Be=9007199254740991,Qe=Y.pow,Ze=Y.abs,et=Y.ceil,tt=Y.floor,rt=Y.max,nt=Y.min,it=Y.random,at=Y.trunc||function(e){return(e>0?tt:et)(e)};function ut(e){return e!=e}function st(e){return isNaN(e)?0:at(e)}function ot(e){return e>0?nt(st(e),Be):0}function ft(e,t){var e=st(e);return e<0?rt(e+t,0):nt(e,t)}function ct(e){return e>9?e:"0"+e}function lt(e,t,r){var n=oe(t)?function(e){return t[e]}:t;return function(t){return F(r?t:this).replace(e,n)}}function ht(e){return function(t){var r=F(gt(this)),i=st(t),a=r.length,u,s;if(i<0||i>=a)return e?"":n;u=r.charCodeAt(i);return u<55296||u>56319||i+1===a||(s=r.charCodeAt(i+1))<56320||s>57343?e?r.charAt(i):u:e?r.slice(i,i+2):(u-55296<<10)+(s-56320)+65536}}var vt="Reduce of empty object with no initial value";function dt(e,t,r){if(!e)throw D(r?t+r:t)}function gt(e){if(e==n)throw D("Function called on null or undefined");return e}function pt(e){dt(fe(e),e," is not a function!");return e}function yt(e){dt(oe(e),e," is not an object!");return e}function xt(e,t,r){dt(e instanceof t,r,": use the 'new' operator!")}function wt(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}function mt(e,t,r){e[t]=r;return e}function Et(e){return _t?function(t,r,n){return _e(t,r,wt(e,n))}:mt}function bt(e){return g+"("+e+")_"+(++Vt+it())[E](36)}function kt(e,t){return z&&z[e]||(t?z:Pt)(g+se+e)}var _t=!!function(){try{return _e({},"a",{get:function(){return 2}}).a==2}catch(e){}}(),Vt=0,St=Et(1),Nt=z?mt:St,Pt=z||bt;function Ct(e,t){for(var r in t)St(e,r,t[r]);return e}var Ot=kt("unscopables"),jt=ne[Ot]||{},Lt=kt(b),Ft=kt("species"),Tt;function It(e){if(_t&&(r||!ce(e)))_e(e,Ft,{configurable:true,get:Re})}var Rt=ve(K)==P,At={},Mt=r?t:At,Wt=t.core,Gt,zt=1,Yt=2,Dt=4,Jt=8,$t=16,Ut=32;function Ht(e,n,i){var a,u,s,o,f=e&Yt,c=f?t:e&Dt?t[n]:(t[n]||ie)[w],l=f?At:At[n]||(At[n]={});if(f)i=n;for(a in i){u=!(e&zt)&&c&&a in c&&(!fe(c[a])||ce(c[a]));s=(u?c:i)[a];if(!r&&f&&!fe(c[a]))o=i[a];else if(e&$t&&u)o=we(s,t);else if(e&Ut&&!r&&c[a]==s){o=function(e){return this instanceof s?new s(e):s(e)};o[w]=s[w]}else o=e&Jt&&fe(s)?we(ge,s):s;if(r&&c&&!u){if(f)c[a]=s;else delete c[a]&&St(c,a,s)}if(l[a]!=s)St(l,a,o)}}if(typeof e!="undefined"&&e.exports)e.exports=At;else if(fe(te)&&te.amd)te(function(){return At});else Gt=true;if(Gt||r){At.noConflict=function(){t.core=Wt;return At};t.core=At}Tt=kt(S);var qt=Pt("iter"),Xt=1,Kt=2,Bt={},Qt={},Zt="keys"in ne&&!("next"in[].keys());er(Qt,Re);function er(e,t){St(e,Tt,t);N in ne&&St(e,N,t)}function tr(e,t,r,n){e[w]=Ee(n||Qt,{next:wt(1,r)});he(e,t+" Iterator")}function rr(e,t,n,i){var a=e[w],u=Ae(a,Tt)||Ae(a,N)||i&&Ae(a,i)||n;if(r){er(a,u);if(u!==n){var s=be(u.call(new e));he(s,t+" Iterator",true);je(a,N)&&er(s,Re)}}Bt[t]=u;Bt[t+" Iterator"]=Re;return u}function nr(e,t,r,n,i,a){function u(e){return function(){return new r(this,e)}}tr(r,t,n);var s=u(Xt+Kt),o=u(Kt);if(i==Kt)o=rr(e,t,o,"values");else s=rr(e,t,s,"entries");if(i){Ht(Jt+zt*Zt,t,{entries:s,keys:a?o:u(Xt),values:o})}}function ir(e,t){return{value:t,done:!!e}}function ar(e){var r=j(e),n=t[g],i=(n&&n[S]||N)in r;return i||Tt in r||je(Bt,de(r))}function ur(e){var r=t[g],n=e[r&&r[S]||N],i=n||e[Tt]||Bt[de(e)];return yt(i.call(e))}function sr(e,t,r){return r?me(e,t):e(t)}function or(e){var t=true;var r={next:function(){throw 1},"return":function(){t=false}};r[Tt]=Re;try{e(r)}catch(n){}return t}function fr(e){var t=e["return"];if(t!==n)t.call(e)}function cr(e,t){try{e(t)}catch(r){fr(t);throw r}}function lr(e,t,r,n){cr(function(e){var i=we(r,n,t?2:1),a;while(!(a=e.next()).done)if(sr(i,a.value,t)===false){return fr(e)}},ur(e))}!function(e,r,n,a){if(!ce(z)){z=function(t){dt(!(this instanceof z),g+" is not a "+m);var r=bt(t),i=Nt(Ee(z[w]),e,r);n[r]=i;_t&&a&&_e(ie,r,{configurable:true,set:function(e){St(this,r,e)}});return i};St(z[w],E,function(){return this[e]})}Ht(Yt+Ut,{Symbol:z});var u={"for":function(e){return je(r,e+="")?r[e]:r[e]=z(e)},iterator:Tt||kt(S),keyFor:xe.call(Ge,r),species:Ft,toStringTag:Lt=kt(b,true),unscopables:Ot,pure:Pt,set:Nt,useSetter:function(){a=true},useSimple:function(){a=false}};He.call(ze("hasInstance,isConcatSpreadable,match,replace,search,split,toPrimitive"),function(e){u[e]=kt(e)});Ht(Dt,g,u);he(z,g);Ht(Dt+zt*!ce(z),i,{getOwnPropertyNames:function(e){var t=Pe(Te(e)),r=[],i,a=0;while(t.length>a)je(n,i=t[a++])||r.push(i);return r},getOwnPropertySymbols:function(e){var t=Pe(Te(e)),r=[],i,a=0;while(t.length>a)je(n,i=t[a++])&&r.push(n[i]);return r}});he(Y,y,true);he(t.JSON,"JSON",true)}(Pt("tag"),{},{},true);!function(){var e={assign:We,is:function(e,t){return e===t?e!==0||1/e===1/t:e!=e&&t!=t}};"__proto__"in ie&&function(t,r){try{r=we(ge,Se(ie,"__proto__").set,2);r({},ne)}catch(n){t=true}e.setPrototypeOf=ke=ke||function(e,n){yt(e);dt(n===null||oe(n),n,": can't set as prototype!");if(t)e.__proto__=n;else r(e,n);return e}}();Ht(Dt,i,e)}();!function(e){e[Lt]=se;if(ve(e)!=se)St(ie,E,function(){return"[object "+de(this)+"]"})}({});!function(){function e(e,t){var r=j[e],n=At[i][e],a=0,u={};if(!n||ce(n)){u[e]=t==1?function(e){return oe(e)?r(e):e}:t==2?function(e){return oe(e)?r(e):true}:t==3?function(e){return oe(e)?r(e):false}:t==4?function(e,t){return r(Te(e),t)}:function(e){return r(Te(e))};try{r(se)}catch(s){a=1}Ht(Dt+zt*a,i,u)}}e("freeze",1);e("seal",1);e("preventExtensions",1);e("isFrozen",2);e("isSealed",2);e("isExtensible",3);e("getOwnPropertyDescriptor",4);e("getPrototypeOf");e("keys");e("getOwnPropertyNames")}();!function(e){e in ae||_t&&_e(ae,e,{configurable:true,get:function(){var t=F(this).match(/^\s*function ([^ (]*)/),r=t?t[1]:"";je(this,e)||_e(this,e,wt(5,r));return r},set:function(t){je(this,e)||_e(this,e,wt(0,t))}})}("name");T("0o1")&&T("0b1")||function(e,r){function n(e){if(oe(e))e=i(e);if(typeof e=="string"&&e.length>2&&e.charCodeAt(0)==48){var t=false;switch(e.charCodeAt(1)){case 66:case 98:t=true;case 79:case 111:return q(e.slice(2),t?2:8)}}return+e}function i(e){var t,r;if(fe(t=e.valueOf)&&!oe(r=t.call(e)))return r;if(fe(t=e[E])&&!oe(r=t.call(e)))return r;throw D("Can't convert object to number")}T=function a(t){return this instanceof a?new e(n(t)):n(t)};He.call(_t?Pe(e):ze("MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY"),function(t){t in T||_e(T,t,Se(e,t))});T[w]=r;r[m]=T;St(t,o,T)}(T,T[w]);!function(e){Ht(Dt,o,{EPSILON:Qe(2,-52),isFinite:function(e){return typeof e=="number"&&X(e)},isInteger:e,isNaN:ut,isSafeInteger:function(t){return e(t)&&Ze(t)<=Be},MAX_SAFE_INTEGER:Be,MIN_SAFE_INTEGER:-Be,parseFloat:parseFloat,parseInt:q})}(T.isInteger||function(e){return!oe(e)&&X(e)&&tt(e)===e;
});!function(){var e=Y.E,t=Y.exp,r=Y.log,n=Y.sqrt,i=Y.sign||function(e){return(e=+e)==0||e!=e?e:e<0?-1:1};function a(e){return!X(e=+e)||e==0?e:e<0?-a(-e):r(e+n(e*e+1))}function u(e){return(e=+e)==0?e:e>-1e-6&&e<1e-6?e+e*e/2:t(e)-1}Ht(Dt,y,{acosh:function(t){return(t=+t)<1?NaN:X(t)?r(t/e+n(t+1)*n(t-1)/e)+1:t},asinh:a,atanh:function(e){return(e=+e)==0?e:r((1+e)/(1-e))/2},cbrt:function(e){return i(e=+e)*Qe(Ze(e),1/3)},clz32:function(e){return(e>>>=0)?32-e[E](2).length:32},cosh:function(e){return(t(e=+e)+t(-e))/2},expm1:u,fround:function(e){return new Float32Array([e])[0]},hypot:function(e,t){var r=0,i=arguments.length,a=i,u=L(i),s=-ue,o;while(i--){o=u[i]=+arguments[i];if(o==ue||o==-ue)return ue;if(o>s)s=o}s=o||1;while(a--)r+=Qe(u[a]/s,2);return s*n(r)},imul:function(e,t){var r=65535,n=+e,i=+t,a=r&n,u=r&i;return 0|a*u+((r&n>>>16)*u+a*(r&i>>>16)<<16>>>0)},log1p:function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:r(1+e)},log10:function(e){return r(e)/Y.LN10},log2:function(e){return r(e)/Y.LN2},sign:i,sinh:function(r){return Ze(r=+r)<1?(u(r)-u(-r))/2:(t(r-1)-t(-r-1))*(e/2)},tanh:function(e){var r=u(e=+e),n=u(-e);return r==ue?1:n==ue?-1:(r-n)/(t(e)+t(-e))},trunc:at})}();!function(e){function t(e){if(ve(e)==f)throw D()}Ht(Dt,s,{fromCodePoint:function(t){var r=[],n=arguments.length,i=0,a;while(n>i){a=+arguments[i++];if(ft(a,1114111)!==a)throw J(a+" is not a valid code point");r.push(a<65536?e(a):e(((a-=65536)>>10)+55296,a%1024+56320))}return r.join("")},raw:function(e){var t=Te(e.raw),r=ot(t.length),n=arguments.length,i=[],a=0;while(r>a){i.push(F(t[a++]));if(a<n)i.push(F(arguments[a]))}return i.join("")}});Ht(Jt,s,{codePointAt:ht(false),endsWith:function(e){t(e);var r=F(gt(this)),i=arguments[1],a=ot(r.length),u=i===n?a:nt(ot(i),a);e+="";return r.slice(u-e.length,u)===e},includes:function(e){t(e);return!!~F(gt(this)).indexOf(e,arguments[1])},repeat:function(e){var t=F(gt(this)),r="",n=st(e);if(0>n||n==ue)throw J("Count can't be negative");for(;n>0;(n>>>=1)&&(t+=t))if(n&1)r+=t;return r},startsWith:function(e){t(e);var r=F(gt(this)),n=ot(nt(arguments[1],r.length));e+="";return r.slice(n,n+e.length)===e}})}(F.fromCharCode);!function(){Ht(Dt+zt*or(L.from),u,{from:function(e){var t=j(gt(e)),r=arguments[1],i=r!==n,a=i?we(r,arguments[2],2):n,u=0,s,o,f;if(ar(t)){o=new(Ke(this,L));cr(function(e){for(;!(f=e.next()).done;u++){o[u]=i?a(f.value,u):f.value}},ur(t))}else{o=new(Ke(this,L))(s=ot(t.length));for(;s>u;u++){o[u]=i?a(t[u],u):t[u]}}o.length=u;return o}});Ht(Dt,u,{of:function(){var e=0,t=arguments.length,r=new(Ke(this,L))(t);while(t>e)r[e]=arguments[e++];r.length=t;return r}});It(L)}();!function(){Ht(Jt,u,{copyWithin:function(e,t){var r=j(gt(this)),i=ot(r.length),a=ft(e,i),u=ft(t,i),s=arguments[2],o=s===n?i:ft(s,i),f=nt(o-u,i-a),c=1;if(u<a&&a<u+f){c=-1;u=u+f-1;a=a+f-1}while(f-->0){if(u in r)r[a]=r[u];else delete r[a];a+=c;u+=c}return r},fill:function(e){var t=j(gt(this)),r=ot(t.length),i=ft(arguments[1],r),a=arguments[2],u=a===n?r:ft(a,r);while(u>i)t[i++]=e;return t},find:qe(5),findIndex:qe(6)});if(r){He.call(ze("find,findIndex,fill,copyWithin,entries,keys,values"),function(e){jt[e]=true});Ot in ne||St(ne,Ot,jt)}}();!function(e){nr(L,u,function(e,t){Nt(this,qt,{o:Te(e),i:0,k:t})},function(){var e=this[qt],t=e.o,r=e.k,i=e.i++;if(!t||i>=t.length){e.o=n;return ir(1)}if(r==Xt)return ir(0,i);if(r==Kt)return ir(0,t[i]);return ir(0,[i,t[i]])},Kt);Bt[x]=Bt[u];nr(F,s,function(e){Nt(this,qt,{o:F(e),i:0})},function(){var t=this[qt],r=t.o,n=t.i,i;if(n>=r.length)return ir(1);i=e.call(r,n);t.i+=i.length;return ir(0,i)})}(ht(true));_t&&!function(e,r){if(!function(){try{return I(/a/g,"i")=="/a/i"}catch(e){}}()){I=function i(e,t){return new r(ve(e)==f&&t!==n?e.source:e,t)};He.call(Pe(r),function(e){e in I||_e(I,e,{configurable:true,get:function(){return r[e]},set:function(t){r[e]=t}})});e[m]=I;I[w]=e;St(t,f,I)}if(/./g.flags!="g")_e(e,"flags",{configurable:true,get:lt(/^.*\/(\w*)$/,"$1")});It(I)}(I[w],I);fe(U)&&fe(H)||function(e){var r=t.postMessage,n=t.addEventListener,i=t.MessageChannel,a=0,u={},s,o,f;U=function(e){var t=[],r=1;while(arguments.length>r)t.push(arguments[r++]);u[++a]=function(){me(fe(e)?e:O(e),t)};s(a);return a};H=function(e){delete u[e]};function c(e){if(je(u,e)){var t=u[e];delete u[e];t()}}function l(e){c(e.data)}if(Rt){s=function(e){B(xe.call(c,e))}}else if(n&&fe(r)&&!t.importScripts){s=function(e){r(e,"*")};n("message",l,false)}else if(fe(i)){o=new i;f=o.port2;o.port1.onmessage=l;s=we(f.postMessage,f,1)}else if(Q&&e in Q[C]("script")){s=function(t){Z.appendChild(Q[C]("script"))[e]=function(){Z.removeChild(this);c(t)}}}else{s=function(e){$(c,0,e)}}}("onreadystatechange");Ht(Yt+$t,{setImmediate:U,clearImmediate:H});!function(e,t){fe(e)&&fe(e.resolve)&&e.resolve(t=new e(function(){}))==t||function(t,r){function i(e){var t;if(oe(e))t=e.then;return fe(t)?t:false}function a(e){var t=e[r],n=t.c,i=0,u;if(t.h)return true;while(n.length>i){u=n[i++];if(u.fail||a(u.P))return true}}function u(e,r){var n=e.c;if(r||n.length)t(function(){var t=e.p,u=e.v,s=e.s==1,o=0;if(r&&!a(t)){$(function(){if(!a(t)){if(Rt){if(!K.emit("unhandledRejection",u,t)){}}else if(fe(re.error)){re.error("Unhandled promise rejection",u)}}},1e3)}else while(n.length>o)!function(t){var r=s?t.ok:t.fail,n,a;try{if(r){if(!s)e.h=true;n=r===true?u:r(u);if(n===t.P){t.rej(D(p+"-chain cycle"))}else if(a=i(n)){a.call(n,t.res,t.rej)}else t.res(n)}else t.rej(u)}catch(o){t.rej(o)}}(n[o++]);n.length=0})}function s(e){var t=this,r,n;if(t.d)return;t.d=true;t=t.r||t;try{if(r=i(e)){n={r:t,d:false};r.call(e,we(s,n,1),we(o,n,1))}else{t.v=e;t.s=1;u(t)}}catch(a){o.call(n||{r:t,d:false},a)}}function o(e){var t=this;if(t.d)return;t.d=true;t=t.r||t;t.v=e;t.s=2;u(t,true)}function f(e){var t=yt(e)[Ft];return t!=n?t:e}e=function(t){pt(t);xt(this,e,p);var i={p:this,c:[],s:0,d:false,v:n,h:false};St(this,r,i);try{t(we(s,i,1),we(o,i,1))}catch(a){o.call(i,a)}};Ct(e[w],{then:function(t,i){var a=yt(yt(this)[m])[Ft];var s={ok:fe(t)?t:true,fail:fe(i)?i:false},o=s.P=new(a!=n?a:e)(function(e,t){s.res=pt(e);s.rej=pt(t)}),f=this[r];f.c.push(s);f.s&&u(f);return o},"catch":function(e){return this.then(n,e)}});Ct(e,{all:function(e){var t=f(this),r=[];return new t(function(n,i){lr(e,false,Ye,r);var a=r.length,u=L(a);if(a)He.call(r,function(e,r){t.resolve(e).then(function(e){u[r]=e;--a||n(u)},i)});else n(u)})},race:function(e){var t=f(this);return new t(function(r,n){lr(e,false,function(e){t.resolve(e).then(r,n)})})},reject:function(e){return new(f(this))(function(t,r){r(e)})},resolve:function(e){return oe(e)&&r in e&&be(e)===this[w]?e:new(f(this))(function(t,r){t(e)})}})}(B||U,Pt("record"));he(e,p);It(e);Ht(Yt+zt*!ce(e),{Promise:e})}(t[p]);!function(){var e=Pt("uid"),t=Pt("O1"),i=Pt("weak"),a=Pt("leak"),u=Pt("last"),s=Pt("first"),o=_t?Pt("size"):"size",f=0,c={};function g(i,a,c,l,h,v){var d=h?"set":"add",g=i&&i[w],p={};function y(e,t){if(t!=n)lr(t,h,e[d],e);return e}function x(e,t){var n=g[e];if(r)g[e]=function(e,r){var i=n.call(this,e===0?0:e,r);return t?this:i}}if(!ce(i)||!(v||!Zt&&je(g,V)&&je(g,"entries"))){i=v?function(t){xt(this,i,a);Nt(this,e,f++);y(this,t)}:function(e){var r=this;xt(r,i,a);Nt(r,t,Ee(null));Nt(r,o,0);Nt(r,u,n);Nt(r,s,n);y(r,e)};Ct(Ct(i[w],c),l);v||!_t||_e(i[w],"size",{get:function(){return gt(this[o])}})}else{var E=i,b=new i,k=b[d](v?{}:-0,1),_;if(or(function(e){new i(e)})){i=function(e){xt(this,i,a);return y(new E,e)};i[w]=g;if(r)g[m]=i}v||b[V](function(e,t){_=1/t===-ue});if(_){x("delete");x("has");h&&x("get")}if(_||k!==b)x(d,true)}he(i,a);It(i);p[a]=i;Ht(Yt+Ut+zt*!ce(i),p);v||nr(i,a,function(e,t){Nt(this,qt,{o:e,k:t})},function(){var e=this[qt],t=e.k,r=e.l;while(r&&r.r)r=r.p;if(!e.o||!(e.l=r=r?r.n:e.o[s])){e.o=n;return ir(1)}if(t==Xt)return ir(0,r.k);if(t==Kt)return ir(0,r.v);return ir(0,[r.k,r.v])},h?Xt+Kt:Kt,!h);return i}function p(t,r){if(!oe(t))return(typeof t=="string"?"S":"P")+t;if(Oe(t))return"F";if(!je(t,e)){if(!r)return"E";St(t,e,++f)}return"O"+t[e]}function y(e,r){var n=p(r),i;if(n!="F")return e[t][n];for(i=e[s];i;i=i.n){if(i.k==r)return i}}function x(e,r,i){var a=y(e,r),f,c;if(a)a.v=i;else{e[u]=a={i:c=p(r,true),k:r,v:i,p:f=e[u],n:n,r:false};if(!e[s])e[s]=a;if(f)f.n=a;e[o]++;if(c!="F")e[t][c]=a}return e}var E={clear:function(){for(var e=this,r=e[t],i=e[s];i;i=i.n){i.r=true;if(i.p)i.p=i.p.n=n;delete r[i.i]}e[s]=e[u]=n;e[o]=0},"delete":function(e){var r=this,n=y(r,e);if(n){var i=n.n,a=n.p;delete r[t][n.i];n.r=true;if(a)a.n=i;if(i)i.p=a;if(r[s]==n)r[s]=i;if(r[u]==n)r[u]=a;r[o]--}return!!n},forEach:function(e){var t=we(e,arguments[1],3),r;while(r=r?r.n:this[s]){t(r.v,r.k,this);while(r&&r.r)r=r.p}},has:function(e){return!!y(this,e)}};A=g(A,l,{get:function(e){var t=y(this,e);return t&&t.v},set:function(e,t){return x(this,e===0?0:e,t)}},E,true);M=g(M,h,{add:function(e){return x(this,e=e===0?0:e,e)}},E);function b(t,r,n){if(Oe(yt(r)))k(t).set(r,n);else{je(r,i)||St(r,i,{});r[i][t[e]]=n}return t}function k(e){return e[a]||St(e,a,new A)[a]}var _={"delete":function(t){if(!oe(t))return false;if(Oe(t))return k(this)["delete"](t);return je(t,i)&&je(t[i],this[e])&&delete t[i][this[e]]},has:function(t){if(!oe(t))return false;if(Oe(t))return k(this).has(t);return je(t,i)&&je(t[i],this[e])}};W=g(W,v,{get:function(t){if(oe(t)){if(Oe(t))return k(this).get(t);if(je(t,i))return t[i][this[e]]}},set:function(e,t){return b(this,e,t)}},_,true,true);if(r&&(new W).set(j.freeze(c),7).get(c)!=7){He.call(ze("delete,has,get,set"),function(e){var t=W[w][e];W[w][e]=function(r,n){if(oe(r)&&Oe(r)){var i=k(this)[e](r,n);return e=="set"?this:i}return t.call(this,r,n)}})}G=g(G,d,{add:function(e){return b(this,e,true)}},_,false,true)}();!function(){function e(e){var t=[],r;for(r in e)t.push(r);Nt(this,qt,{o:e,a:t,i:0})}tr(e,i,function(){var e=this[qt],t=e.a,r;do{if(e.i>=t.length)return ir(1)}while(!((r=t[e.i++])in e.o));return ir(0,r)});function t(e){return function(t){yt(t);try{return e.apply(n,arguments),true}catch(r){return false}}}function r(e,t){var i=arguments.length<3?e:arguments[2],a=Se(yt(e),t),u;if(a)return je(a,"value")?a.value:a.get===n?n:a.get.call(i);return oe(u=be(e))?r(u,t,i):n}function a(e,t,r){var i=arguments.length<4?e:arguments[3],u=Se(yt(e),t),s,o;if(!u){if(oe(o=be(e))){return a(o,t,r,i)}u=wt(0)}if(je(u,"value")){if(u.writable===false||!oe(i))return false;s=Se(i,t)||wt(0);s.value=r;return _e(i,t,s),true}return u.set===n?false:(u.set.call(i,r),true)}var u=j.isExtensible||Ie;var s={apply:we(ge,pe,3),construct:function(e,t){var r=pt(arguments.length<3?e:arguments[2])[w],n=Ee(oe(r)?r:ie),i=pe.call(e,n,t);return oe(i)?i:n},defineProperty:t(_e),deleteProperty:function(e,t){var r=Se(yt(e),t);return r&&!r.configurable?false:delete e[t]},enumerate:function(t){return new e(yt(t))},get:r,getOwnPropertyDescriptor:function(e,t){return Se(yt(e),t)},getPrototypeOf:function(e){return be(yt(e))},has:function(e,t){return t in e},isExtensible:function(e){return!!u(yt(e))},ownKeys:Me,preventExtensions:t(j.preventExtensions||Ie),set:a};if(ke)s.setPrototypeOf=function(e,t){return ke(yt(e),t),true};Ht(Yt,{Reflect:{}});Ht(Dt,"Reflect",s)}();!function(){Ht(Jt,u,{includes:Xe(true)});Ht(Jt,s,{at:ht(true)});function e(e){return function(t){var r=Te(t),n=Ne(t),i=n.length,a=0,u=L(i),s;if(e)while(i>a)u[a]=[s=n[a++],r[s]];else while(i>a)u[a]=r[n[a++]];return u}}Ht(Dt,i,{getOwnPropertyDescriptors:function(e){var t=Te(e),r={};He.call(Me(t),function(e){_e(r,e,wt(0,Se(t,e)))});return r},values:e(false),entries:e(true)});Ht(Dt,f,{escape:lt(/([\\\-[\]{}()*+?.,^$|])/g,"\\$1",true)})}();!function(e){ye=kt(e+"Get",true);var t=kt(e+h,true),r=kt(e+"Delete",true);Ht(Dt,g,{referenceGet:ye,referenceSet:t,referenceDelete:r});St(ae,ye,Re);function n(e){if(e){var n=e[w];St(n,ye,n.get);St(n,t,n.set);St(n,r,n["delete"])}}n(A);n(W)}("reference");!function(e){function t(t,r){He.call(ze(t),function(t){if(t in ne)e[t]=we(ge,ne[t],r)})}t("pop,reverse,shift,keys,values,entries",1);t("indexOf,every,some,forEach,map,filter,find,findIndex,includes",3);t("join,slice,concat,push,splice,unshift,sort,lastIndexOf,"+"reduce,reduceRight,copyWithin,fill,turn");Ht(Dt,u,e)}({});!function(e){if(r&&e&&!(Tt in e[w])){St(e[w],Tt,Bt[u])}Bt.NodeList=Bt[u]}(t.NodeList)}(typeof self!="undefined"&&self.Math===Math?self:Function("return this")(),true)},function(e,t,r){(function(t){!function(t){"use strict";var r=Object.prototype.hasOwnProperty;var n;var i=typeof Symbol==="function"&&Symbol.iterator||"@@iterator";var a=typeof e==="object";var u=t.regeneratorRuntime;if(u){if(a){e.exports=u}return}u=t.regeneratorRuntime=a?e.exports:{};function s(e,t,r,n){return new y(e,t,r||null,n||[])}u.wrap=s;function o(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(n){return{type:"throw",arg:n}}}var f="suspendedStart";var c="suspendedYield";var l="executing";var h="completed";var v={};function d(){}function g(){}var p=g.prototype=y.prototype;d.prototype=p.constructor=g;g.constructor=d;d.displayName="GeneratorFunction";u.isGeneratorFunction=function(e){var t=typeof e==="function"&&e.constructor;return t?t===d||(t.displayName||t.name)==="GeneratorFunction":false};u.mark=function(e){e.__proto__=g;e.prototype=Object.create(p);return e};u.async=function(e,t,r,n){return new Promise(function(i,a){var u=s(e,t,r,n);var f=l.bind(u.next);var c=l.bind(u["throw"]);function l(e){var t=o(this,null,e);if(t.type==="throw"){a(t.arg);return}var r=t.arg;if(r.done){i(r.value)}else{Promise.resolve(r.value).then(f,c)}}f()})};function y(e,t,r,i){var a=t?Object.create(t.prototype):this;var u=new m(i);var s=f;function d(t,i){if(s===l){throw new Error("Generator is already running")}if(s===h){return b()}while(true){var a=u.delegate;if(a){var d=o(a.iterator[t],a.iterator,i);if(d.type==="throw"){u.delegate=null;t="throw";i=d.arg;continue}t="next";i=n;var g=d.arg;if(g.done){u[a.resultName]=g.value;u.next=a.nextLoc}else{s=c;return g}u.delegate=null}if(t==="next"){if(s===f&&typeof i!=="undefined"){throw new TypeError("attempt to send "+JSON.stringify(i)+" to newborn generator")}if(s===c){u.sent=i}else{delete u.sent}}else if(t==="throw"){if(s===f){s=h;throw i}if(u.dispatchException(i)){t="next";i=n}}else if(t==="return"){u.abrupt("return",i)}s=l;var d=o(e,r,u);if(d.type==="normal"){s=u.done?h:c;var g={value:d.arg,done:u.done};if(d.arg===v){if(u.delegate&&t==="next"){i=n}}else{return g}}else if(d.type==="throw"){s=h;if(t==="next"){u.dispatchException(d.arg)}else{i=d.arg}}}}a.next=d.bind(a,"next");a["throw"]=d.bind(a,"throw");a["return"]=d.bind(a,"return");return a}p[i]=function(){return this};p.toString=function(){return"[object Generator]"};function x(e){var t={tryLoc:e[0]};if(1 in e){t.catchLoc=e[1]}if(2 in e){t.finallyLoc=e[2];t.afterLoc=e[3]}this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal";delete t.arg;e.completion=t}function m(e){this.tryEntries=[{tryLoc:"root"}];e.forEach(x,this);this.reset()}u.keys=function(e){var t=[];for(var r in e){t.push(r)}t.reverse();return function n(){while(t.length){var r=t.pop();if(r in e){n.value=r;n.done=false;return n}}n.done=true;return n}};function E(e){if(e){var t=e[i];if(t){return t.call(e)}if(typeof e.next==="function"){return e}if(!isNaN(e.length)){var a=-1,u=function s(){while(++a<e.length){if(r.call(e,a)){s.value=e[a];s.done=false;return s}}s.value=n;s.done=true;return s};return u.next=u}}return{next:b}}u.values=E;function b(){return{value:n,done:true}}m.prototype={constructor:m,reset:function(){this.prev=0;this.next=0;this.sent=n;this.done=false;this.delegate=null;this.tryEntries.forEach(w);for(var e=0,t;r.call(this,t="t"+e)||e<20;++e){this[t]=null}},stop:function(){this.done=true;var e=this.tryEntries[0];var t=e.completion;if(t.type==="throw"){throw t.arg}return this.rval},dispatchException:function(e){if(this.done){throw e}var t=this;function n(r,n){u.type="throw";u.arg=e;t.next=r;return!!n}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i];var u=a.completion;if(a.tryLoc==="root"){return n("end")}if(a.tryLoc<=this.prev){var s=r.call(a,"catchLoc");var o=r.call(a,"finallyLoc");if(s&&o){if(this.prev<a.catchLoc){return n(a.catchLoc,true)}else if(this.prev<a.finallyLoc){return n(a.finallyLoc)}}else if(s){if(this.prev<a.catchLoc){return n(a.catchLoc,true)}}else if(o){if(this.prev<a.finallyLoc){return n(a.finallyLoc)}}else{throw new Error("try statement without catch or finally")}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}if(a&&(e==="break"||e==="continue")&&a.tryLoc<=t&&t<a.finallyLoc){a=null}var u=a?a.completion:{};u.type=e;u.arg=t;if(a){this.next=a.finallyLoc}else{this.complete(u)}return v},complete:function(e,t){if(e.type==="throw"){throw e.arg}if(e.type==="break"||e.type==="continue"){this.next=e.arg}else if(e.type==="return"){this.rval=e.arg;this.next="end"}else if(e.type==="normal"&&t){this.next=t}return v},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e){return this.complete(r.completion,r.afterLoc)}}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(n.type==="throw"){var i=n.arg;w(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){this.delegate={iterator:E(e),resultName:t,nextLoc:r};return v}}}(typeof t==="object"?t:typeof window==="object"?window:this)}).call(t,function(){return this}())}])});
//# sourceMappingURL=dist/js-graph.full.min.js.map

@@ -818,2 +818,180 @@ (function webpackUniversalModuleDefinition(root, factory) {

}, {
key: "verticesWithPathFrom",
value: function verticesWithPathFrom(from) {
if (!this.hasVertex(from)) {
throw new JsGraph.VertexNotExistsError(from);
}
return this._verticesWithPathFrom(from, new Set());
}
}, {
key: "_verticesWithPathFrom",
value: regeneratorRuntime.mark(function _verticesWithPathFrom(from, done) {
var _this = this;
var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, to;
return regeneratorRuntime.wrap(function _verticesWithPathFrom$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
_iteratorNormalCompletion = true;
_didIteratorError = false;
_iteratorError = undefined;
context$2$0.prev = 3;
_iterator = _this._edges.get(from).keys()[Symbol.iterator]();
case 5:
if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
context$2$0.next = 15;
break;
}
to = _step.value;
if (!(_this.hasEdge(from, to) && !done.has(to))) {
context$2$0.next = 12;
break;
}
done.add(to);
context$2$0.next = 11;
return [to, _this._vertices.get(to)];
case 11:
return context$2$0.delegateYield(_this._verticesWithPathFrom(to, done), "t5", 12);
case 12:
_iteratorNormalCompletion = true;
context$2$0.next = 5;
break;
case 15:
context$2$0.next = 21;
break;
case 17:
context$2$0.prev = 17;
context$2$0.t6 = context$2$0["catch"](3);
_didIteratorError = true;
_iteratorError = context$2$0.t6;
case 21:
context$2$0.prev = 21;
context$2$0.prev = 22;
if (!_iteratorNormalCompletion && _iterator["return"]) {
_iterator["return"]();
}
case 24:
context$2$0.prev = 24;
if (!_didIteratorError) {
context$2$0.next = 27;
break;
}
throw _iteratorError;
case 27:
return context$2$0.finish(24);
case 28:
return context$2$0.finish(21);
case 29:
case "end":
return context$2$0.stop();
}
}, _verticesWithPathFrom, this, [[3, 17, 21, 29], [22,, 24, 28]]);
})
}, {
key: "verticesWithPathTo",
value: function verticesWithPathTo(to) {
if (!this.hasVertex(to)) {
throw new JsGraph.VertexNotExistsError(to);
}
return this._verticesWithPathTo(to, new Set());
}
}, {
key: "_verticesWithPathTo",
value: regeneratorRuntime.mark(function _verticesWithPathTo(to, done) {
var _this = this;
var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, from;
return regeneratorRuntime.wrap(function _verticesWithPathTo$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
_iteratorNormalCompletion = true;
_didIteratorError = false;
_iteratorError = undefined;
context$2$0.prev = 3;
_iterator = _this._reverseEdges.get(to)[Symbol.iterator]();
case 5:
if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
context$2$0.next = 15;
break;
}
from = _step.value;
if (!(_this.hasEdge(from, to) && !done.has(from))) {
context$2$0.next = 12;
break;
}
done.add(from);
context$2$0.next = 11;
return [from, _this._vertices.get(from)];
case 11:
return context$2$0.delegateYield(_this._verticesWithPathTo(from, done), "t7", 12);
case 12:
_iteratorNormalCompletion = true;
context$2$0.next = 5;
break;
case 15:
context$2$0.next = 21;
break;
case 17:
context$2$0.prev = 17;
context$2$0.t8 = context$2$0["catch"](3);
_didIteratorError = true;
_iteratorError = context$2$0.t8;
case 21:
context$2$0.prev = 21;
context$2$0.prev = 22;
if (!_iteratorNormalCompletion && _iterator["return"]) {
_iterator["return"]();
}
case 24:
context$2$0.prev = 24;
if (!_didIteratorError) {
context$2$0.next = 27;
break;
}
throw _iteratorError;
case 27:
return context$2$0.finish(24);
case 28:
return context$2$0.finish(21);
case 29:
case "end":
return context$2$0.stop();
}
}, _verticesWithPathTo, this, [[3, 17, 21, 29], [22,, 24, 28]]);
})
}, {
key: "vertices_topologically",

@@ -860,3 +1038,3 @@ value: regeneratorRuntime.mark(function vertices_topologically() {

b = _step$value[0];
return context$3$0.delegateYield(visit(b), "t5", 15);
return context$3$0.delegateYield(visit(b), "t9", 15);

@@ -874,5 +1052,5 @@ case 15:

context$3$0.prev = 20;
context$3$0.t6 = context$3$0["catch"](9);
context$3$0.t10 = context$3$0["catch"](9);
_didIteratorError = true;
_iteratorError = context$3$0.t6;
_iteratorError = context$3$0.t10;

@@ -953,3 +1131,3 @@ case 24:

return context$2$0.delegateYield(visit(a), "t7", 13);
return context$2$0.delegateYield(visit(a), "t11", 13);

@@ -967,5 +1145,5 @@ case 13:

context$2$0.prev = 18;
context$2$0.t8 = context$2$0["catch"](6);
context$2$0.t12 = context$2$0["catch"](6);
_didIteratorError = true;
_iteratorError = context$2$0.t8;
_iteratorError = context$2$0.t12;

@@ -1038,2 +1216,32 @@ case 22:

}, {
key: "eachEdge",
value: function eachEdge(handler) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = this.edges()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var args = _step.value;
if (handler.apply(undefined, _toConsumableArray(args)) === false) {
break;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator["return"]) {
_iterator["return"]();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}, {
key: "eachVertexFrom",

@@ -1099,4 +1307,4 @@ value: function eachVertexFrom(from, handler) {

}, {
key: "eachEdge",
value: function eachEdge(handler) {
key: "eachVertexWithPathFrom",
value: function eachVertexWithPathFrom(from, handler) {
var _iteratorNormalCompletion = true;

@@ -1107,3 +1315,3 @@ var _didIteratorError = false;

try {
for (var _iterator = this.edges()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
for (var _iterator = this.verticesWithPathFrom(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var args = _step.value;

@@ -1131,2 +1339,32 @@

}, {
key: "eachVertexWithPathTo",
value: function eachVertexWithPathTo(to, handler) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = this.verticesWithPathTo(to)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var args = _step.value;
if (handler.apply(undefined, _toConsumableArray(args)) === false) {
break;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator["return"]) {
_iterator["return"]();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
}, {
key: "eachVertexTopologically",

@@ -1185,8 +1423,93 @@ value: function eachVertexTopologically(handler) {

}, {
key: "hasCycle",
key: "equals",
//////////////////////////////////////
////////// Advanced Queries //////////
//////////////////////////////////////
////////////////////////////////////////
////////// (Advanced) Queries //////////
////////////////////////////////////////
value: function equals(other) {
var eq = arguments[1] === undefined ? function (x, y, from, to) {
return x === y;
} : arguments[1];
if (!(other instanceof JsGraph)) {
return false;
}
if (this.vertexCount() !== other.vertexCount()) {
return false;
}
if (this.edgeCount() !== other.edgeCount()) {
return false;
}
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = this.vertices()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var _step$value = _slicedToArray(_step.value, 2);
var key = _step$value[0];
var value = _step$value[1];
if (!other.hasVertex(key)) {
return false;
}
if (!eq(value, other.vertexValue(key), key)) {
return false;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator["return"]) {
_iterator["return"]();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = this.edges()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var _step2$value = _slicedToArray(_step2.value, 3);
var from = _step2$value[0];
var to = _step2$value[1];
var value = _step2$value[2];
if (!other.hasEdge(from, to)) {
return false;
}
if (!eq(value, other.edgeValue(from, to), from, to)) {
return false;
}
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2["return"]) {
_iterator2["return"]();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
return true;
}
}, {
key: "hasCycle",
value: function hasCycle() {

@@ -1270,2 +1593,6 @@ var _this = this;

value: function clone() {
var transform = arguments[0] === undefined ? function (v) {
return v;
} : arguments[0];
var result = new JsGraph();

@@ -1283,3 +1610,3 @@ var _iteratorNormalCompletion = true;

result.addVertex(key, val);
result.addVertex(key, transform(val));
}

@@ -1313,3 +1640,3 @@ } catch (err) {

result.addEdge(from, to, val);
result.addEdge(from, to, transform(val));
}

@@ -1316,0 +1643,0 @@ } catch (err) {

@@ -1,2 +0,2 @@

(function e(r,t){if(typeof exports==="object"&&typeof module==="object")module.exports=t();else if(typeof define==="function"&&define.amd)define(t);else if(typeof exports==="object")exports["JsGraph"]=t();else r["JsGraph"]=t()})(this,function(){return function(e){var r={};function t(n){if(r[n])return r[n].exports;var a=r[n]={exports:{},id:n,loaded:false};e[n].call(a.exports,a,a.exports,t);a.loaded=true;return a.exports}t.m=e;t.c=r;t.p="";return t(0)}([function(e,r,t){e.exports=t(2)},,function(e,r,t){"use strict";var n=function(e,r){if(Array.isArray(e)){return e}else if(Symbol.iterator in Object(e)){var t=[];for(var n=e[Symbol.iterator](),a;!(a=n.next()).done;){t.push(a.value);if(r&&t.length===r)break}return t}else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}};var a=function(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r<e.length;r++)t[r]=e[r];return t}else{return Array.from(e)}};var i=function(e,r,t){return Object.defineProperty(e,r,{value:t,enumerable:true,configurable:true,writable:true})};var s=function(e,r){if(typeof r!=="function"&&r!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof r)}e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(r)e.__proto__=r};var u=function(){function e(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.configurable=true;if(n.value)n.writable=true;Object.defineProperty(e,n.key,n)}}return function(r,t,n){if(t)e(r.prototype,t);if(n)e(r,n);return r}}();var o=function(){function e(e,r){for(var t in r){var n=r[t];n.configurable=true;if(n.value)n.writable=true}Object.defineProperties(e,r)}return function(r,t,n){if(t)e(r.prototype,t);if(n)e(r,n);return r}}();var f=function(e,r){if(!(e instanceof r)){throw new TypeError("Cannot call a class as a function")}};var h=function(){function e(){f(this,e);this._callbacks=new Set}o(e,{add:{value:function r(e){var r=this;if(!this._callbacks.has(e)){this._callbacks.add(e)}return function(){r._callbacks["delete"](e)}}},fire:{value:function t(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++){r[t]=arguments[t]}var n=true;var a=false;var i=undefined;try{for(var s=this._callbacks[Symbol.iterator](),u;!(n=(u=s.next()).done);n=true){var o=u.value;o.apply(undefined,r)}}catch(f){a=true;i=f}finally{try{if(!n&&s["return"]){s["return"]()}}finally{if(a){throw i}}}}}});return e}();var c=function(){function e(){f(this,e);this._vertices=new Map;this._edges=new Map;this._reverseEdges=new Map;this._vertexCount=0;this._edgeCount=0;this._addVertexCallbacks=new h;this._removeVertexCallbacks=new h;this._addEdgeCallbacks=new h;this._removeEdgeCallbacks=new h}u(e,[{key:"onAddVertex",value:function r(e){return this._addVertexCallbacks.add(e)}},{key:"onRemoveVertex",value:function t(e){return this._removeVertexCallbacks.add(e)}},{key:"addNewVertex",value:function i(r,t){if(this.hasVertex(r)){throw new e.VertexExistsError(r,this._vertices.get(r))}this._vertices.set(r,t);this._edges.set(r,new Map);this._reverseEdges.set(r,new Set);this._vertexCount+=1;this._addVertexCallbacks.fire(r,t)}},{key:"setVertex",value:function s(r,t){if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}this._vertices.set(r,t)}},{key:"ensureVertex",value:function o(e,r){if(!this.hasVertex(e)){this.addNewVertex(e,r)}}},{key:"addVertex",value:function c(e,r){if(this.hasVertex(e)){this.setVertex(e,r)}else{this.addNewVertex(e,r)}}},{key:"removeExistingVertex",value:function v(r){if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}if(this._edges.get(r).size>0){throw new e.HasConnectedEdgesError(r)}if(this._reverseEdges.get(r).size>0){throw new e.HasConnectedEdgesError(r)}var t=this._vertices.get(r);this._vertices["delete"](r);this._vertexCount-=1;this._removeVertexCallbacks.fire(r,t)}},{key:"destroyExistingVertex",value:function l(r){var t=this;if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}this.eachVertexFrom(r,function(e){t.removeEdge(r,e)});this.eachVertexTo(r,function(e){t.removeEdge(e,r)});this.removeExistingVertex(r)}},{key:"removeVertex",value:function d(e){if(this.hasVertex(e)){this.removeExistingVertex(e)}}},{key:"destroyVertex",value:function g(e){if(this.hasVertex(e)){this.destroyExistingVertex(e)}}},{key:"vertexCount",value:function x(){return this._vertexCount}},{key:"hasVertex",value:function y(e){return this._vertices.has(e)}},{key:"vertexValue",value:function E(e){return this._vertices.get(e)}},{key:"onAddEdge",value:function p(e){return this._addEdgeCallbacks.add(e)}},{key:"onRemoveEdge",value:function k(e){return this._removeEdgeCallbacks.add(e)}},{key:"addNewEdge",value:function w(r,t,n){if(this.hasEdge(r,t)){throw new e.EdgeExistsError(r,t,this.edgeValue(r,t))}if(!this.hasVertex(r)){if(this.hasVertex(t)){throw new e.VertexNotExistsError(r)}else{throw new e.VertexNotExistsError(r).v(t)}}else if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}this._edges.get(r).set(t,n);this._reverseEdges.get(t).add(r);this._edgeCount+=1;this._addEdgeCallbacks.fire(r,t,n)}},{key:"createNewEdge",value:function b(r,t,n){if(this.hasEdge(r,t)){throw new e.EdgeExistsError(r,t,this.edgeValue(r,t))}this.ensureVertex(r);this.ensureVertex(t);this.addNewEdge(r,t,n)}},{key:"setEdge",value:function m(r,t,n){if(!this.hasEdge(r,t)){throw new e.EdgeNotExistsError(r,t)}this._edges.get(r).set(t,n)}},{key:"spanEdge",value:function V(r,t,n){if(!this.hasVertex(r)){if(this.hasVertex(t)){throw new e.VertexNotExistsError(r)}else{throw new e.VertexNotExistsError(r).v(t)}}else if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}if(!this.hasEdge(r,t)){this.addNewEdge(r,t,n)}}},{key:"addEdge",value:function _(e,r,t){if(this.hasEdge(e,r)){this.setEdge(e,r,t)}else{this.addNewEdge(e,r,t)}}},{key:"ensureEdge",value:function C(e,r,t){if(!this.hasEdge(e,r)){this.createNewEdge(e,r,t)}}},{key:"createEdge",value:function S(e,r,t){if(this.hasEdge(e,r)){this.setEdge(e,r,t)}else{this.createNewEdge(e,r,t)}}},{key:"removeExistingEdge",value:function N(r,t){if(!this.hasEdge(r,t)){throw new e.EdgeNotExistsError(r,t)}var n=this._edges.get(r).get(t);this._edges.get(r)["delete"](t);this._reverseEdges.get(t)["delete"](r);this._edgeCount-=1;this._removeEdgeCallbacks.fire(r,t,n)}},{key:"removeEdge",value:function j(e,r){if(this.hasEdge(e,r)){this.removeExistingEdge(e,r)}}},{key:"edgeCount",value:function T(){return this._edgeCount}},{key:"hasEdge",value:function R(e,r){return this.hasVertex(e)&&this.hasVertex(r)&&this._edges.has(e)&&this._edges.get(e).has(r)}},{key:"edgeValue",value:function M(e,r){return this.hasEdge(e,r)?this._edges.get(e).get(r):undefined}},{key:Symbol.iterator,value:function(){return this.vertices()}},{key:"vertices",value:regeneratorRuntime.mark(function O(){var e=this;var r,t,a,i,s,u,o,f,h;return regeneratorRuntime.wrap(function c(v){while(1)switch(v.prev=v.next){case 0:r=new Set;t=true;a=false;i=undefined;v.prev=4;s=e._vertices[Symbol.iterator]();case 6:if(t=(u=s.next()).done){v.next=17;break}o=n(u.value,2);f=o[0];h=o[1];if(!(e.hasVertex(f)&&!r.has(f))){v.next=14;break}r.add(f);v.next=14;return[f,h];case 14:t=true;v.next=6;break;case 17:v.next=23;break;case 19:v.prev=19;v.t0=v["catch"](4);a=true;i=v.t0;case 23:v.prev=23;v.prev=24;if(!t&&s["return"]){s["return"]()}case 26:v.prev=26;if(!a){v.next=29;break}throw i;case 29:return v.finish(26);case 30:return v.finish(23);case 31:case"end":return v.stop()}},O,this,[[4,19,23,31],[24,,26,30]])})},{key:"edges",value:regeneratorRuntime.mark(function A(){var e=this;var r,t,n,a,i,s,u,o,f,h,c,v,l;return regeneratorRuntime.wrap(function d(g){while(1)switch(g.prev=g.next){case 0:r=new Map;t=true;n=false;a=undefined;g.prev=4;i=e._edges.keys()[Symbol.iterator]();case 6:if(t=(s=i.next()).done){g.next=40;break}u=s.value;if(!r.has(u)){r.set(u,new Set)}o=true;f=false;h=undefined;g.prev=12;c=e._edges.get(u).keys()[Symbol.iterator]();case 14:if(o=(v=c.next()).done){g.next=23;break}l=v.value;if(!(e.hasEdge(u,l)&&!r.get(u).has(l))){g.next=20;break}r.get(u).add(l);g.next=20;return[u,l,e._edges.get(u).get(l)];case 20:o=true;g.next=14;break;case 23:g.next=29;break;case 25:g.prev=25;g.t1=g["catch"](12);f=true;h=g.t1;case 29:g.prev=29;g.prev=30;if(!o&&c["return"]){c["return"]()}case 32:g.prev=32;if(!f){g.next=35;break}throw h;case 35:return g.finish(32);case 36:return g.finish(29);case 37:t=true;g.next=6;break;case 40:g.next=46;break;case 42:g.prev=42;g.t2=g["catch"](4);n=true;a=g.t2;case 46:g.prev=46;g.prev=47;if(!t&&i["return"]){i["return"]()}case 49:g.prev=49;if(!n){g.next=52;break}throw a;case 52:return g.finish(49);case 53:return g.finish(46);case 54:case"end":return g.stop()}},A,this,[[4,42,46,54],[12,25,29,37],[30,,32,36],[47,,49,53]])})},{key:"verticesFrom",value:function F(r){if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}return this._verticesFrom(r)}},{key:"_verticesFrom",value:regeneratorRuntime.mark(function P(e){var r=this;var t,n,a,i,s,u,o;return regeneratorRuntime.wrap(function f(h){while(1)switch(h.prev=h.next){case 0:t=new Set;n=true;a=false;i=undefined;h.prev=4;s=r._edges.get(e).keys()[Symbol.iterator]();case 6:if(n=(u=s.next()).done){h.next=15;break}o=u.value;if(!(r.hasEdge(e,o)&&!t.has(o))){h.next=12;break}t.add(o);h.next=12;return[o,r._vertices.get(o),r._edges.get(e).get(o)];case 12:n=true;h.next=6;break;case 15:h.next=21;break;case 17:h.prev=17;h.t3=h["catch"](4);a=true;i=h.t3;case 21:h.prev=21;h.prev=22;if(!n&&s["return"]){s["return"]()}case 24:h.prev=24;if(!a){h.next=27;break}throw i;case 27:return h.finish(24);case 28:return h.finish(21);case 29:case"end":return h.stop()}},P,this,[[4,17,21,29],[22,,24,28]])})},{key:"verticesTo",value:function H(r){if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}return this._verticesTo(r)}},{key:"_verticesTo",value:regeneratorRuntime.mark(function z(e){var r=this;var t,n,a,i,s,u,o;return regeneratorRuntime.wrap(function f(h){while(1)switch(h.prev=h.next){case 0:t=new Set;n=true;a=false;i=undefined;h.prev=4;s=r._reverseEdges.get(e)[Symbol.iterator]();case 6:if(n=(u=s.next()).done){h.next=15;break}o=u.value;if(!(r.hasEdge(o,e)&&!t.has(o))){h.next=12;break}t.add(o);h.next=12;return[o,r._vertices.get(o),r._edges.get(o).get(e)];case 12:n=true;h.next=6;break;case 15:h.next=21;break;case 17:h.prev=17;h.t4=h["catch"](4);a=true;i=h.t4;case 21:h.prev=21;h.prev=22;if(!n&&s["return"]){s["return"]()}case 24:h.prev=24;if(!a){h.next=27;break}throw i;case 27:return h.finish(24);case 28:return h.finish(21);case 29:case"end":return h.stop()}},z,this,[[4,17,21,29],[22,,24,28]])})},{key:"vertices_topologically",value:regeneratorRuntime.mark(function G(){var r=this;var t=regeneratorRuntime.mark(function d(r){var t,u,o,f,h,c,v,l,g;return regeneratorRuntime.wrap(function x(y){while(1)switch(y.prev=y.next){case 0:a.push(r);t=a.indexOf(r);if(!(t!==a.length-1)){y.next=5;break}u=a.slice(t+1).reverse();throw new e.CycleError(u);case 5:if(i.has(r)){y.next=36;break}o=true;f=false;h=undefined;y.prev=9;c=s.verticesTo(r)[Symbol.iterator]();case 11:if(o=(v=c.next()).done){y.next=18;break}l=n(v.value,1);g=l[0];return y.delegateYield(d(g),"t5",15);case 15:o=true;y.next=11;break;case 18:y.next=24;break;case 20:y.prev=20;y.t6=y["catch"](9);f=true;h=y.t6;case 24:y.prev=24;y.prev=25;if(!o&&c["return"]){c["return"]()}case 27:y.prev=27;if(!f){y.next=30;break}throw h;case 30:return y.finish(27);case 31:return y.finish(24);case 32:if(!s.hasVertex(r)){y.next=35;break}y.next=35;return[r,s._vertices.get(r)];case 35:i.add(r);case 36:a.pop();case 37:case"end":return y.stop()}},d,this,[[9,20,24,32],[25,,27,31]])});var a,i,s,u,o,f,h,c,v,l;return regeneratorRuntime.wrap(function g(e){while(1)switch(e.prev=e.next){case 0:a=[];i=new Set;s=r;u=true;o=false;f=undefined;e.prev=6;h=r.vertices()[Symbol.iterator]();case 8:if(u=(c=h.next()).done){e.next=16;break}v=n(c.value,1);l=v[0];if(i.has(l)){e.next=13;break}return e.delegateYield(t(l),"t7",13);case 13:u=true;e.next=8;break;case 16:e.next=22;break;case 18:e.prev=18;e.t8=e["catch"](6);o=true;f=e.t8;case 22:e.prev=22;e.prev=23;if(!u&&h["return"]){h["return"]()}case 25:e.prev=25;if(!o){e.next=28;break}throw f;case 28:return e.finish(25);case 29:return e.finish(22);case 30:case"end":return e.stop()}},G,this,[[6,18,22,30],[23,,25,29]])})},{key:"eachVertex",value:function J(e){var r=true;var t=false;var n=undefined;try{for(var i=this.vertices()[Symbol.iterator](),s;!(r=(s=i.next()).done);r=true){var u=s.value;if(e.apply(undefined,a(u))===false){break}}}catch(o){t=true;n=o}finally{try{if(!r&&i["return"]){i["return"]()}}finally{if(t){throw n}}}}},{key:"eachVertexFrom",value:function Y(e,r){var t=true;var n=false;var i=undefined;try{for(var s=this.verticesFrom(e)[Symbol.iterator](),u;!(t=(u=s.next()).done);t=true){var o=u.value;if(r.apply(undefined,a(o))===false){break}}}catch(f){n=true;i=f}finally{try{if(!t&&s["return"]){s["return"]()}}finally{if(n){throw i}}}}},{key:"eachVertexTo",value:function I(e,r){var t=true;var n=false;var i=undefined;try{for(var s=this.verticesTo(e)[Symbol.iterator](),u;!(t=(u=s.next()).done);t=true){var o=u.value;if(r.apply(undefined,a(o))===false){break}}}catch(f){n=true;i=f}finally{try{if(!t&&s["return"]){s["return"]()}}finally{if(n){throw i}}}}},{key:"eachEdge",value:function q(e){var r=true;var t=false;var n=undefined;try{for(var i=this.edges()[Symbol.iterator](),s;!(r=(s=i.next()).done);r=true){var u=s.value;if(e.apply(undefined,a(u))===false){break}}}catch(o){t=true;n=o}finally{try{if(!r&&i["return"]){i["return"]()}}finally{if(t){throw n}}}}},{key:"eachVertexTopologically",value:function B(e){var r=true;var t=false;var n=undefined;try{for(var i=this.vertices_topologically()[Symbol.iterator](),s;!(r=(s=i.next()).done);r=true){var u=s.value;if(e.apply(undefined,a(u))===false){break}}}catch(o){t=true;n=o}finally{try{if(!r&&i["return"]){i["return"]()}}finally{if(t){throw n}}}}},{key:"clearEdges",value:function D(){var e=this;this.eachEdge(function(r,t){e.removeEdge(r,t)})}},{key:"clear",value:function K(){var e=this;this.eachVertex(function(r){e.destroyVertex(r)})}},{key:"hasCycle",value:function L(){var e=this;var r={};var t={};var n=false;var a=function(i){if(r[i]){n=true;return}if(t[i]){return}t[i]=true;r[i]=true;e.eachVertexFrom(i,function(e){a(e);if(n){return false}});r[i]=false};this.eachVertex(function(e){a(e);if(n){return false}});return n}},{key:"hasPath",value:function Q(e,r){var t=this;if(!this.hasVertex(e)||!this.hasVertex(r)){return false}var n={};var a=function(e){if(t.hasEdge(e,r)){return true}n[e]=true;var i=false;t.eachVertexFrom(e,function(e){if(!i&&!n[e]&&a(e)){i=true}});delete n[e];return i};return a(e)}},{key:"clone",value:function U(){var r=new e;var t=true;var a=false;var i=undefined;try{for(var s=this.vertices()[Symbol.iterator](),u;!(t=(u=s.next()).done);t=true){var o=n(u.value,2);var f=o[0];var h=o[1];r.addVertex(f,h)}}catch(c){a=true;i=c}finally{try{if(!t&&s["return"]){s["return"]()}}finally{if(a){throw i}}}var v=true;var l=false;var d=undefined;try{for(var g=this.edges()[Symbol.iterator](),x;!(v=(x=g.next()).done);v=true){var y=n(x.value,3);var E=y[0];var p=y[1];var h=y[2];r.addEdge(E,p,h)}}catch(c){l=true;d=c}finally{try{if(!v&&g["return"]){g["return"]()}}finally{if(l){throw d}}}return r}},{key:"transitiveReduction",value:function W(){var e=this.clone();var r=true;var t=false;var a=undefined;try{for(var i=this.vertices()[Symbol.iterator](),s;!(r=(s=i.next()).done);r=true){var u=n(s.value,1);var o=u[0];var f=true;var h=false;var c=undefined;try{for(var v=this.vertices()[Symbol.iterator](),l;!(f=(l=v.next()).done);f=true){var d=n(l.value,1);var g=d[0];if(e.hasEdge(o,g)){var x=true;var y=false;var E=undefined;try{for(var p=this.vertices()[Symbol.iterator](),k;!(x=(k=p.next()).done);x=true){var w=n(k.value,1);var b=w[0];if(e.hasPath(g,b)){e.removeEdge(o,b)}}}catch(m){y=true;E=m}finally{try{if(!x&&p["return"]){p["return"]()}}finally{if(y){throw E}}}}}}catch(m){h=true;c=m}finally{try{if(!f&&v["return"]){v["return"]()}}finally{if(h){throw c}}}}}catch(m){t=true;a=m}finally{try{if(!r&&i["return"]){i["return"]()}}finally{if(t){throw a}}}return e}}]);return e}();e.exports=c;c.VertexExistsError=function(e){function r(e,t){f(this,r);this.vertices={};this.v(e,t)}s(r,e);o(r,{v:{value:function t(e,r){this.vertices[e]=r;this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this.vertices===1?"a vertex":"vertices";this.message="This graph has "+e+" '"+Object.keys(this.vertices).join("', '")+"'"}}});return r}(Error);c.VertexNotExistsError=function(e){function r(e){f(this,r);this.vertices={};this.v(e)}s(r,e);o(r,{v:{value:function t(e){this.vertices[e]=undefined;this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this.vertices===1?"a vertex":"vertices";this.message="This graph does not have "+e+" '"+Object.keys(this.vertices).join("', '")+"'"}}});return r}(Error);c.EdgeExistsError=function(e){function r(e,t,n){f(this,r);this.edges={};this.e(e,t,n)}s(r,e);o(r,{e:{value:function t(e,r,n){this.edges[e]=i({},r,n);this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this;var r=[];Object.keys(this.edges).forEach(function(t){Object.keys(e.edges[t]).forEach(function(e){r.push("('"+t+"', '"+e+"')")})});var t=r.length===1?"an edge":"edges";this.message="This graph has "+t+" "+r.join(", ")}}});return r}(Error);c.EdgeNotExistsError=function(e){function r(e,t){f(this,r);this.edges={};this.e(e,t)}s(r,e);o(r,{e:{value:function t(e,r){this.edges[e]=i({},r,undefined);this._refreshMessage();return this}},_refreshMessage:{value:function n(){var e=this;var r=[];Object.keys(this.edges).forEach(function(t){Object.keys(e.edges[t]).forEach(function(e){r.push("('"+t+"', '"+e+"')")})});var t=r.length===1?"an edge":"edges";this.message="This graph does not have "+t+" "+r.join(", ")}}});return r}(Error);c.HasConnectedEdgesError=function(e){function r(e){f(this,r);this.message="The '"+e+"' vertex has connected edges";this.key=e}s(r,e);return r}(Error);c.CycleError=function(e){function r(e){f(this,r);this.message="This graph contains a cycle: "+e;this.cycle=e}s(r,e);return r}(Error)}])});
(function e(r,t){if(typeof exports==="object"&&typeof module==="object")module.exports=t();else if(typeof define==="function"&&define.amd)define(t);else if(typeof exports==="object")exports["JsGraph"]=t();else r["JsGraph"]=t()})(this,function(){return function(e){var r={};function t(a){if(r[a])return r[a].exports;var n=r[a]={exports:{},id:a,loaded:false};e[a].call(n.exports,n,n.exports,t);n.loaded=true;return n.exports}t.m=e;t.c=r;t.p="";return t(0)}([function(e,r,t){e.exports=t(2)},,function(e,r,t){"use strict";var a=function(e,r){if(Array.isArray(e)){return e}else if(Symbol.iterator in Object(e)){var t=[];for(var a=e[Symbol.iterator](),n;!(n=a.next()).done;){t.push(n.value);if(r&&t.length===r)break}return t}else{throw new TypeError("Invalid attempt to destructure non-iterable instance")}};var n=function(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r<e.length;r++)t[r]=e[r];return t}else{return Array.from(e)}};var i=function(e,r,t){return Object.defineProperty(e,r,{value:t,enumerable:true,configurable:true,writable:true})};var s=function(e,r){if(typeof r!=="function"&&r!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof r)}e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}});if(r)e.__proto__=r};var u=function(){function e(e,r){for(var t=0;t<r.length;t++){var a=r[t];a.configurable=true;if(a.value)a.writable=true;Object.defineProperty(e,a.key,a)}}return function(r,t,a){if(t)e(r.prototype,t);if(a)e(r,a);return r}}();var o=function(){function e(e,r){for(var t in r){var a=r[t];a.configurable=true;if(a.value)a.writable=true}Object.defineProperties(e,r)}return function(r,t,a){if(t)e(r.prototype,t);if(a)e(r,a);return r}}();var f=function(e,r){if(!(e instanceof r)){throw new TypeError("Cannot call a class as a function")}};var h=function(){function e(){f(this,e);this._callbacks=new Set}o(e,{add:{value:function r(e){var r=this;if(!this._callbacks.has(e)){this._callbacks.add(e)}return function(){r._callbacks["delete"](e)}}},fire:{value:function t(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++){r[t]=arguments[t]}var a=true;var n=false;var i=undefined;try{for(var s=this._callbacks[Symbol.iterator](),u;!(a=(u=s.next()).done);a=true){var o=u.value;o.apply(undefined,r)}}catch(f){n=true;i=f}finally{try{if(!a&&s["return"]){s["return"]()}}finally{if(n){throw i}}}}}});return e}();var c=function(){function e(){f(this,e);this._vertices=new Map;this._edges=new Map;this._reverseEdges=new Map;this._vertexCount=0;this._edgeCount=0;this._addVertexCallbacks=new h;this._removeVertexCallbacks=new h;this._addEdgeCallbacks=new h;this._removeEdgeCallbacks=new h}u(e,[{key:"onAddVertex",value:function r(e){return this._addVertexCallbacks.add(e)}},{key:"onRemoveVertex",value:function t(e){return this._removeVertexCallbacks.add(e)}},{key:"addNewVertex",value:function i(r,t){if(this.hasVertex(r)){throw new e.VertexExistsError(r,this._vertices.get(r))}this._vertices.set(r,t);this._edges.set(r,new Map);this._reverseEdges.set(r,new Set);this._vertexCount+=1;this._addVertexCallbacks.fire(r,t)}},{key:"setVertex",value:function s(r,t){if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}this._vertices.set(r,t)}},{key:"ensureVertex",value:function o(e,r){if(!this.hasVertex(e)){this.addNewVertex(e,r)}}},{key:"addVertex",value:function c(e,r){if(this.hasVertex(e)){this.setVertex(e,r)}else{this.addNewVertex(e,r)}}},{key:"removeExistingVertex",value:function v(r){if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}if(this._edges.get(r).size>0){throw new e.HasConnectedEdgesError(r)}if(this._reverseEdges.get(r).size>0){throw new e.HasConnectedEdgesError(r)}var t=this._vertices.get(r);this._vertices["delete"](r);this._vertexCount-=1;this._removeVertexCallbacks.fire(r,t)}},{key:"destroyExistingVertex",value:function l(r){var t=this;if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}this.eachVertexFrom(r,function(e){t.removeEdge(r,e)});this.eachVertexTo(r,function(e){t.removeEdge(e,r)});this.removeExistingVertex(r)}},{key:"removeVertex",value:function d(e){if(this.hasVertex(e)){this.removeExistingVertex(e)}}},{key:"destroyVertex",value:function x(e){if(this.hasVertex(e)){this.destroyExistingVertex(e)}}},{key:"vertexCount",value:function g(){return this._vertexCount}},{key:"hasVertex",value:function y(e){return this._vertices.has(e)}},{key:"vertexValue",value:function k(e){return this._vertices.get(e)}},{key:"onAddEdge",value:function p(e){return this._addEdgeCallbacks.add(e)}},{key:"onRemoveEdge",value:function E(e){return this._removeEdgeCallbacks.add(e)}},{key:"addNewEdge",value:function w(r,t,a){if(this.hasEdge(r,t)){throw new e.EdgeExistsError(r,t,this.edgeValue(r,t))}if(!this.hasVertex(r)){if(this.hasVertex(t)){throw new e.VertexNotExistsError(r)}else{throw new e.VertexNotExistsError(r).v(t)}}else if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}this._edges.get(r).set(t,a);this._reverseEdges.get(t).add(r);this._edgeCount+=1;this._addEdgeCallbacks.fire(r,t,a)}},{key:"createNewEdge",value:function b(r,t,a){if(this.hasEdge(r,t)){throw new e.EdgeExistsError(r,t,this.edgeValue(r,t))}this.ensureVertex(r);this.ensureVertex(t);this.addNewEdge(r,t,a)}},{key:"setEdge",value:function m(r,t,a){if(!this.hasEdge(r,t)){throw new e.EdgeNotExistsError(r,t)}this._edges.get(r).set(t,a)}},{key:"spanEdge",value:function _(r,t,a){if(!this.hasVertex(r)){if(this.hasVertex(t)){throw new e.VertexNotExistsError(r)}else{throw new e.VertexNotExistsError(r).v(t)}}else if(!this.hasVertex(t)){throw new e.VertexNotExistsError(t)}if(!this.hasEdge(r,t)){this.addNewEdge(r,t,a)}}},{key:"addEdge",value:function V(e,r,t){if(this.hasEdge(e,r)){this.setEdge(e,r,t)}else{this.addNewEdge(e,r,t)}}},{key:"ensureEdge",value:function S(e,r,t){if(!this.hasEdge(e,r)){this.createNewEdge(e,r,t)}}},{key:"createEdge",value:function C(e,r,t){if(this.hasEdge(e,r)){this.setEdge(e,r,t)}else{this.createNewEdge(e,r,t)}}},{key:"removeExistingEdge",value:function N(r,t){if(!this.hasEdge(r,t)){throw new e.EdgeNotExistsError(r,t)}var a=this._edges.get(r).get(t);this._edges.get(r)["delete"](t);this._reverseEdges.get(t)["delete"](r);this._edgeCount-=1;this._removeEdgeCallbacks.fire(r,t,a)}},{key:"removeEdge",value:function T(e,r){if(this.hasEdge(e,r)){this.removeExistingEdge(e,r)}}},{key:"edgeCount",value:function R(){return this._edgeCount}},{key:"hasEdge",value:function j(e,r){return this.hasVertex(e)&&this.hasVertex(r)&&this._edges.has(e)&&this._edges.get(e).has(r)}},{key:"edgeValue",value:function P(e,r){return this.hasEdge(e,r)?this._edges.get(e).get(r):undefined}},{key:Symbol.iterator,value:function(){return this.vertices()}},{key:"vertices",value:regeneratorRuntime.mark(function F(){var e=this;var r,t,n,i,s,u,o,f,h;return regeneratorRuntime.wrap(function c(v){while(1)switch(v.prev=v.next){case 0:r=new Set;t=true;n=false;i=undefined;v.prev=4;s=e._vertices[Symbol.iterator]();case 6:if(t=(u=s.next()).done){v.next=17;break}o=a(u.value,2);f=o[0];h=o[1];if(!(e.hasVertex(f)&&!r.has(f))){v.next=14;break}r.add(f);v.next=14;return[f,h];case 14:t=true;v.next=6;break;case 17:v.next=23;break;case 19:v.prev=19;v.t0=v["catch"](4);n=true;i=v.t0;case 23:v.prev=23;v.prev=24;if(!t&&s["return"]){s["return"]()}case 26:v.prev=26;if(!n){v.next=29;break}throw i;case 29:return v.finish(26);case 30:return v.finish(23);case 31:case"end":return v.stop()}},F,this,[[4,19,23,31],[24,,26,30]])})},{key:"edges",value:regeneratorRuntime.mark(function M(){var e=this;var r,t,a,n,i,s,u,o,f,h,c,v,l;return regeneratorRuntime.wrap(function d(x){while(1)switch(x.prev=x.next){case 0:r=new Map;t=true;a=false;n=undefined;x.prev=4;i=e._edges.keys()[Symbol.iterator]();case 6:if(t=(s=i.next()).done){x.next=40;break}u=s.value;if(!r.has(u)){r.set(u,new Set)}o=true;f=false;h=undefined;x.prev=12;c=e._edges.get(u).keys()[Symbol.iterator]();case 14:if(o=(v=c.next()).done){x.next=23;break}l=v.value;if(!(e.hasEdge(u,l)&&!r.get(u).has(l))){x.next=20;break}r.get(u).add(l);x.next=20;return[u,l,e._edges.get(u).get(l)];case 20:o=true;x.next=14;break;case 23:x.next=29;break;case 25:x.prev=25;x.t1=x["catch"](12);f=true;h=x.t1;case 29:x.prev=29;x.prev=30;if(!o&&c["return"]){c["return"]()}case 32:x.prev=32;if(!f){x.next=35;break}throw h;case 35:return x.finish(32);case 36:return x.finish(29);case 37:t=true;x.next=6;break;case 40:x.next=46;break;case 42:x.prev=42;x.t2=x["catch"](4);a=true;n=x.t2;case 46:x.prev=46;x.prev=47;if(!t&&i["return"]){i["return"]()}case 49:x.prev=49;if(!a){x.next=52;break}throw n;case 52:return x.finish(49);case 53:return x.finish(46);case 54:case"end":return x.stop()}},M,this,[[4,42,46,54],[12,25,29,37],[30,,32,36],[47,,49,53]])})},{key:"verticesFrom",value:function O(r){if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}return this._verticesFrom(r)}},{key:"_verticesFrom",value:regeneratorRuntime.mark(function W(e){var r=this;var t,a,n,i,s,u,o;return regeneratorRuntime.wrap(function f(h){while(1)switch(h.prev=h.next){case 0:t=new Set;a=true;n=false;i=undefined;h.prev=4;s=r._edges.get(e).keys()[Symbol.iterator]();case 6:if(a=(u=s.next()).done){h.next=15;break}o=u.value;if(!(r.hasEdge(e,o)&&!t.has(o))){h.next=12;break}t.add(o);h.next=12;return[o,r._vertices.get(o),r._edges.get(e).get(o)];case 12:a=true;h.next=6;break;case 15:h.next=21;break;case 17:h.prev=17;h.t3=h["catch"](4);n=true;i=h.t3;case 21:h.prev=21;h.prev=22;if(!a&&s["return"]){s["return"]()}case 24:h.prev=24;if(!n){h.next=27;break}throw i;case 27:return h.finish(24);case 28:return h.finish(21);case 29:case"end":return h.stop()}},W,this,[[4,17,21,29],[22,,24,28]])})},{key:"verticesTo",value:function A(r){if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}return this._verticesTo(r)}},{key:"_verticesTo",value:regeneratorRuntime.mark(function Y(e){var r=this;var t,a,n,i,s,u,o;return regeneratorRuntime.wrap(function f(h){while(1)switch(h.prev=h.next){case 0:t=new Set;a=true;n=false;i=undefined;h.prev=4;s=r._reverseEdges.get(e)[Symbol.iterator]();case 6:if(a=(u=s.next()).done){h.next=15;break}o=u.value;if(!(r.hasEdge(o,e)&&!t.has(o))){h.next=12;break}t.add(o);h.next=12;return[o,r._vertices.get(o),r._edges.get(o).get(e)];case 12:a=true;h.next=6;break;case 15:h.next=21;break;case 17:h.prev=17;h.t4=h["catch"](4);n=true;i=h.t4;case 21:h.prev=21;h.prev=22;if(!a&&s["return"]){s["return"]()}case 24:h.prev=24;if(!n){h.next=27;break}throw i;case 27:return h.finish(24);case 28:return h.finish(21);case 29:case"end":return h.stop()}},Y,this,[[4,17,21,29],[22,,24,28]])})},{key:"verticesWithPathFrom",value:function H(r){if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}return this._verticesWithPathFrom(r,new Set)}},{key:"_verticesWithPathFrom",value:regeneratorRuntime.mark(function z(e,r){var t=this;var a,n,i,s,u,o;return regeneratorRuntime.wrap(function f(h){while(1)switch(h.prev=h.next){case 0:a=true;n=false;i=undefined;h.prev=3;s=t._edges.get(e).keys()[Symbol.iterator]();case 5:if(a=(u=s.next()).done){h.next=15;break}o=u.value;if(!(t.hasEdge(e,o)&&!r.has(o))){h.next=12;break}r.add(o);h.next=11;return[o,t._vertices.get(o)];case 11:return h.delegateYield(t._verticesWithPathFrom(o,r),"t5",12);case 12:a=true;h.next=5;break;case 15:h.next=21;break;case 17:h.prev=17;h.t6=h["catch"](3);n=true;i=h.t6;case 21:h.prev=21;h.prev=22;if(!a&&s["return"]){s["return"]()}case 24:h.prev=24;if(!n){h.next=27;break}throw i;case 27:return h.finish(24);case 28:return h.finish(21);case 29:case"end":return h.stop()}},z,this,[[3,17,21,29],[22,,24,28]])})},{key:"verticesWithPathTo",value:function G(r){if(!this.hasVertex(r)){throw new e.VertexNotExistsError(r)}return this._verticesWithPathTo(r,new Set)}},{key:"_verticesWithPathTo",value:regeneratorRuntime.mark(function J(e,r){var t=this;var a,n,i,s,u,o;return regeneratorRuntime.wrap(function f(h){while(1)switch(h.prev=h.next){case 0:a=true;n=false;i=undefined;h.prev=3;s=t._reverseEdges.get(e)[Symbol.iterator]();case 5:if(a=(u=s.next()).done){h.next=15;break}o=u.value;if(!(t.hasEdge(o,e)&&!r.has(o))){h.next=12;break}r.add(o);h.next=11;return[o,t._vertices.get(o)];case 11:return h.delegateYield(t._verticesWithPathTo(o,r),"t7",12);case 12:a=true;h.next=5;break;case 15:h.next=21;break;case 17:h.prev=17;h.t8=h["catch"](3);n=true;i=h.t8;case 21:h.prev=21;h.prev=22;if(!a&&s["return"]){s["return"]()}case 24:h.prev=24;if(!n){h.next=27;break}throw i;case 27:return h.finish(24);case 28:return h.finish(21);case 29:case"end":return h.stop()}},J,this,[[3,17,21,29],[22,,24,28]])})},{key:"vertices_topologically",value:regeneratorRuntime.mark(function q(){var r=this;var t=regeneratorRuntime.mark(function d(r){var t,u,o,f,h,c,v,l,x;return regeneratorRuntime.wrap(function g(y){while(1)switch(y.prev=y.next){case 0:n.push(r);t=n.indexOf(r);if(!(t!==n.length-1)){y.next=5;break}u=n.slice(t+1).reverse();throw new e.CycleError(u);case 5:if(i.has(r)){y.next=36;break}o=true;f=false;h=undefined;y.prev=9;c=s.verticesTo(r)[Symbol.iterator]();case 11:if(o=(v=c.next()).done){y.next=18;break}l=a(v.value,1);x=l[0];return y.delegateYield(d(x),"t9",15);case 15:o=true;y.next=11;break;case 18:y.next=24;break;case 20:y.prev=20;y.t10=y["catch"](9);f=true;h=y.t10;case 24:y.prev=24;y.prev=25;if(!o&&c["return"]){c["return"]()}case 27:y.prev=27;if(!f){y.next=30;break}throw h;case 30:return y.finish(27);case 31:return y.finish(24);case 32:if(!s.hasVertex(r)){y.next=35;break}y.next=35;return[r,s._vertices.get(r)];case 35:i.add(r);case 36:n.pop();case 37:case"end":return y.stop()}},d,this,[[9,20,24,32],[25,,27,31]])});var n,i,s,u,o,f,h,c,v,l;return regeneratorRuntime.wrap(function x(e){while(1)switch(e.prev=e.next){case 0:n=[];i=new Set;s=r;u=true;o=false;f=undefined;e.prev=6;h=r.vertices()[Symbol.iterator]();case 8:if(u=(c=h.next()).done){e.next=16;break}v=a(c.value,1);l=v[0];if(i.has(l)){e.next=13;break}return e.delegateYield(t(l),"t11",13);case 13:u=true;e.next=8;break;case 16:e.next=22;break;case 18:e.prev=18;e.t12=e["catch"](6);o=true;f=e.t12;case 22:e.prev=22;e.prev=23;if(!u&&h["return"]){h["return"]()}case 25:e.prev=25;if(!o){e.next=28;break}throw f;case 28:return e.finish(25);case 29:return e.finish(22);case 30:case"end":return e.stop()}},q,this,[[6,18,22,30],[23,,25,29]])})},{key:"eachVertex",value:function I(e){var r=true;var t=false;var a=undefined;try{for(var i=this.vertices()[Symbol.iterator](),s;!(r=(s=i.next()).done);r=true){var u=s.value;if(e.apply(undefined,n(u))===false){break}}}catch(o){t=true;a=o}finally{try{if(!r&&i["return"]){i["return"]()}}finally{if(t){throw a}}}}},{key:"eachEdge",value:function B(e){var r=true;var t=false;var a=undefined;try{for(var i=this.edges()[Symbol.iterator](),s;!(r=(s=i.next()).done);r=true){var u=s.value;if(e.apply(undefined,n(u))===false){break}}}catch(o){t=true;a=o}finally{try{if(!r&&i["return"]){i["return"]()}}finally{if(t){throw a}}}}},{key:"eachVertexFrom",value:function D(e,r){var t=true;var a=false;var i=undefined;try{for(var s=this.verticesFrom(e)[Symbol.iterator](),u;!(t=(u=s.next()).done);t=true){var o=u.value;if(r.apply(undefined,n(o))===false){break}}}catch(f){a=true;i=f}finally{try{if(!t&&s["return"]){s["return"]()}}finally{if(a){throw i}}}}},{key:"eachVertexTo",value:function K(e,r){var t=true;var a=false;var i=undefined;try{for(var s=this.verticesTo(e)[Symbol.iterator](),u;!(t=(u=s.next()).done);t=true){var o=u.value;if(r.apply(undefined,n(o))===false){break}}}catch(f){a=true;i=f}finally{try{if(!t&&s["return"]){s["return"]()}}finally{if(a){throw i}}}}},{key:"eachVertexWithPathFrom",value:function L(e,r){var t=true;var a=false;var i=undefined;try{for(var s=this.verticesWithPathFrom(e)[Symbol.iterator](),u;!(t=(u=s.next()).done);t=true){var o=u.value;if(r.apply(undefined,n(o))===false){break}}}catch(f){a=true;i=f}finally{try{if(!t&&s["return"]){s["return"]()}}finally{if(a){throw i}}}}},{key:"eachVertexWithPathTo",value:function Q(e,r){var t=true;var a=false;var i=undefined;try{for(var s=this.verticesWithPathTo(e)[Symbol.iterator](),u;!(t=(u=s.next()).done);t=true){var o=u.value;if(r.apply(undefined,n(o))===false){break}}}catch(f){a=true;i=f}finally{try{if(!t&&s["return"]){s["return"]()}}finally{if(a){throw i}}}}},{key:"eachVertexTopologically",value:function U(e){var r=true;var t=false;var a=undefined;try{for(var i=this.vertices_topologically()[Symbol.iterator](),s;!(r=(s=i.next()).done);r=true){var u=s.value;if(e.apply(undefined,n(u))===false){break}}}catch(o){t=true;a=o}finally{try{if(!r&&i["return"]){i["return"]()}}finally{if(t){throw a}}}}},{key:"clearEdges",value:function X(){var e=this;this.eachEdge(function(r,t){e.removeEdge(r,t)})}},{key:"clear",value:function Z(){var e=this;this.eachVertex(function(r){e.destroyVertex(r)})}},{key:"equals",value:function $(r){var t=arguments[1]===undefined?function(e,r,t,a){return e===r}:arguments[1];if(!(r instanceof e)){return false}if(this.vertexCount()!==r.vertexCount()){return false}if(this.edgeCount()!==r.edgeCount()){return false}var n=true;var i=false;var s=undefined;try{for(var u=this.vertices()[Symbol.iterator](),o;!(n=(o=u.next()).done);n=true){var f=a(o.value,2);var h=f[0];var c=f[1];if(!r.hasVertex(h)){return false}if(!t(c,r.vertexValue(h),h)){return false}}}catch(v){i=true;s=v}finally{try{if(!n&&u["return"]){u["return"]()}}finally{if(i){throw s}}}var l=true;var d=false;var x=undefined;try{for(var g=this.edges()[Symbol.iterator](),y;!(l=(y=g.next()).done);l=true){var k=a(y.value,3);var p=k[0];var E=k[1];var c=k[2];if(!r.hasEdge(p,E)){return false}if(!t(c,r.edgeValue(p,E),p,E)){return false}}}catch(v){d=true;x=v}finally{try{if(!l&&g["return"]){g["return"]()}}finally{if(d){throw x}}}return true}},{key:"hasCycle",value:function ee(){var e=this;var r={};var t={};var a=false;var n=function(i){if(r[i]){a=true;return}if(t[i]){return}t[i]=true;r[i]=true;e.eachVertexFrom(i,function(e){n(e);if(a){return false}});r[i]=false};this.eachVertex(function(e){n(e);if(a){return false}});return a}},{key:"hasPath",value:function re(e,r){var t=this;if(!this.hasVertex(e)||!this.hasVertex(r)){return false}var a={};var n=function(e){if(t.hasEdge(e,r)){return true}a[e]=true;var i=false;t.eachVertexFrom(e,function(e){if(!i&&!a[e]&&n(e)){i=true}});delete a[e];return i};return n(e)}},{key:"clone",value:function te(){var r=arguments[0]===undefined?function(e){return e}:arguments[0];var t=new e;var n=true;var i=false;var s=undefined;try{for(var u=this.vertices()[Symbol.iterator](),o;!(n=(o=u.next()).done);n=true){var f=a(o.value,2);var h=f[0];var c=f[1];t.addVertex(h,r(c))}}catch(v){i=true;s=v}finally{try{if(!n&&u["return"]){u["return"]()}}finally{if(i){throw s}}}var l=true;var d=false;var x=undefined;try{for(var g=this.edges()[Symbol.iterator](),y;!(l=(y=g.next()).done);l=true){var k=a(y.value,3);var p=k[0];var E=k[1];var c=k[2];t.addEdge(p,E,r(c))}}catch(v){d=true;x=v}finally{try{if(!l&&g["return"]){g["return"]()}}finally{if(d){throw x}}}return t}},{key:"transitiveReduction",value:function ae(){var e=this.clone();var r=true;var t=false;var n=undefined;try{for(var i=this.vertices()[Symbol.iterator](),s;!(r=(s=i.next()).done);r=true){var u=a(s.value,1);var o=u[0];var f=true;var h=false;var c=undefined;try{for(var v=this.vertices()[Symbol.iterator](),l;!(f=(l=v.next()).done);f=true){var d=a(l.value,1);var x=d[0];if(e.hasEdge(o,x)){var g=true;var y=false;var k=undefined;try{for(var p=this.vertices()[Symbol.iterator](),E;!(g=(E=p.next()).done);g=true){var w=a(E.value,1);var b=w[0];if(e.hasPath(x,b)){e.removeEdge(o,b)}}}catch(m){y=true;k=m}finally{try{if(!g&&p["return"]){p["return"]()}}finally{if(y){throw k}}}}}}catch(m){h=true;c=m}finally{try{if(!f&&v["return"]){v["return"]()}}finally{if(h){throw c}}}}}catch(m){t=true;n=m}finally{try{if(!r&&i["return"]){i["return"]()}}finally{if(t){throw n}}}return e}}]);return e}();e.exports=c;c.VertexExistsError=function(e){function r(e,t){f(this,r);this.vertices={};this.v(e,t)}s(r,e);o(r,{v:{value:function t(e,r){this.vertices[e]=r;this._refreshMessage();return this}},_refreshMessage:{value:function a(){var e=this.vertices===1?"a vertex":"vertices";this.message="This graph has "+e+" '"+Object.keys(this.vertices).join("', '")+"'"}}});return r}(Error);c.VertexNotExistsError=function(e){function r(e){f(this,r);this.vertices={};this.v(e)}s(r,e);o(r,{v:{value:function t(e){this.vertices[e]=undefined;this._refreshMessage();return this}},_refreshMessage:{value:function a(){var e=this.vertices===1?"a vertex":"vertices";this.message="This graph does not have "+e+" '"+Object.keys(this.vertices).join("', '")+"'"}}});return r}(Error);c.EdgeExistsError=function(e){function r(e,t,a){f(this,r);this.edges={};this.e(e,t,a)}s(r,e);o(r,{e:{value:function t(e,r,a){this.edges[e]=i({},r,a);this._refreshMessage();return this}},_refreshMessage:{value:function a(){var e=this;var r=[];Object.keys(this.edges).forEach(function(t){Object.keys(e.edges[t]).forEach(function(e){r.push("('"+t+"', '"+e+"')")})});var t=r.length===1?"an edge":"edges";this.message="This graph has "+t+" "+r.join(", ")}}});return r}(Error);c.EdgeNotExistsError=function(e){function r(e,t){f(this,r);this.edges={};this.e(e,t)}s(r,e);o(r,{e:{value:function t(e,r){this.edges[e]=i({},r,undefined);this._refreshMessage();return this}},_refreshMessage:{value:function a(){var e=this;var r=[];Object.keys(this.edges).forEach(function(t){Object.keys(e.edges[t]).forEach(function(e){r.push("('"+t+"', '"+e+"')")})});var t=r.length===1?"an edge":"edges";this.message="This graph does not have "+t+" "+r.join(", ")}}});return r}(Error);c.HasConnectedEdgesError=function(e){function r(e){f(this,r);this.message="The '"+e+"' vertex has connected edges";this.key=e}s(r,e);return r}(Error);c.CycleError=function(e){function r(e){f(this,r);this.message="This graph contains a cycle: "+e;this.cycle=e}s(r,e);return r}(Error)}])});
//# sourceMappingURL=dist/js-graph.min.js.map
{
"name": "js-graph",
"version": "1.6.0-alpha",
"version": "1.6.1-alpha",
"title": "Javascript Graph Datastructure",

@@ -59,2 +59,3 @@ "homepage": "https://github.com/mhelvens/js-graph",

"scripts": {
"prepublish": "npm run-script build",
"build": "mkdir -p dist && cp src/js-graph.es6.js dist && webpack && uglifyjs dist/js-graph.js -mo dist/js-graph.min.js --in-source-map dist/js-graph.js.map --source-map dist/js-graph.min.js.map && uglifyjs dist/js-graph.full.js -mo dist/js-graph.full.min.js --in-source-map dist/js-graph.full.js.map --source-map dist/js-graph.full.min.js.map",

@@ -61,0 +62,0 @@ "test": "karma start",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet