! function(t, e) { "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.NeoVis = e() : t.NeoVis = e() }(window, (function() {
    return function(t) {
        var e = {};

        function n(i) { if (e[i]) return e[i].exports; var r = e[i] = { i: i, l: !1, exports: {} }; return t[i].call(r.exports, r, r.exports, n), r.l = !0, r.exports }
        return n.m = t, n.c = e, n.d = function(t, e, i) { n.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: i }) }, n.r = function(t) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t, "__esModule", { value: !0 }) }, n.t = function(t, e) {
            if (1 & e && (t = n(t)), 8 & e) return t;
            if (4 & e && "object" == typeof t && t && t.__esModule) return t;
            var i = Object.create(null);
            if (n.r(i), Object.defineProperty(i, "default", { enumerable: !0, value: t }), 2 & e && "string" != typeof t)
                for (var r in t) n.d(i, r, function(e) { return t[e] }.bind(null, r));
            return i
        }, n.n = function(t) { var e = t && t.__esModule ? function() { return t.default } : function() { return t }; return n.d(e, "a", e), e }, n.o = function(t, e) { return Object.prototype.hasOwnProperty.call(t, e) }, n.p = "", n(n.s = 394)
    }([function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return r }));
        /*! *****************************************************************************
        Copyright (c) Microsoft Corporation.

        Permission to use, copy, modify, and/or distribute this software for any
        purpose with or without fee is hereby granted.

        THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
        REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
        AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
        INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
        LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
        OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
        PERFORMANCE OF THIS SOFTWARE.
        ***************************************************************************** */
        var i = function(t, e) {
            return (i = Object.setPrototypeOf || { __proto__: [] }
                instanceof Array && function(t, e) { t.__proto__ = e } || function(t, e) { for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n]) })(t, e)
        };

        function r(t, e) {
            function n() { this.constructor = t }
            i(t, e), t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n)
        }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return C }));
        var i = n(0),
            r = n(47),
            o = n(92),
            g = n(7),
            s = n(68),
            A = n(26),
            a = n(61),
            C = function(t) {
                function e(n, i, r) {
                    var g = t.call(this) || this;
                    switch (g.syncErrorValue = null, g.syncErrorThrown = !1, g.syncErrorThrowable = !1, g.isStopped = !1, arguments.length) {
                        case 0:
                            g.destination = o.a;
                            break;
                        case 1:
                            if (!n) { g.destination = o.a; break }
                            if ("object" == typeof n) { n instanceof e ? (g.syncErrorThrowable = n.syncErrorThrowable, g.destination = n, n.add(g)) : (g.syncErrorThrowable = !0, g.destination = new I(g, n)); break }
                        default:
                            g.syncErrorThrowable = !0, g.destination = new I(g, n, i, r)
                    }
                    return g
                }
                return i.a(e, t), e.prototype[s.a] = function() { return this }, e.create = function(t, n, i) { var r = new e(t, n, i); return r.syncErrorThrowable = !1, r }, e.prototype.next = function(t) { this.isStopped || this._next(t) }, e.prototype.error = function(t) { this.isStopped || (this.isStopped = !0, this._error(t)) }, e.prototype.complete = function() { this.isStopped || (this.isStopped = !0, this._complete()) }, e.prototype.unsubscribe = function() { this.closed || (this.isStopped = !0, t.prototype.unsubscribe.call(this)) }, e.prototype._next = function(t) { this.destination.next(t) }, e.prototype._error = function(t) { this.destination.error(t), this.unsubscribe() }, e.prototype._complete = function() { this.destination.complete(), this.unsubscribe() }, e.prototype._unsubscribeAndRecycle = function() { var t = this._parentOrParents; return this._parentOrParents = null, this.unsubscribe(), this.closed = !1, this.isStopped = !1, this._parentOrParents = t, this }, e
            }(g.a),
            I = function(t) {
                function e(e, n, i, g) {
                    var s, A = t.call(this) || this;
                    A._parentSubscriber = e;
                    var a = A;
                    return Object(r.a)(n) ? s = n : n && (s = n.next, i = n.error, g = n.complete, n !== o.a && (a = Object.create(n), Object(r.a)(a.unsubscribe) && A.add(a.unsubscribe.bind(a)), a.unsubscribe = A.unsubscribe.bind(A))), A._context = a, A._next = s, A._error = i, A._complete = g, A
                }
                return i.a(e, t), e.prototype.next = function(t) {
                    if (!this.isStopped && this._next) {
                        var e = this._parentSubscriber;
                        A.a.useDeprecatedSynchronousErrorHandling && e.syncErrorThrowable ? this.__tryOrSetError(e, this._next, t) && this.unsubscribe() : this.__tryOrUnsub(this._next, t)
                    }
                }, e.prototype.error = function(t) {
                    if (!this.isStopped) {
                        var e = this._parentSubscriber,
                            n = A.a.useDeprecatedSynchronousErrorHandling;
                        if (this._error) n && e.syncErrorThrowable ? (this.__tryOrSetError(e, this._error, t), this.unsubscribe()) : (this.__tryOrUnsub(this._error, t), this.unsubscribe());
                        else if (e.syncErrorThrowable) n ? (e.syncErrorValue = t, e.syncErrorThrown = !0) : Object(a.a)(t), this.unsubscribe();
                        else {
                            if (this.unsubscribe(), n) throw t;
                            Object(a.a)(t)
                        }
                    }
                }, e.prototype.complete = function() {
                    var t = this;
                    if (!this.isStopped) {
                        var e = this._parentSubscriber;
                        if (this._complete) {
                            var n = function() { return t._complete.call(t._context) };
                            A.a.useDeprecatedSynchronousErrorHandling && e.syncErrorThrowable ? (this.__tryOrSetError(e, n), this.unsubscribe()) : (this.__tryOrUnsub(n), this.unsubscribe())
                        } else this.unsubscribe()
                    }
                }, e.prototype.__tryOrUnsub = function(t, e) {
                    try { t.call(this._context, e) } catch (t) {
                        if (this.unsubscribe(), A.a.useDeprecatedSynchronousErrorHandling) throw t;
                        Object(a.a)(t)
                    }
                }, e.prototype.__tryOrSetError = function(t, e, n) { if (!A.a.useDeprecatedSynchronousErrorHandling) throw new Error("bad call"); try { e.call(this._context, n) } catch (e) { return A.a.useDeprecatedSynchronousErrorHandling ? (t.syncErrorValue = e, t.syncErrorThrown = !0, !0) : (Object(a.a)(e), !0) } return !1 }, e.prototype._unsubscribe = function() {
                    var t = this._parentSubscriber;
                    this._context = null, this._parentSubscriber = null, t.unsubscribe()
                }, e
            }(C)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return s })), n.d(e, "b", (function() { return A })), n.d(e, "c", (function() { return a }));
        var i = n(0),
            r = n(1),
            o = n(3),
            g = n(60),
            s = function(t) {
                function e(e) { var n = t.call(this) || this; return n.parent = e, n }
                return i.a(e, t), e.prototype._next = function(t) { this.parent.notifyNext(t) }, e.prototype._error = function(t) { this.parent.notifyError(t), this.unsubscribe() }, e.prototype._complete = function() { this.parent.notifyComplete(), this.unsubscribe() }, e
            }(r.a),
            A = (r.a, function(t) {
                function e() { return null !== t && t.apply(this, arguments) || this }
                return i.a(e, t), e.prototype.notifyNext = function(t) { this.destination.next(t) }, e.prototype.notifyError = function(t) { this.destination.error(t) }, e.prototype.notifyComplete = function() { this.destination.complete() }, e
            }(r.a));
        r.a;

        function a(t, e) { if (!e.closed) return t instanceof o.a ? t.subscribe(e) : Object(g.a)(t)(e) }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return C }));
        var i = n(90),
            r = n(1),
            o = n(68),
            g = n(92);
        var s = n(40),
            A = n(66),
            a = n(26),
            C = function() {
                function t(t) { this._isScalar = !1, t && (this._subscribe = t) }
                return t.prototype.lift = function(e) { var n = new t; return n.source = this, n.operator = e, n }, t.prototype.subscribe = function(t, e, n) {
                    var i = this.operator,
                        s = function(t, e, n) { if (t) { if (t instanceof r.a) return t; if (t[o.a]) return t[o.a]() } return t || e || n ? new r.a(t, e, n) : new r.a(g.a) }(t, e, n);
                    if (i ? s.add(i.call(s, this.source)) : s.add(this.source || a.a.useDeprecatedSynchronousErrorHandling && !s.syncErrorThrowable ? this._subscribe(s) : this._trySubscribe(s)), a.a.useDeprecatedSynchronousErrorHandling && s.syncErrorThrowable && (s.syncErrorThrowable = !1, s.syncErrorThrown)) throw s.syncErrorValue;
                    return s
                }, t.prototype._trySubscribe = function(t) { try { return this._subscribe(t) } catch (e) { a.a.useDeprecatedSynchronousErrorHandling && (t.syncErrorThrown = !0, t.syncErrorValue = e), Object(i.a)(t) ? t.error(e) : console.warn(e) } }, t.prototype.forEach = function(t, e) {
                    var n = this;
                    return new(e = I(e))((function(e, i) {
                        var r;
                        r = n.subscribe((function(e) { try { t(e) } catch (t) { i(t), r && r.unsubscribe() } }), i, e)
                    }))
                }, t.prototype._subscribe = function(t) { var e = this.source; return e && e.subscribe(t) }, t.prototype[s.a] = function() { return this }, t.prototype.pipe = function() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return 0 === t.length ? this : Object(A.b)(t)(this) }, t.prototype.toPromise = function(t) {
                    var e = this;
                    return new(t = I(t))((function(t, n) {
                        var i;
                        e.subscribe((function(t) { return i = t }), (function(t) { return n(t) }), (function() { return t(i) }))
                    }))
                }, t.create = function(e) { return new t(e) }, t
            }();

        function I(t) { if (t || (t = a.a.Promise || Promise), !t) throw new Error("no Promise impl found"); return t }
    }, function(t, e) { t.exports = function(t) { return t && t.__esModule ? t : { default: t } } }, function(t, e) { t.exports = function(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") } }, function(t, e) {
        function n(t, e) {
            for (var n = 0; n < e.length; n++) {
                var i = e[n];
                i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
            }
        }
        t.exports = function(t, e, i) { return e && n(t.prototype, e), i && n(t, i), t }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return s }));
        var i = n(10),
            r = n(89),
            o = n(47),
            g = n(69),
            s = function() {
                function t(t) { this.closed = !1, this._parentOrParents = null, this._subscriptions = null, t && (this._ctorUnsubscribe = !0, this._unsubscribe = t) }
                var e;
                return t.prototype.unsubscribe = function() {
                    var e;
                    if (!this.closed) {
                        var n = this._parentOrParents,
                            s = this._ctorUnsubscribe,
                            a = this._unsubscribe,
                            C = this._subscriptions;
                        if (this.closed = !0, this._parentOrParents = null, this._subscriptions = null, n instanceof t) n.remove(this);
                        else if (null !== n)
                            for (var I = 0; I < n.length; ++I) { n[I].remove(this) }
                        if (Object(o.a)(a)) { s && (this._unsubscribe = void 0); try { a.call(this) } catch (t) { e = t instanceof g.a ? A(t.errors) : [t] } }
                        if (Object(i.a)(C)) { I = -1; for (var u = C.length; ++I < u;) { var c = C[I]; if (Object(r.a)(c)) try { c.unsubscribe() } catch (t) { e = e || [], t instanceof g.a ? e = e.concat(A(t.errors)) : e.push(t) } } }
                        if (e) throw new g.a(e)
                    }
                }, t.prototype.add = function(e) {
                    var n = e;
                    if (!e) return t.EMPTY;
                    switch (typeof e) {
                        case "function":
                            n = new t(e);
                        case "object":
                            if (n === this || n.closed || "function" != typeof n.unsubscribe) return n;
                            if (this.closed) return n.unsubscribe(), n;
                            if (!(n instanceof t)) {
                                var i = n;
                                (n = new t)._subscriptions = [i]
                            }
                            break;
                        default:
                            throw new Error("unrecognized teardown " + e + " added to Subscription.")
                    }
                    var r = n._parentOrParents;
                    if (null === r) n._parentOrParents = this;
                    else if (r instanceof t) {
                        if (r === this) return n;
                        n._parentOrParents = [r, this]
                    } else {
                        if (-1 !== r.indexOf(this)) return n;
                        r.push(this)
                    }
                    var o = this._subscriptions;
                    return null === o ? this._subscriptions = [n] : o.push(n), n
                }, t.prototype.remove = function(t) { var e = this._subscriptions; if (e) { var n = e.indexOf(t); - 1 !== n && e.splice(n, 1) } }, t.EMPTY = ((e = new t).closed = !0, e), t
            }();

        function A(t) { return t.reduce((function(t, e) { return t.concat(e instanceof g.a ? e.errors : e) }), []) }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "b", (function() { return C })), n.d(e, "a", (function() { return I }));
        var i = n(0),
            r = n(3),
            o = n(1),
            g = n(7),
            s = n(41),
            A = n(144),
            a = n(68),
            C = function(t) {
                function e(e) { var n = t.call(this, e) || this; return n.destination = e, n }
                return i.a(e, t), e
            }(o.a),
            I = function(t) {
                function e() { var e = t.call(this) || this; return e.observers = [], e.closed = !1, e.isStopped = !1, e.hasError = !1, e.thrownError = null, e }
                return i.a(e, t), e.prototype[a.a] = function() { return new C(this) }, e.prototype.lift = function(t) { var e = new u(this, this); return e.operator = t, e }, e.prototype.next = function(t) {
                    if (this.closed) throw new s.a;
                    if (!this.isStopped)
                        for (var e = this.observers, n = e.length, i = e.slice(), r = 0; r < n; r++) i[r].next(t)
                }, e.prototype.error = function(t) {
                    if (this.closed) throw new s.a;
                    this.hasError = !0, this.thrownError = t, this.isStopped = !0;
                    for (var e = this.observers, n = e.length, i = e.slice(), r = 0; r < n; r++) i[r].error(t);
                    this.observers.length = 0
                }, e.prototype.complete = function() {
                    if (this.closed) throw new s.a;
                    this.isStopped = !0;
                    for (var t = this.observers, e = t.length, n = t.slice(), i = 0; i < e; i++) n[i].complete();
                    this.observers.length = 0
                }, e.prototype.unsubscribe = function() { this.isStopped = !0, this.closed = !0, this.observers = null }, e.prototype._trySubscribe = function(e) { if (this.closed) throw new s.a; return t.prototype._trySubscribe.call(this, e) }, e.prototype._subscribe = function(t) { if (this.closed) throw new s.a; return this.hasError ? (t.error(this.thrownError), g.a.EMPTY) : this.isStopped ? (t.complete(), g.a.EMPTY) : (this.observers.push(t), new A.a(this, t)) }, e.prototype.asObservable = function() { var t = new r.a; return t.source = this, t }, e.create = function(t, e) { return new u(t, e) }, e
            }(r.a),
            u = function(t) {
                function e(e, n) { var i = t.call(this) || this; return i.destination = e, i.source = n, i }
                return i.a(e, t), e.prototype.next = function(t) {
                    var e = this.destination;
                    e && e.next && e.next(t)
                }, e.prototype.error = function(t) {
                    var e = this.destination;
                    e && e.error && this.destination.error(t)
                }, e.prototype.complete = function() {
                    var t = this.destination;
                    t && t.complete && this.destination.complete()
                }, e.prototype._subscribe = function(t) { return this.source ? this.source.subscribe(t) : g.a.EMPTY }, e
            }(I)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "b", (function() { return r })), n.d(e, "a", (function() { return o }));
        var i = n(55),
            r = new(n(53).a)(i.a),
            o = r
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return i }));
        var i = function() { return Array.isArray || function(t) { return t && "number" == typeof t.length } }()
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.newError = function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "N/A"; return new a(t, e) }, e.PROTOCOL_ERROR = e.SESSION_EXPIRED = e.SERVICE_UNAVAILABLE = e.Neo4jError = void 0;
        var r = i(n(5)),
            o = i(n(16)),
            g = i(n(12)),
            s = i(n(17)),
            A = i(n(355));
        e.SERVICE_UNAVAILABLE = "ServiceUnavailable";
        e.SESSION_EXPIRED = "SessionExpired";
        e.PROTOCOL_ERROR = "ProtocolError";
        var a = function(t) {
            function e(t) { var n, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "N/A"; return (0, r.default)(this, e), (n = (0, o.default)(this, (0, g.default)(e).call(this, t))).message = t, n.code = i, n.name = "Neo4jError", n }
            return (0, s.default)(e, t), e
        }((0, A.default)(Error));
        e.Neo4jError = a
    }, function(t, e) {
        function n(e) { return t.exports = n = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) { return t.__proto__ || Object.getPrototypeOf(t) }, n(e) }
        t.exports = n
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return o }));
        var i = n(0),
            r = n(1);

        function o(t, e) { return function(n) { if ("function" != typeof t) throw new TypeError("argument is not a function. Are you looking for `mapTo()`?"); return n.lift(new g(t, e)) } }
        var g = function() {
                function t(t, e) { this.project = t, this.thisArg = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new s(t, this.project, this.thisArg)) }, t
            }(),
            s = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.project = n, r.count = 0, r.thisArg = i || r, r }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e;
                    try { e = this.project.call(this.thisArg, t, this.count++) } catch (t) { return void this.destination.error(t) }
                    this.destination.next(e)
                }, e
            }(r.a)
    }, function(t, e, n) {
        "use strict";

        function i(t) { return t && "function" == typeof t.schedule }
        n.d(e, "a", (function() { return i }))
    }, function(t, e, n) {
        "use strict";
        var i = n(21),
            r = n(96).f,
            o = n(190),
            g = n(23),
            s = n(97),
            A = n(49),
            a = n(44),
            C = function(t) {
                var e = function(e, n, i) {
                    if (this instanceof t) {
                        switch (arguments.length) {
                            case 0:
                                return new t;
                            case 1:
                                return new t(e);
                            case 2:
                                return new t(e, n)
                        }
                        return new t(e, n, i)
                    }
                    return t.apply(this, arguments)
                };
                return e.prototype = t.prototype, e
            };
        t.exports = function(t, e) {
            var n, I, u, c, l, h, d, f, p = t.target,
                v = t.global,
                y = t.stat,
                b = t.proto,
                m = v ? i : y ? i[p] : (i[p] || {}).prototype,
                w = v ? g : g[p] || (g[p] = {}),
                _ = w.prototype;
            for (u in e) n = !o(v ? u : p + (y ? "." : "#") + u, t.forced) && m && a(m, u), l = w[u], n && (h = t.noTargetGet ? (f = r(m, u)) && f.value : m[u]), c = n && h ? h : e[u], n && typeof l == typeof c || (d = t.bind && n ? s(c, i) : t.wrap && n ? C(c) : b && "function" == typeof c ? s(Function.call, c) : c, (t.sham || c && c.sham || l && l.sham) && A(d, "sham", !0), w[u] = d, b && (a(g, I = p + "Prototype") || A(g, I, {}), g[I][u] = c, t.real && _ && !_[u] && A(_, u, c)))
        }
    }, function(t, e, n) {
        var i = n(122),
            r = n(123);
        t.exports = function(t, e) { return !e || "object" !== i(e) && "function" != typeof e ? r(t) : e }
    }, function(t, e, n) {
        var i = n(167);
        t.exports = function(t, e) {
            if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
            t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), e && i(t, e)
        }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return r })), n.d(e, "b", (function() { return o }));
        var i = n(3),
            r = new i.a((function(t) { return t.complete() }));

        function o(t) { return t ? function(t) { return new i.a((function(e) { return t.schedule((function() { return e.complete() })) })) }(t) : r }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return g }));
        var i = n(3),
            r = n(60),
            o = n(138);

        function g(t, e) { return e ? Object(o.a)(t, e) : t instanceof i.a ? t : new i.a(Object(r.a)(t)) }
    }, function(t, e, n) {
        var i = n(23),
            r = n(44),
            o = n(166),
            g = n(57).f;
        t.exports = function(t) {
            var e = i.Symbol || (i.Symbol = {});
            r(e, t) || g(e, t, { value: o.f(t) })
        }
    }, function(t, e, n) {
        (function(e) {
            var n = function(t) { return t && t.Math == Math && t };
            t.exports = n("object" == typeof globalThis && globalThis) || n("object" == typeof window && window) || n("object" == typeof self && self) || n("object" == typeof e && e) || Function("return this")()
        }).call(this, n(152))
    }, function(t, e, n) {
        var i = n(21),
            r = n(154),
            o = n(44),
            g = n(155),
            s = n(158),
            A = n(192),
            a = r("wks"),
            C = i.Symbol,
            I = A ? C : C && C.withoutSetter || g;
        t.exports = function(t) { return o(a, t) || (s && o(C, t) ? a[t] = C[t] : a[t] = I("Symbol." + t)), a[t] }
    }, function(t, e) { t.exports = {} }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.isEmptyObjectOrNull = function(t) {
            if (null === t) return !0;
            if (!g(t)) return !1;
            for (var e in t)
                if (t.hasOwnProperty(e)) return !1;
            return !0
        }, e.isObject = g, e.isString = A, e.assertObject = function(t, e) { if (!g(t)) throw new TypeError(e + " expected to be an object but was: " + JSON.stringify(t)); return t }, e.assertString = s, e.assertNumber = function(t, e) { if ("number" != typeof t) throw new TypeError(e + " expected to be a number but was: " + JSON.stringify(t)); return t }, e.assertNumberOrInteger = function(t, e) { if ("number" != typeof t && !(0, o.isInt)(t)) throw new TypeError(e + " expected to be either a number or an Integer object but was: " + JSON.stringify(t)); return t }, e.assertValidDate = function(t, e) { if ("[object Date]" !== Object.prototype.toString.call(t)) throw new TypeError(e + " expected to be a standard JavaScript Date but was: " + JSON.stringify(t)); if (Number.isNaN(t.getTime())) throw new TypeError(e + " expected to be valid JavaScript Date but its time was NaN: " + JSON.stringify(t)); return t }, e.validateQueryAndParameters = function(t, e) {
            var n = t,
                i = e || {};
            "object" === (0, r.default)(t) && t.text && (n = t.text, i = t.parameters || {});
            return function(t) { if (s(t, "Cypher query"), 0 === t.trim().length) throw new TypeError("Cypher query is expected to be a non-empty string.") }(n),
                function(t) { if (!g(t)) { var e = t.constructor ? " " + t.constructor.name : ""; throw new TypeError("Query parameters are expected to either be undefined/null or an object, given:".concat(e, " ").concat(t)) } }(i), { validatedQuery: n, params: i }
        }, e.ENCRYPTION_OFF = e.ENCRYPTION_ON = void 0;
        var r = i(n(122)),
            o = n(38);
        e.ENCRYPTION_ON = "ENCRYPTION_ON";

        function g(t) { return "object" === (0, r.default)(t) && !Array.isArray(t) && null !== t }

        function s(t, e) { if (!A(t)) throw new TypeError(e + " expected to be string but was: " + JSON.stringify(t)); return t }

        function A(t) { return "[object String]" === Object.prototype.toString.call(t) }
        e.ENCRYPTION_OFF = "ENCRYPTION_OFF"
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return s }));
        var i = n(0),
            r = function(t) {
                function e(e, n, i) { var r = t.call(this) || this; return r.parent = e, r.outerValue = n, r.outerIndex = i, r.index = 0, r }
                return i.a(e, t), e.prototype._next = function(t) { this.parent.notifyNext(this.outerValue, t, this.outerIndex, this.index++, this) }, e.prototype._error = function(t) { this.parent.notifyError(t, this), this.unsubscribe() }, e.prototype._complete = function() { this.parent.notifyComplete(this), this.unsubscribe() }, e
            }(n(1).a),
            o = n(60),
            g = n(3);

        function s(t, e, n, i, s) { if (void 0 === s && (s = new r(t, n, i)), !s.closed) return e instanceof g.a ? e.subscribe(s) : Object(o.a)(e)(s) }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return r }));
        var i = !1,
            r = {
                Promise: void 0,
                set useDeprecatedSynchronousErrorHandling(t) {
                    t && (new Error).stack;
                    i = t
                },
                get useDeprecatedSynchronousErrorHandling() { return i }
            }
    }, function(t, e) { t.exports = function(t) { try { return !!t() } catch (t) { return !0 } } }, function(t, e, n) {
        "use strict";

        function i(t) { return t }
        n.d(e, "a", (function() { return i }))
    }, function(t, e, n) {
        var i = n(27);
        t.exports = !i((function() { return 7 != Object.defineProperty({}, 1, { get: function() { return 7 } })[1] }))
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return r }));
        var i = n(0),
            r = function(t) {
                function e() { return null !== t && t.apply(this, arguments) || this }
                return i.a(e, t), e.prototype.notifyNext = function(t, e, n, i, r) { this.destination.next(e) }, e.prototype.notifyError = function(t, e) { this.destination.error(t) }, e.prototype.notifyComplete = function(t) { this.destination.complete() }, e
            }(n(1).a)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return o }));
        var i = n(0),
            r = n(1);

        function o(t, e) { return function(n) { return n.lift(new g(t, e)) } }
        var g = function() {
                function t(t, e) { this.predicate = t, this.thisArg = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new s(t, this.predicate, this.thisArg)) }, t
            }(),
            s = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.predicate = n, r.thisArg = i, r.count = 0, r }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e;
                    try { e = this.predicate.call(this.thisArg, t, this.count++) } catch (t) { return void this.destination.error(t) }
                    e && this.destination.next(t)
                }, e
            }(r.a)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "b", (function() { return i })), n.d(e, "a", (function() { return s }));
        var i, r = n(18),
            o = n(65),
            g = n(84);
        i || (i = {});
        var s = function() {
            function t(t, e, n) { this.kind = t, this.value = e, this.error = n, this.hasValue = "N" === t }
            return t.prototype.observe = function(t) {
                switch (this.kind) {
                    case "N":
                        return t.next && t.next(this.value);
                    case "E":
                        return t.error && t.error(this.error);
                    case "C":
                        return t.complete && t.complete()
                }
            }, t.prototype.do = function(t, e, n) {
                switch (this.kind) {
                    case "N":
                        return t && t(this.value);
                    case "E":
                        return e && e(this.error);
                    case "C":
                        return n && n()
                }
            }, t.prototype.accept = function(t, e, n) { return t && "function" == typeof t.next ? this.observe(t) : this.do(t, e, n) }, t.prototype.toObservable = function() {
                switch (this.kind) {
                    case "N":
                        return Object(o.a)(this.value);
                    case "E":
                        return Object(g.a)(this.error);
                    case "C":
                        return Object(r.b)()
                }
                throw new Error("unexpected notification kind value")
            }, t.createNext = function(e) { return void 0 !== e ? new t("N", e) : t.undefinedValueNotification }, t.createError = function(e) { return new t("E", void 0, e) }, t.createComplete = function() { return t.completeNotification }, t.completeNotification = new t("C"), t.undefinedValueNotification = new t("N", void 0), t
        }()
    }, function(t, e, n) {
        var i = n(217);
        t.exports = function(t, e, n) { return e in t ? i(t, e, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : t[e] = n, t }
    }, function(t, e, n) {
        "use strict";

        function i() { return "function" == typeof Symbol && Symbol.iterator ? Symbol.iterator : "@@iterator" }
        n.d(e, "a", (function() { return r }));
        var r = i()
    }, function(t, e, n) {
        "use strict";

        function i() {}
        n.d(e, "a", (function() { return i }))
    }, function(t, e, n) {
        "use strict";
        (function(t) {
            var i = n(4),
                r = n(37);
            Object.defineProperty(e, "__esModule", { value: !0 }), e.driver = v, Object.defineProperty(e, "int", { enumerable: !0, get: function() { return o.int } }), Object.defineProperty(e, "isInt", { enumerable: !0, get: function() { return o.isInt } }), Object.defineProperty(e, "Neo4jError", { enumerable: !0, get: function() { return s.Neo4jError } }), Object.defineProperty(e, "isPoint", { enumerable: !0, get: function() { return d.isPoint } }), Object.defineProperty(e, "isDate", { enumerable: !0, get: function() { return f.isDate } }), Object.defineProperty(e, "isDateTime", { enumerable: !0, get: function() { return f.isDateTime } }), Object.defineProperty(e, "isDuration", { enumerable: !0, get: function() { return f.isDuration } }), Object.defineProperty(e, "isLocalDateTime", { enumerable: !0, get: function() { return f.isLocalDateTime } }), Object.defineProperty(e, "isLocalTime", { enumerable: !0, get: function() { return f.isLocalTime } }), Object.defineProperty(e, "isTime", { enumerable: !0, get: function() { return f.isTime } }), e.default = e.temporal = e.spatial = e.error = e.session = e.types = e.logging = e.auth = e.integer = void 0;
            var o = r(n(38)),
                g = n(218),
                s = n(11),
                A = i(n(168)),
                a = i(n(169)),
                C = i(n(170)),
                I = n(81),
                u = i(n(380)),
                c = i(n(393)),
                l = n(24),
                h = i(n(238)),
                d = n(229),
                f = n(175),
                p = i(n(179));

            function v(t, e) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                (0, l.assertString)(t, "Bolt URL");
                var i, r = h.default.parseDatabaseUrl(t),
                    o = !1,
                    g = !1;
                switch (r.scheme) {
                    case "bolt":
                        break;
                    case "bolt+s":
                        g = !0, i = "TRUST_SYSTEM_CA_SIGNED_CERTIFICATES";
                        break;
                    case "bolt+ssc":
                        g = !0, i = "TRUST_ALL_CERTIFICATES";
                        break;
                    case "neo4j":
                        o = !0;
                        break;
                    case "neo4j+s":
                        g = !0, i = "TRUST_SYSTEM_CA_SIGNED_CERTIFICATES", o = !0;
                        break;
                    case "neo4j+ssc":
                        g = !0, i = "TRUST_ALL_CERTIFICATES", o = !0;
                        break;
                    default:
                        throw new Error("Unknown scheme: ".concat(r.scheme))
                }
                if (g) {
                    if ("encrypted" in n || "trust" in n) throw new Error("Encryption/trust can only be configured either through URL or config, not both");
                    n.encrypted = l.ENCRYPTION_ON, n.trust = i
                }
                if ((e = e || {}).scheme = e.scheme || "none", n.userAgent = n.userAgent || b, o) return new u.default(p.default.fromUrl(r.hostAndPort), r.query, n.userAgent, e, n);
                if (!(0, l.isEmptyObjectOrNull)(r.query)) throw new Error("Parameters are not supported with none routed scheme. Given URL: '".concat(t, "'"));
                return new I.Driver(p.default.fromUrl(r.hostAndPort), n.userAgent, e, n)
            }
            var y = { basic: function(t, e) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0; return n ? { scheme: "basic", principal: t, credentials: e, realm: n } : { scheme: "basic", principal: t, credentials: e } }, kerberos: function(t) { return { scheme: "kerberos", principal: "", credentials: t } }, custom: function(t, e, n, i) { var r = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : void 0; return r ? { scheme: i, principal: t, credentials: e, realm: n, parameters: r } : { scheme: i, principal: t, credentials: e, realm: n } } };
            e.auth = y;
            var b = "neo4j-javascript/" + c.default,
                m = {
                    console: function(t) {
                        function e(e) { return t.apply(this, arguments) }
                        return e.toString = function() { return t.toString() }, e
                    }((function(e) { return { level: e, logger: function(e, n) { return console.log("".concat(t.Date.now(), " ").concat(e.toUpperCase(), " ").concat(n)) } } }))
                };
            e.logging = m;
            var w = { Node: g.Node, Relationship: g.Relationship, UnboundRelationship: g.UnboundRelationship, PathSegment: g.PathSegment, Path: g.Path, Result: A.default, ResultSummary: a.default, Record: C.default, Point: d.Point, Date: f.Date, DateTime: f.DateTime, Duration: f.Duration, LocalDateTime: f.LocalDateTime, LocalTime: f.LocalTime, Time: f.Time, Integer: o.default };
            e.types = w;
            var _ = { READ: I.READ, WRITE: I.WRITE };
            e.session = _;
            var k = { SERVICE_UNAVAILABLE: s.SERVICE_UNAVAILABLE, SESSION_EXPIRED: s.SESSION_EXPIRED, PROTOCOL_ERROR: s.PROTOCOL_ERROR };
            e.error = k;
            var x = { toNumber: o.toNumber, toString: o.toString, inSafeRange: o.inSafeRange };
            e.integer = x;
            var O = { isPoint: d.isPoint };
            e.spatial = O;
            var E = { isDuration: f.isDuration, isLocalTime: f.isLocalTime, isTime: f.isTime, isDate: f.isDate, isLocalDateTime: f.isLocalDateTime, isDateTime: f.isDateTime };
            e.temporal = E;
            var T = { driver: v, int: o.int, isInt: o.isInt, isPoint: d.isPoint, isDuration: f.isDuration, isLocalTime: f.isLocalTime, isTime: f.isTime, isDate: f.isDate, isLocalDateTime: f.isLocalDateTime, isDateTime: f.isDateTime, integer: x, Neo4jError: s.Neo4jError, auth: y, logging: m, types: w, session: _, error: k, spatial: O, temporal: E };
            e.default = T
        }).call(this, n(152))
    }, function(t, e, n) {
        var i = n(122);

        function r() { if ("function" != typeof WeakMap) return null; var t = new WeakMap; return r = function() { return t }, t }
        t.exports = function(t) {
            if (t && t.__esModule) return t;
            if (null === t || "object" !== i(t) && "function" != typeof t) return { default: t };
            var e = r();
            if (e && e.has(t)) return e.get(t);
            var n = {},
                o = Object.defineProperty && Object.getOwnPropertyDescriptor;
            for (var g in t)
                if (Object.prototype.hasOwnProperty.call(t, g)) {
                    var s = o ? Object.getOwnPropertyDescriptor(t, g) : null;
                    s && (s.get || s.set) ? Object.defineProperty(n, g, s) : n[g] = t[g]
                }
            return n.default = t, e && e.set(t, n), n
        }
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = e.toString = e.toNumber = e.inSafeRange = e.isInt = e.int = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(11),
            s = function() {
                function t(e, n) {
                    (0, r.default)(this, t), this.low = 0 | e, this.high = 0 | n
                }
                return (0, o.default)(t, [{ key: "inSafeRange", value: function() { return this.greaterThanOrEqual(t.MIN_SAFE_VALUE) && this.lessThanOrEqual(t.MAX_SAFE_VALUE) } }, { key: "toInt", value: function() { return this.low } }, { key: "toNumber", value: function() { return this.high * a + (this.low >>> 0) } }, { key: "toNumberOrInfinity", value: function() { return this.lessThan(t.MIN_SAFE_VALUE) ? Number.NEGATIVE_INFINITY : this.greaterThan(t.MAX_SAFE_VALUE) ? Number.POSITIVE_INFINITY : this.toNumber() } }, {
                    key: "toString",
                    value: function(e) {
                        if ((e = e || 10) < 2 || e > 36) throw RangeError("radix out of range: " + e);
                        if (this.isZero()) return "0";
                        var n;
                        if (this.isNegative()) {
                            if (this.equals(t.MIN_VALUE)) {
                                var i = t.fromNumber(e),
                                    r = this.div(i);
                                return n = r.multiply(i).subtract(this), r.toString(e) + n.toInt().toString(e)
                            }
                            return "-" + this.negate().toString(e)
                        }
                        var o = t.fromNumber(Math.pow(e, 6));
                        n = this;
                        for (var g = "";;) {
                            var s = n.div(o),
                                A = (n.subtract(s.multiply(o)).toInt() >>> 0).toString(e);
                            if ((n = s).isZero()) return A + g;
                            for (; A.length < 6;) A = "0" + A;
                            g = "" + A + g
                        }
                    }
                }, { key: "getHighBits", value: function() { return this.high } }, { key: "getLowBits", value: function() { return this.low } }, { key: "getNumBitsAbs", value: function() { if (this.isNegative()) return this.equals(t.MIN_VALUE) ? 64 : this.negate().getNumBitsAbs(); for (var e = 0 !== this.high ? this.high : this.low, n = 31; n > 0 && 0 == (e & 1 << n); n--); return 0 !== this.high ? n + 33 : n + 1 } }, { key: "isZero", value: function() { return 0 === this.high && 0 === this.low } }, { key: "isNegative", value: function() { return this.high < 0 } }, { key: "isPositive", value: function() { return this.high >= 0 } }, { key: "isOdd", value: function() { return 1 == (1 & this.low) } }, { key: "isEven", value: function() { return 0 == (1 & this.low) } }, { key: "equals", value: function(e) { return t.isInteger(e) || (e = t.fromValue(e)), this.high === e.high && this.low === e.low } }, { key: "notEquals", value: function(t) { return !this.equals(t) } }, { key: "lessThan", value: function(t) { return this.compare(t) < 0 } }, { key: "lessThanOrEqual", value: function(t) { return this.compare(t) <= 0 } }, { key: "greaterThan", value: function(t) { return this.compare(t) > 0 } }, { key: "greaterThanOrEqual", value: function(t) { return this.compare(t) >= 0 } }, {
                    key: "compare",
                    value: function(e) {
                        if (t.isInteger(e) || (e = t.fromValue(e)), this.equals(e)) return 0;
                        var n = this.isNegative(),
                            i = e.isNegative();
                        return n && !i ? -1 : !n && i ? 1 : this.subtract(e).isNegative() ? -1 : 1
                    }
                }, { key: "negate", value: function() { return this.equals(t.MIN_VALUE) ? t.MIN_VALUE : this.not().add(t.ONE) } }, {
                    key: "add",
                    value: function(e) {
                        t.isInteger(e) || (e = t.fromValue(e));
                        var n = this.high >>> 16,
                            i = 65535 & this.high,
                            r = this.low >>> 16,
                            o = 65535 & this.low,
                            g = e.high >>> 16,
                            s = 65535 & e.high,
                            A = e.low >>> 16,
                            a = 0,
                            C = 0,
                            I = 0,
                            u = 0;
                        return I += (u += o + (65535 & e.low)) >>> 16, u &= 65535, C += (I += r + A) >>> 16, I &= 65535, a += (C += i + s) >>> 16, C &= 65535, a += n + g, a &= 65535, t.fromBits(I << 16 | u, a << 16 | C)
                    }
                }, { key: "subtract", value: function(e) { return t.isInteger(e) || (e = t.fromValue(e)), this.add(e.negate()) } }, {
                    key: "multiply",
                    value: function(e) {
                        if (this.isZero()) return t.ZERO;
                        if (t.isInteger(e) || (e = t.fromValue(e)), e.isZero()) return t.ZERO;
                        if (this.equals(t.MIN_VALUE)) return e.isOdd() ? t.MIN_VALUE : t.ZERO;
                        if (e.equals(t.MIN_VALUE)) return this.isOdd() ? t.MIN_VALUE : t.ZERO;
                        if (this.isNegative()) return e.isNegative() ? this.negate().multiply(e.negate()) : this.negate().multiply(e).negate();
                        if (e.isNegative()) return this.multiply(e.negate()).negate();
                        if (this.lessThan(I) && e.lessThan(I)) return t.fromNumber(this.toNumber() * e.toNumber());
                        var n = this.high >>> 16,
                            i = 65535 & this.high,
                            r = this.low >>> 16,
                            o = 65535 & this.low,
                            g = e.high >>> 16,
                            s = 65535 & e.high,
                            A = e.low >>> 16,
                            a = 65535 & e.low,
                            C = 0,
                            u = 0,
                            c = 0,
                            l = 0;
                        return c += (l += o * a) >>> 16, l &= 65535, u += (c += r * a) >>> 16, c &= 65535, u += (c += o * A) >>> 16, c &= 65535, C += (u += i * a) >>> 16, u &= 65535, C += (u += r * A) >>> 16, u &= 65535, C += (u += o * s) >>> 16, u &= 65535, C += n * a + i * A + r * s + o * g, C &= 65535, t.fromBits(c << 16 | l, C << 16 | u)
                    }
                }, {
                    key: "div",
                    value: function(e) {
                        if (t.isInteger(e) || (e = t.fromValue(e)), e.isZero()) throw (0, g.newError)("division by zero");
                        if (this.isZero()) return t.ZERO;
                        var n, i, r;
                        if (this.equals(t.MIN_VALUE)) return e.equals(t.ONE) || e.equals(t.NEG_ONE) ? t.MIN_VALUE : e.equals(t.MIN_VALUE) ? t.ONE : (n = this.shiftRight(1).div(e).shiftLeft(1)).equals(t.ZERO) ? e.isNegative() ? t.ONE : t.NEG_ONE : (i = this.subtract(e.multiply(n)), r = n.add(i.div(e)));
                        if (e.equals(t.MIN_VALUE)) return t.ZERO;
                        if (this.isNegative()) return e.isNegative() ? this.negate().div(e.negate()) : this.negate().div(e).negate();
                        if (e.isNegative()) return this.div(e.negate()).negate();
                        for (r = t.ZERO, i = this; i.greaterThanOrEqual(e);) {
                            n = Math.max(1, Math.floor(i.toNumber() / e.toNumber()));
                            for (var o = Math.ceil(Math.log(n) / Math.LN2), s = o <= 48 ? 1 : Math.pow(2, o - 48), A = t.fromNumber(n), a = A.multiply(e); a.isNegative() || a.greaterThan(i);) n -= s, a = (A = t.fromNumber(n)).multiply(e);
                            A.isZero() && (A = t.ONE), r = r.add(A), i = i.subtract(a)
                        }
                        return r
                    }
                }, { key: "modulo", value: function(e) { return t.isInteger(e) || (e = t.fromValue(e)), this.subtract(this.div(e).multiply(e)) } }, { key: "not", value: function() { return t.fromBits(~this.low, ~this.high) } }, { key: "and", value: function(e) { return t.isInteger(e) || (e = t.fromValue(e)), t.fromBits(this.low & e.low, this.high & e.high) } }, { key: "or", value: function(e) { return t.isInteger(e) || (e = t.fromValue(e)), t.fromBits(this.low | e.low, this.high | e.high) } }, { key: "xor", value: function(e) { return t.isInteger(e) || (e = t.fromValue(e)), t.fromBits(this.low ^ e.low, this.high ^ e.high) } }, { key: "shiftLeft", value: function(e) { return t.isInteger(e) && (e = e.toInt()), 0 == (e &= 63) ? this : e < 32 ? t.fromBits(this.low << e, this.high << e | this.low >>> 32 - e) : t.fromBits(0, this.low << e - 32) } }, { key: "shiftRight", value: function(e) { return t.isInteger(e) && (e = e.toInt()), 0 == (e &= 63) ? this : e < 32 ? t.fromBits(this.low >>> e | this.high << 32 - e, this.high >> e) : t.fromBits(this.high >> e - 32, this.high >= 0 ? 0 : -1) } }]), t
            }();
        s.__isInteger__ = !0, Object.defineProperty(s.prototype, "__isInteger__", { value: !0, enumerable: !1, configurable: !1 }), s.isInteger = function(t) { return !0 === (t && t.__isInteger__) };
        var A = {};
        s.fromInt = function(t) { var e, n; return (t |= 0) >= -128 && t < 128 && (n = A[t]) ? n : (e = new s(t, t < 0 ? -1 : 0, !1), t >= -128 && t < 128 && (A[t] = e), e) }, s.fromNumber = function(t) { return isNaN(t) || !isFinite(t) ? s.ZERO : t <= -C ? s.MIN_VALUE : t + 1 >= C ? s.MAX_VALUE : t < 0 ? s.fromNumber(-t).negate() : new s(t % a | 0, t / a | 0) }, s.fromBits = function(t, e) { return new s(t, e) }, s.fromString = function(t, e) {
            if (0 === t.length) throw (0, g.newError)("number format error: empty string");
            if ("NaN" === t || "Infinity" === t || "+Infinity" === t || "-Infinity" === t) return s.ZERO;
            if ((e = e || 10) < 2 || e > 36) throw (0, g.newError)("radix out of range: " + e);
            var n;
            if ((n = t.indexOf("-")) > 0) throw (0, g.newError)('number format error: interior "-" character: ' + t);
            if (0 === n) return s.fromString(t.substring(1), e).negate();
            for (var i = s.fromNumber(Math.pow(e, 8)), r = s.ZERO, o = 0; o < t.length; o += 8) {
                var A = Math.min(8, t.length - o),
                    a = parseInt(t.substring(o, o + A), e);
                if (A < 8) {
                    var C = s.fromNumber(Math.pow(e, A));
                    r = r.multiply(C).add(s.fromNumber(a))
                } else r = (r = r.multiply(i)).add(s.fromNumber(a))
            }
            return r
        }, s.fromValue = function(t) { return t instanceof s ? t : "number" == typeof t ? s.fromNumber(t) : "string" == typeof t ? s.fromString(t) : new s(t.low, t.high) }, s.toNumber = function(t) { return s.fromValue(t).toNumber() }, s.toString = function(t, e) { return s.fromValue(t).toString(e) }, s.inSafeRange = function(t) { return s.fromValue(t).inSafeRange() };
        var a = 4294967296,
            C = a * a / 2,
            I = s.fromInt(1 << 24);
        s.ZERO = s.fromInt(0), s.ONE = s.fromInt(1), s.NEG_ONE = s.fromInt(-1), s.MAX_VALUE = s.fromBits(-1, 2147483647, !1), s.MIN_VALUE = s.fromBits(0, -2147483648, !1), s.MIN_SAFE_VALUE = s.fromBits(1, -2097152), s.MAX_SAFE_VALUE = s.fromBits(-1, 2097151);
        var u = s.fromValue;
        e.int = u;
        var c = s.isInteger;
        e.isInt = c;
        var l = s.inSafeRange;
        e.inSafeRange = l;
        var h = s.toNumber;
        e.toNumber = h;
        var d = s.toString;
        e.toString = d;
        var f = s;
        e.default = f
    }, function(t, e, n) {
        "use strict";
        Object.defineProperty(e, "__esModule", { value: !0 }), e.BOLT_PROTOCOL_V4_1 = e.BOLT_PROTOCOL_V4_0 = e.BOLT_PROTOCOL_V3 = e.BOLT_PROTOCOL_V2 = e.BOLT_PROTOCOL_V1 = e.ACCESS_MODE_WRITE = e.ACCESS_MODE_READ = void 0;
        e.ACCESS_MODE_READ = "READ";
        e.ACCESS_MODE_WRITE = "WRITE";
        e.BOLT_PROTOCOL_V1 = 1;
        e.BOLT_PROTOCOL_V2 = 2;
        e.BOLT_PROTOCOL_V3 = 3;
        e.BOLT_PROTOCOL_V4_0 = 4;
        e.BOLT_PROTOCOL_V4_1 = 4.1
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return i }));
        var i = function() { return "function" == typeof Symbol && Symbol.observable || "@@observable" }()
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return i }));
        var i = function() {
            function t() { return Error.call(this), this.message = "object unsubscribed", this.name = "ObjectUnsubscribedError", this }
            return t.prototype = Object.create(Error.prototype), t
        }()
    }, function(t, e) { t.exports = function(t) { return "object" == typeof t ? null !== t : "function" == typeof t } }, function(t, e, n) {
        var i = n(42);
        t.exports = function(t) { if (!i(t)) throw TypeError(String(t) + " is not an object"); return t }
    }, function(t, e) {
        var n = {}.hasOwnProperty;
        t.exports = function(t, e) { return n.call(t, e) }
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.CompletedObserver = e.FailedObserver = e.ResetObserver = e.LoginObserver = e.ResultStreamObserver = e.StreamObserver = void 0;
        var r = i(n(123)),
            o = i(n(220)),
            g = i(n(16)),
            s = i(n(12)),
            A = i(n(17)),
            a = i(n(5)),
            C = i(n(6)),
            I = i(n(170)),
            u = (i(n(125)), n(11)),
            c = (i(n(38)), n(80)),
            l = function() {
                function t() {
                    (0, a.default)(this, t)
                }
                return (0, C.default)(t, [{ key: "onNext", value: function(t) {} }, { key: "onError", value: function(t) {} }, { key: "onCompleted", value: function(t) {} }]), t
            }();
        e.StreamObserver = l;
        var h = function(t) {
            function e() {
                var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    i = n.connection,
                    r = n.reactive,
                    o = void 0 !== r && r,
                    A = n.moreFunction,
                    C = n.discardFunction,
                    I = n.fetchSize,
                    u = void 0 === I ? c.ALL : I,
                    l = n.beforeError,
                    h = n.afterError,
                    d = n.beforeKeys,
                    f = n.afterKeys,
                    p = n.beforeComplete,
                    v = n.afterComplete;
                return (0, a.default)(this, e), (t = (0, g.default)(this, (0, s.default)(e).call(this)))._connection = i, t._fieldKeys = null, t._fieldLookup = null, t._head = null, t._queuedRecords = [], t._tail = null, t._error = null, t._observers = [], t._meta = {}, t._beforeError = l, t._afterError = h, t._beforeKeys = d, t._afterKeys = f, t._beforeComplete = p, t._afterComplete = v, t._queryId = null, t._moreFunction = A, t._discardFunction = C, t._discard = !1, t._fetchSize = u, t._setState(o ? y.READY : y.READY_STREAMING), t._setupAuoPull(u), t
            }
            return (0, A.default)(e, t), (0, C.default)(e, [{
                key: "onNext",
                value: function(t) {
                    var e = new I.default(this._fieldKeys, t, this._fieldLookup);
                    this._observers.some((function(t) { return t.onNext })) ? this._observers.forEach((function(t) { t.onNext && t.onNext(e) })) : (this._queuedRecords.push(e), this._queuedRecords.length > this._highRecordWatermark && (this._autoPull = !1))
                }
            }, { key: "onCompleted", value: function(t) { this._state.onSuccess(this, t) } }, { key: "onError", value: function(t) { this._state.onError(this, t) } }, { key: "cancel", value: function() { this._discard = !0 } }, { key: "prepareToHandleSingleResponse", value: function() { this._head = [], this._fieldKeys = [], this._setState(y.STREAMING) } }, { key: "markCompleted", value: function() { this._head = [], this._fieldKeys = [], this._tail = {}, this._setState(y.SUCCEEDED) } }, {
                key: "subscribe",
                value: function(t) {
                    if (this._error) t.onError(this._error);
                    else {
                        if (this._head && t.onKeys && t.onKeys(this._head), this._queuedRecords.length > 0 && t.onNext)
                            for (var e = 0; e < this._queuedRecords.length; e++) t.onNext(this._queuedRecords[e]), this._queuedRecords.length - e - 1 <= this._lowRecordWatermark && (this._autoPull = !0, this._state === y.READY && this._handleStreaming());
                        this._tail && t.onCompleted && t.onCompleted(this._tail), this._observers.push(t), this._state === y.READY && this._handleStreaming()
                    }
                }
            }, { key: "_handleHasMore", value: function(t) { this._setState(y.READY), this._handleStreaming(), delete t.has_more } }, {
                key: "_handlePullSuccess",
                value: function(t) {
                    var e = this;
                    this._setState(y.SUCCEEDED);
                    var n = Object.assign(this._connection ? { server: this._connection.server } : {}, this._meta, t),
                        i = null;
                    this._beforeComplete && (i = this._beforeComplete(n));
                    var r = function() { e._tail = n, e._observers.some((function(t) { return t.onCompleted })) && e._observers.forEach((function(t) { t.onCompleted && t.onCompleted(n) })), e._afterComplete && e._afterComplete(n) };
                    i ? Promise.resolve(i).then((function() { return r() })) : r()
                }
            }, {
                key: "_handleRunSuccess",
                value: function(t, e) {
                    var n = this;
                    if (null === this._fieldKeys) {
                        if (this._fieldKeys = [], this._fieldLookup = {}, t.fields && t.fields.length > 0) {
                            this._fieldKeys = t.fields;
                            for (var i = 0; i < t.fields.length; i++) this._fieldLookup[t.fields[i]] = i;
                            delete t.fields
                        }
                        t.qid && (this._queryId = t.qid, delete t.qid), this._storeMetadataForCompletion(t);
                        var r = null;
                        this._beforeKeys && (r = this._beforeKeys(this._fieldKeys));
                        var o = function() { n._head = n._fieldKeys, n._observers.some((function(t) { return t.onKeys })) && n._observers.forEach((function(t) { t.onKeys && t.onKeys(n._fieldKeys) })), n._afterKeys && n._afterKeys(n._fieldKeys), e() };
                        r ? Promise.resolve(r).then((function() { return o() })) : o()
                    }
                }
            }, {
                key: "_handleError",
                value: function(t) {
                    var e = this;
                    this._setState(y.FAILED), this._error = t;
                    var n = null;
                    this._beforeError && (n = this._beforeError(t));
                    var i = function() { e._observers.some((function(t) { return t.onError })) && e._observers.forEach((function(e) { e.onError && e.onError(t) })), e._afterError && e._afterError(t) };
                    n ? Promise.resolve(n).then((function() { return i() })) : i()
                }
            }, { key: "_handleStreaming", value: function() { this._head && this._observers.some((function(t) { return t.onNext || t.onCompleted })) && (this._discard ? (this._discardFunction(this._connection, this._queryId, this), this._setState(y.STREAMING)) : this._autoPull && (this._moreFunction(this._connection, this._queryId, this._fetchSize, this), this._setState(y.STREAMING))) } }, { key: "_storeMetadataForCompletion", value: function(t) { for (var e = Object.keys(t), n = e.length, i = ""; n--;) i = e[n], this._meta[i] = t[i] } }, { key: "_setState", value: function(t) { this._state = t } }, { key: "_setupAuoPull", value: function(t) { this._autoPull = !0, t === c.ALL ? (this._lowRecordWatermark = Number.MAX_VALUE, this._highRecordWatermark = Number.MAX_VALUE) : (this._lowRecordWatermark = .3 * t, this._highRecordWatermark = .7 * t) } }]), e
        }(l);
        e.ResultStreamObserver = h;
        var d = function(t) {
            function e() {
                var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    i = n.connection,
                    r = n.beforeError,
                    o = n.afterError,
                    A = n.beforeComplete,
                    C = n.afterComplete;
                return (0, a.default)(this, e), (t = (0, g.default)(this, (0, s.default)(e).call(this)))._connection = i, t._beforeError = r, t._afterError = o, t._beforeComplete = A, t._afterComplete = C, t
            }
            return (0, A.default)(e, t), (0, C.default)(e, [{ key: "onNext", value: function(t) { this.onError((0, u.newError)("Received RECORD when initializing " + JSON.stringify(t))) } }, { key: "onError", value: function(t) { this._beforeError && this._beforeError(t), this._connection._updateCurrentObserver(), this._connection._handleFatalError(t), this._afterError && this._afterError(t) } }, {
                key: "onCompleted",
                value: function(t) {
                    if (this._beforeComplete && this._beforeComplete(t), t) {
                        var e = t.server;
                        this._connection.version || (this._connection.version = e);
                        var n = t.connection_id;
                        this._connection.databaseId || (this._connection.databaseId = n)
                    }
                    this._afterComplete && this._afterComplete(t)
                }
            }]), e
        }(l);
        e.LoginObserver = d;
        var f = function(t) {
            function e() {
                var t, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    i = n.connection,
                    r = n.onError,
                    o = n.onComplete;
                return (0, a.default)(this, e), (t = (0, g.default)(this, (0, s.default)(e).call(this)))._connection = i, t._onError = r, t._onComplete = o, t
            }
            return (0, A.default)(e, t), (0, C.default)(e, [{ key: "onNext", value: function(t) { this.onError((0, u.newError)("Received RECORD when resetting: received record is: " + JSON.stringify(t), u.PROTOCOL_ERROR)) } }, { key: "onError", value: function(t) { t.code === u.PROTOCOL_ERROR && this._connection._handleProtocolError(t.message), this._onError && this._onError(t) } }, { key: "onCompleted", value: function(t) { this._onComplete && this._onComplete(t) } }]), e
        }(l);
        e.ResetObserver = f;
        var p = function(t) {
            function e(t) {
                var n, i = t.error,
                    r = t.onError;
                return (0, a.default)(this, e), (n = (0, g.default)(this, (0, s.default)(e).call(this, { beforeError: r }))).onError(i), n
            }
            return (0, A.default)(e, t), e
        }(h);
        e.FailedObserver = p;
        var v = function(t) {
            function e() { var t; return (0, a.default)(this, e), t = (0, g.default)(this, (0, s.default)(e).call(this)), (0, o.default)((0, s.default)(e.prototype), "markCompleted", (0, r.default)(t)).call((0, r.default)(t)), t }
            return (0, A.default)(e, t), e
        }(h);
        e.CompletedObserver = v;
        var y = { READY_STREAMING: { onSuccess: function(t, e) { t._handleRunSuccess(e, (function() { t._setState(y.STREAMING) })) }, onError: function(t, e) { t._handleError(e) }, name: function() { return "READY_STREAMING" } }, READY: { onSuccess: function(t, e) { t._handleRunSuccess(e, (function() { return t._handleStreaming() })) }, onError: function(t, e) { t._handleError(e) }, name: function() { return "READY" } }, STREAMING: { onSuccess: function(t, e) { e.has_more ? t._handleHasMore(e) : t._handlePullSuccess(e) }, onError: function(t, e) { t._handleError(e) }, name: function() { return "STREAMING" } }, FAILED: { onError: function(t) {}, name: function() { return "FAILED" } }, SUCCEEDED: { name: function() { return "SUCCEEDED" } } }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return i }));
        var i = function() {
            function t() { return Error.call(this), this.message = "argument out of range", this.name = "ArgumentOutOfRangeError", this }
            return t.prototype = Object.create(Error.prototype), t
        }()
    }, function(t, e, n) {
        "use strict";

        function i(t) { return "function" == typeof t }
        n.d(e, "a", (function() { return i }))
    }, function(t, e, n) {
        var i = n(185),
            r = n(151);
        t.exports = function(t) { return i(r(t)) }
    }, function(t, e, n) {
        var i = n(29),
            r = n(57),
            o = n(73);
        t.exports = i ? function(t, e, n) { return r.f(t, e, o(1, n)) } : function(t, e, n) { return t[e] = n, t }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return i }));
        var i = function() {
            function t() { return Error.call(this), this.message = "no elements in sequence", this.name = "EmptyError", this }
            return t.prototype = Object.create(Error.prototype), t
        }()
    }, function(t, e, n) {
        "use strict";
        n.d(e, "b", (function() { return s })), n.d(e, "a", (function() { return C }));
        var i = n(0),
            r = n(13),
            o = n(19),
            g = n(2);

        function s(t, e, n) { return void 0 === n && (n = Number.POSITIVE_INFINITY), "function" == typeof e ? function(i) { return i.pipe(s((function(n, i) { return Object(o.a)(t(n, i)).pipe(Object(r.a)((function(t, r) { return e(n, t, i, r) }))) }), n)) } : ("number" == typeof e && (n = e), function(e) { return e.lift(new A(t, n)) }) }
        var A = function() {
                function t(t, e) { void 0 === e && (e = Number.POSITIVE_INFINITY), this.project = t, this.concurrent = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new a(t, this.project, this.concurrent)) }, t
            }(),
            a = function(t) {
                function e(e, n, i) { void 0 === i && (i = Number.POSITIVE_INFINITY); var r = t.call(this, e) || this; return r.project = n, r.concurrent = i, r.hasCompleted = !1, r.buffer = [], r.active = 0, r.index = 0, r }
                return i.a(e, t), e.prototype._next = function(t) { this.active < this.concurrent ? this._tryNext(t) : this.buffer.push(t) }, e.prototype._tryNext = function(t) {
                    var e, n = this.index++;
                    try { e = this.project(t, n) } catch (t) { return void this.destination.error(t) }
                    this.active++, this._innerSub(e)
                }, e.prototype._innerSub = function(t) {
                    var e = new g.a(this),
                        n = this.destination;
                    n.add(e);
                    var i = Object(g.c)(t, e);
                    i !== e && n.add(i)
                }, e.prototype._complete = function() { this.hasCompleted = !0, 0 === this.active && 0 === this.buffer.length && this.destination.complete(), this.unsubscribe() }, e.prototype.notifyNext = function(t) { this.destination.next(t) }, e.prototype.notifyComplete = function() {
                    var t = this.buffer;
                    this.active--, t.length > 0 ? this._next(t.shift()) : 0 === this.active && this.hasCompleted && this.destination.complete()
                }, e
            }(g.b),
            C = s
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return g }));
        var i = n(3),
            r = n(145),
            o = n(91);

        function g(t, e) { return e ? Object(o.a)(t, e) : new i.a(Object(r.a)(t)) }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return o }));
        var i = n(0),
            r = n(105),
            o = function(t) {
                function e(n, i) { void 0 === i && (i = r.a.now); var o = t.call(this, n, (function() { return e.delegate && e.delegate !== o ? e.delegate.now() : i() })) || this; return o.actions = [], o.active = !1, o.scheduled = void 0, o }
                return i.a(e, t), e.prototype.schedule = function(n, i, r) { return void 0 === i && (i = 0), e.delegate && e.delegate !== this ? e.delegate.schedule(n, i, r) : t.prototype.schedule.call(this, n, i, r) }, e.prototype.flush = function(t) {
                    var e = this.actions;
                    if (this.active) e.push(t);
                    else {
                        var n;
                        this.active = !0;
                        do { if (n = t.execute(t.state, t.delay)) break } while (t = e.shift());
                        if (this.active = !1, n) { for (; t = e.shift();) t.unsubscribe(); throw n }
                    }
                }, e
            }(r.a)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return g }));
        var i = n(0),
            r = n(8),
            o = n(7),
            g = function(t) {
                function e() { var e = null !== t && t.apply(this, arguments) || this; return e.value = null, e.hasNext = !1, e.hasCompleted = !1, e }
                return i.a(e, t), e.prototype._subscribe = function(e) { return this.hasError ? (e.error(this.thrownError), o.a.EMPTY) : this.hasCompleted && this.hasNext ? (e.next(this.value), e.complete(), o.a.EMPTY) : t.prototype._subscribe.call(this, e) }, e.prototype.next = function(t) { this.hasCompleted || (this.value = t, this.hasNext = !0) }, e.prototype.error = function(e) { this.hasCompleted || t.prototype.error.call(this, e) }, e.prototype.complete = function() { this.hasCompleted = !0, this.hasNext && t.prototype.next.call(this, this.value), t.prototype.complete.call(this) }, e
            }(r.a)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return r }));
        var i = n(0),
            r = function(t) {
                function e(e, n) { var i = t.call(this, e, n) || this; return i.scheduler = e, i.work = n, i.pending = !1, i }
                return i.a(e, t), e.prototype.schedule = function(t, e) {
                    if (void 0 === e && (e = 0), this.closed) return this;
                    this.state = t;
                    var n = this.id,
                        i = this.scheduler;
                    return null != n && (this.id = this.recycleAsyncId(i, n, e)), this.pending = !0, this.delay = e, this.id = this.id || this.requestAsyncId(i, this.id, e), this
                }, e.prototype.requestAsyncId = function(t, e, n) { return void 0 === n && (n = 0), setInterval(t.flush.bind(t, this), n) }, e.prototype.recycleAsyncId = function(t, e, n) {
                    if (void 0 === n && (n = 0), null !== n && this.delay === n && !1 === this.pending) return e;
                    clearInterval(e)
                }, e.prototype.execute = function(t, e) {
                    if (this.closed) return new Error("executing a cancelled action");
                    this.pending = !1;
                    var n = this._execute(t, e);
                    if (n) return n;
                    !1 === this.pending && null != this.id && (this.id = this.recycleAsyncId(this.scheduler, this.id, null))
                }, e.prototype._execute = function(t, e) {
                    var n = !1,
                        i = void 0;
                    try { this.work(t) } catch (t) { n = !0, i = !!t && t || new Error(t) }
                    if (n) return this.unsubscribe(), i
                }, e.prototype._unsubscribe = function() {
                    var t = this.id,
                        e = this.scheduler,
                        n = e.actions,
                        i = n.indexOf(this);
                    this.work = null, this.state = null, this.pending = !1, this.scheduler = null, -1 !== i && n.splice(i, 1), null != t && (this.id = this.recycleAsyncId(e, t, null)), this.delay = null
                }, e
            }(function(t) {
                function e(e, n) { return t.call(this) || this }
                return i.a(e, t), e.prototype.schedule = function(t, e) { return void 0 === e && (e = 0), this }, e
            }(n(7).a))
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return r }));
        var i = n(10);

        function r(t) { return !Object(i.a)(t) && t - parseFloat(t) + 1 >= 0 }
    }, function(t, e, n) {
        var i = n(29),
            r = n(188),
            o = n(43),
            g = n(110),
            s = Object.defineProperty;
        e.f = i ? s : function(t, e, n) {
            if (o(t), e = g(e, !0), o(n), r) try { return s(t, e, n) } catch (t) {}
            if ("get" in n || "set" in n) throw TypeError("Accessors not supported");
            return "value" in n && (t[e] = n.value), t
        }
    }, function(t, e, n) { t.exports = n(214) }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return o }));
        var i = n(65),
            r = n(134);

        function o() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return Object(r.a)()(i.a.apply(void 0, t)) }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return C }));
        var i = n(145),
            r = n(61),
            o = n(34),
            g = n(40),
            s = n(146),
            A = n(147),
            a = n(89),
            C = function(t) {
                if (t && "function" == typeof t[g.a]) return C = t,
                    function(t) { var e = C[g.a](); if ("function" != typeof e.subscribe) throw new TypeError("Provided object does not correctly implement Symbol.observable"); return e.subscribe(t) };
                if (Object(s.a)(t)) return Object(i.a)(t);
                if (Object(A.a)(t)) return n = t,
                    function(t) { return n.then((function(e) { t.closed || (t.next(e), t.complete()) }), (function(e) { return t.error(e) })).then(null, r.a), t };
                if (t && "function" == typeof t[o.a]) return e = t,
                    function(t) { for (var n = e[o.a]();;) { var i = void 0; try { i = n.next() } catch (e) { return t.error(e), t } if (i.done) { t.complete(); break } if (t.next(i.value), t.closed) break } return "function" == typeof n.return && t.add((function() { n.return && n.return() })), t };
                var e, n, C, I = Object(a.a)(t) ? "an invalid object" : "'" + t + "'";
                throw new TypeError("You provided " + I + " where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.")
            }
    }, function(t, e, n) {
        "use strict";

        function i(t) { setTimeout((function() { throw t }), 0) }
        n.d(e, "a", (function() { return i }))
    }, function(t, e, n) {
        var i = n(23),
            r = n(21),
            o = function(t) { return "function" == typeof t ? t : void 0 };
        t.exports = function(t, e) { return arguments.length < 2 ? o(i[t]) || o(r[t]) : i[t] && i[t][e] || r[t] && r[t][e] }
    }, function(t, e, n) {
        "use strict";
        var i = n(37),
            r = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var o = r(n(219)),
            g = r(n(5)),
            s = r(n(6)),
            A = i(n(24)),
            a = function() {
                function t(e) {
                    (0, g.default)(this, t), this._values = function(t) {
                        if (!t) return [];
                        if (A.isString(t)) return [t];
                        if (Array.isArray(t)) {
                            for (var e = [], n = function t(e) { return e.reduce((function(e, n) { return Array.isArray(n) ? e.concat(t(n)) : e.concat(n) }), []) }(t), i = 0; i < n.length; i++) {
                                var r = n[i];
                                if (null != r) {
                                    if (!A.isString(r)) throw new TypeError("Bookmark value should be a string, given: '".concat(r, "'"));
                                    e.push(r)
                                }
                            }
                            return e
                        }
                        throw new TypeError("Bookmark should either be a string or a string array, given: '".concat(t, "'"))
                    }(e)
                }
                return (0, s.default)(t, [{ key: "isEmpty", value: function() { return 0 === this._values.length } }, { key: "values", value: function() { return this._values } }, { key: "asBeginTransactionParameters", value: function() { return this.isEmpty() ? {} : (0, o.default)({}, "bookmarks", this._values) } }], [{ key: "empty", value: function() { return C } }]), t
            }();
        e.default = a;
        var C = new a(null)
    }, function(t, e) {
        function n(t, e, n, i, r, o, g) {
            try {
                var s = t[o](g),
                    A = s.value
            } catch (t) { return void n(t) }
            s.done ? e(A) : Promise.resolve(A).then(i, r)
        }
        t.exports = function(t) {
            return function() {
                var e = this,
                    i = arguments;
                return new Promise((function(r, o) {
                    var g = t.apply(e, i);

                    function s(t) { n(g, r, o, s, A, "next", t) }

                    function A(t) { n(g, r, o, s, A, "throw", t) }
                    s(void 0)
                }))
            }
        }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return g }));
        var i = n(14),
            r = n(52),
            o = n(91);

        function g() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; var n = t[t.length - 1]; return Object(i.a)(n) ? (t.pop(), Object(o.a)(t, n)) : Object(r.a)(t) }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return r })), n.d(e, "b", (function() { return o }));
        var i = n(28);

        function r() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return o(t) }

        function o(t) { return 0 === t.length ? i.a : 1 === t.length ? t[0] : function(e) { return t.reduce((function(t, e) { return e(t) }), e) } }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "b", (function() { return I })), n.d(e, "a", (function() { return u }));
        var i = n(0),
            r = 1,
            o = function() { return Promise.resolve() }(),
            g = {};

        function s(t) { return t in g && (delete g[t], !0) }
        var A = function(t) { var e = r++; return g[e] = !0, o.then((function() { return s(e) && t() })), e },
            a = function(t) { s(t) },
            C = function(t) {
                function e(e, n) { var i = t.call(this, e, n) || this; return i.scheduler = e, i.work = n, i }
                return i.a(e, t), e.prototype.requestAsyncId = function(e, n, i) { return void 0 === i && (i = 0), null !== i && i > 0 ? t.prototype.requestAsyncId.call(this, e, n, i) : (e.actions.push(this), e.scheduled || (e.scheduled = A(e.flush.bind(e, null)))) }, e.prototype.recycleAsyncId = function(e, n, i) {
                    if (void 0 === i && (i = 0), null !== i && i > 0 || null === i && this.delay > 0) return t.prototype.recycleAsyncId.call(this, e, n, i);
                    0 === e.actions.length && (a(n), e.scheduled = void 0)
                }, e
            }(n(55).a),
            I = new(function(t) {
                function e() { return null !== t && t.apply(this, arguments) || this }
                return i.a(e, t), e.prototype.flush = function(t) {
                    this.active = !0, this.scheduled = void 0;
                    var e, n = this.actions,
                        i = -1,
                        r = n.length;
                    t = t || n.shift();
                    do { if (e = t.execute(t.state, t.delay)) break } while (++i < r && (t = n.shift()));
                    if (this.active = !1, e) { for (; ++i < r && (t = n.shift());) t.unsubscribe(); throw e }
                }, e
            }(n(53).a))(C),
            u = I
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return i }));
        var i = function() { return "function" == typeof Symbol ? Symbol("rxSubscriber") : "@@rxSubscriber_" + Math.random() }()
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return i }));
        var i = function() {
            function t(t) { return Error.call(this), this.message = t ? t.length + " errors occurred during unsubscription:\n" + t.map((function(t, e) { return e + 1 + ") " + t.toString() })).join("\n  ") : "", this.name = "UnsubscriptionError", this.errors = t, this }
            return t.prototype = Object.create(Error.prototype), t
        }()
    }, function(t, e, n) { t.exports = n(214) }, function(t, e) {
        var n = {}.toString;
        t.exports = function(t) { return n.call(t).slice(8, -1) }
    }, function(t, e) { t.exports = {} }, function(t, e) { t.exports = function(t, e) { return { enumerable: !(1 & t), configurable: !(2 & t), writable: !(4 & t), value: e } } }, function(t, e) { t.exports = !0 }, function(t, e) { t.exports = function(t) { if ("function" != typeof t) throw TypeError(String(t) + " is not a function"); return t } }, function(t, e, n) {
        var i = n(151);
        t.exports = function(t) { return Object(i(t)) }
    }, function(t, e, n) {
        var i = n(160),
            r = Math.min;
        t.exports = function(t) { return t > 0 ? r(i(t), 9007199254740991) : 0 }
    }, function(t, e, n) {
        var i = n(162),
            r = n(57).f,
            o = n(49),
            g = n(44),
            s = n(256),
            A = n(22)("toStringTag");
        t.exports = function(t, e, n, a) {
            if (t) {
                var C = n ? t : t.prototype;
                g(C, A) || r(C, A, { configurable: !0, value: e }), a && !i && o(C, "toString", s)
            }
        }
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.utf8 = e.HostNameResolver = e.Channel = e.alloc = void 0;
        var r = i(n(172)),
            o = i(n(363)),
            g = i(n(364)),
            s = i(n(366));
        e.alloc = function(t) { return new r.default(t) };
        var A = o.default;
        e.Channel = A;
        var a = g.default;
        e.HostNameResolver = a;
        var C = s.default;
        e.utf8 = C
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = e.ALL = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(39),
            s = n(38),
            A = n(24);
        e.ALL = -1;
        var a = function() {
            function t(e, n, i) {
                (0, r.default)(this, t), this.signature = e, this.fields = n, this.toString = i
            }
            return (0, o.default)(t, null, [{ key: "init", value: function(e, n) { return new t(1, [e, n], (function() { return "INIT ".concat(e, " {...}") })) } }, { key: "run", value: function(e, n) { return new t(16, [e, n], (function() { return "RUN ".concat(e, " ").concat(JSON.stringify(n)) })) } }, { key: "pullAll", value: function() { return u } }, { key: "reset", value: function() { return c } }, {
                key: "hello",
                value: function(e, n) {
                    var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null,
                        r = Object.assign({ user_agent: e }, n);
                    return null != i && (r.routing = i), new t(1, [r], (function() { return "HELLO {user_agent: '".concat(e, "', ...}") }))
                }
            }, {
                key: "begin",
                value: function() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                        n = e.bookmark,
                        i = e.txConfig,
                        r = e.database,
                        o = e.mode,
                        g = C(n, i, r, o);
                    return new t(17, [g], (function() { return "BEGIN ".concat(JSON.stringify(g)) }))
                }
            }, { key: "commit", value: function() { return l } }, { key: "rollback", value: function() { return h } }, {
                key: "runWithMetadata",
                value: function(e, n) {
                    var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                        r = i.bookmark,
                        o = i.txConfig,
                        g = i.database,
                        s = i.mode,
                        A = C(r, o, g, s);
                    return new t(16, [e, n, A], (function() { return "RUN ".concat(e, " ").concat(JSON.stringify(n), " ").concat(JSON.stringify(A)) }))
                }
            }, { key: "goodbye", value: function() { return d } }, {
                key: "pull",
                value: function() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                        n = e.stmtId,
                        i = void 0 === n ? -1 : n,
                        r = e.n,
                        o = void 0 === r ? -1 : r,
                        g = I(i || -1, o || -1);
                    return new t(63, [g], (function() { return "PULL ".concat(JSON.stringify(g)) }))
                }
            }, {
                key: "discard",
                value: function() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                        n = e.stmtId,
                        i = void 0 === n ? -1 : n,
                        r = e.n,
                        o = void 0 === r ? -1 : r,
                        g = I(i || -1, o || -1);
                    return new t(47, [g], (function() { return "DISCARD ".concat(JSON.stringify(g)) }))
                }
            }]), t
        }();

        function C(t, e, n, i) { var r = {}; return t.isEmpty() || (r.bookmarks = t.values()), e.timeout && (r.tx_timeout = e.timeout), e.metadata && (r.tx_metadata = e.metadata), n && (r.db = (0, A.assertString)(n, "database")), i === g.ACCESS_MODE_READ && (r.mode = "r"), r }

        function I(t, e) { var n = { n: (0, s.int)(e) }; return -1 !== t && (n.qid = (0, s.int)(t)), n }
        e.default = a;
        var u = new a(63, [], (function() { return "PULL_ALL" })),
            c = new a(15, [], (function() { return "RESET" })),
            l = new a(18, [], (function() { return "COMMIT" })),
            h = new a(19, [], (function() { return "ROLLBACK" })),
            d = new a(2, [], (function() { return "GOODBYE" }))
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = e.WRITE = e.READ = e.Driver = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(11),
            s = (i(n(173)), i(n(63))),
            A = i(n(369)),
            a = i(n(375)),
            C = n(39),
            I = i(n(177)),
            u = n(176),
            c = i(n(127)),
            l = i(n(377)),
            h = n(80),
            d = n(24),
            f = C.ACCESS_MODE_READ;
        e.READ = f;
        var p = C.ACCESS_MODE_WRITE;
        e.WRITE = p;
        var v = 0,
            y = function() {
                function t(e, n) {
                    var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                        o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {};
                    (0, r.default)(this, t), b(o), this._id = v++, this._address = e, this._userAgent = n, this._authToken = i, this._config = o, this._log = I.default.create(o), this._connectionProvider = null, this._afterConstruction()
                }
                return (0, o.default)(t, [{
                    key: "verifyConnectivity",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.database,
                            n = void 0 === e ? "" : e,
                            i = this._getOrCreateConnectionProvider(),
                            r = new a.default(i);
                        return r.verify({ database: n })
                    }
                }, { key: "supportsMultiDb", value: function() { return this._getOrCreateConnectionProvider().supportsMultiDb() } }, { key: "supportsTransactionConfig", value: function() { return this._getOrCreateConnectionProvider().supportsTransactionConfig() } }, { key: "_supportsRouting", value: function() { return !1 } }, { key: "_isEncrypted", value: function() { return this._config.encrypted === d.ENCRYPTION_ON } }, { key: "_getTrust", value: function() { return this._config.trust } }, {
                    key: "session",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.defaultAccessMode,
                            n = void 0 === e ? p : e,
                            i = t.bookmarks,
                            r = t.database,
                            o = void 0 === r ? "" : r,
                            g = t.fetchSize;
                        return this._newSession({ defaultAccessMode: n, bookmarkOrBookmarks: i, database: o, reactive: !1, fetchSize: w(g, this._config.fetchSize) })
                    }
                }, {
                    key: "rxSession",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.defaultAccessMode,
                            n = void 0 === e ? p : e,
                            i = t.bookmarks,
                            r = t.database,
                            o = void 0 === r ? "" : r,
                            g = t.fetchSize;
                        return new l.default({ session: this._newSession({ defaultAccessMode: n, bookmarks: i, database: o, reactive: !0, fetchSize: w(g, this._config.fetchSize) }), config: this._config })
                    }
                }, { key: "close", value: function() { return this._log.info("Driver ".concat(this._id, " closing")), this._connectionProvider ? this._connectionProvider.close() : Promise.resolve() } }, { key: "_afterConstruction", value: function() { this._log.info("Direct driver ".concat(this._id, " created for server address ").concat(this._address)) } }, { key: "_createConnectionProvider", value: function(t, e, n) { return new A.default({ id: this._id, config: this._config, log: this._log, address: t, userAgent: e, authToken: n }) } }, {
                    key: "_newSession",
                    value: function(e) {
                        var n = e.defaultAccessMode,
                            i = e.bookmarkOrBookmarks,
                            r = e.database,
                            o = e.reactive,
                            g = e.fetchSize,
                            A = t._validateSessionMode(n),
                            a = this._getOrCreateConnectionProvider(),
                            C = i ? new s.default(i) : s.default.empty();
                        return new c.default({ mode: A, database: r, connectionProvider: a, bookmark: C, config: this._config, reactive: o, fetchSize: g })
                    }
                }, { key: "_getOrCreateConnectionProvider", value: function() { return this._connectionProvider || (this._connectionProvider = this._createConnectionProvider(this._address, this._userAgent, this._authToken)), this._connectionProvider } }], [{ key: "_validateSessionMode", value: function(t) { var e = t || p; if (e !== C.ACCESS_MODE_READ && e !== C.ACCESS_MODE_WRITE) throw (0, g.newError)("Illegal session mode " + e); return e } }]), t
            }();

        function b(t) { t.maxConnectionLifetime = m(t.maxConnectionLifetime, 36e5), t.maxConnectionPoolSize = m(t.maxConnectionPoolSize, u.DEFAULT_MAX_SIZE), t.connectionAcquisitionTimeout = m(t.connectionAcquisitionTimeout, u.DEFAULT_ACQUISITION_TIMEOUT), t.fetchSize = w(t.fetchSize, 1e3) }

        function m(t, e) { var n = parseInt(t, 10); return n > 0 || 0 === n ? n : n < 0 ? Number.MAX_SAFE_INTEGER : e }

        function w(t, e) { var n = parseInt(t, 10); if (n > 0 || n === h.ALL) return n; if (0 === n || n < 0) throw new Error("The fetch size can only be a positive value or -1 for ALL. However fetchSize = " + n); return e }
        e.Driver = y;
        var _ = y;
        e.default = _
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return o }));
        var i = n(0),
            r = n(1);

        function o() { return function(t) { return t.lift(new g(t)) } }
        var g = function() {
                function t(t) { this.connectable = t }
                return t.prototype.call = function(t, e) {
                    var n = this.connectable;
                    n._refCount++;
                    var i = new s(t, n),
                        r = e.subscribe(i);
                    return i.closed || (i.connection = n.connect()), r
                }, t
            }(),
            s = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.connectable = n, i }
                return i.a(e, t), e.prototype._unsubscribe = function() {
                    var t = this.connectable;
                    if (t) {
                        this.connectable = null;
                        var e = t._refCount;
                        if (e <= 0) this.connection = null;
                        else if (t._refCount = e - 1, e > 1) this.connection = null;
                        else {
                            var n = this.connection,
                                i = t._connection;
                            this.connection = null, !i || n && i !== n || i.unsubscribe()
                        }
                    } else this.connection = null
                }, e
            }(r.a)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return C }));
        var i = n(0),
            r = n(8),
            o = n(104),
            g = n(7),
            s = n(132),
            A = n(41),
            a = n(144),
            C = function(t) {
                function e(e, n, i) { void 0 === e && (e = Number.POSITIVE_INFINITY), void 0 === n && (n = Number.POSITIVE_INFINITY); var r = t.call(this) || this; return r.scheduler = i, r._events = [], r._infiniteTimeWindow = !1, r._bufferSize = e < 1 ? 1 : e, r._windowTime = n < 1 ? 1 : n, n === Number.POSITIVE_INFINITY ? (r._infiniteTimeWindow = !0, r.next = r.nextInfiniteTimeWindow) : r.next = r.nextTimeWindow, r }
                return i.a(e, t), e.prototype.nextInfiniteTimeWindow = function(e) {
                    if (!this.isStopped) {
                        var n = this._events;
                        n.push(e), n.length > this._bufferSize && n.shift()
                    }
                    t.prototype.next.call(this, e)
                }, e.prototype.nextTimeWindow = function(e) { this.isStopped || (this._events.push(new I(this._getNow(), e)), this._trimBufferThenGetEvents()), t.prototype.next.call(this, e) }, e.prototype._subscribe = function(t) {
                    var e, n = this._infiniteTimeWindow,
                        i = n ? this._events : this._trimBufferThenGetEvents(),
                        r = this.scheduler,
                        o = i.length;
                    if (this.closed) throw new A.a;
                    if (this.isStopped || this.hasError ? e = g.a.EMPTY : (this.observers.push(t), e = new a.a(this, t)), r && t.add(t = new s.a(t, r)), n)
                        for (var C = 0; C < o && !t.closed; C++) t.next(i[C]);
                    else
                        for (C = 0; C < o && !t.closed; C++) t.next(i[C].value);
                    return this.hasError ? t.error(this.thrownError) : this.isStopped && t.complete(), e
                }, e.prototype._getNow = function() { return (this.scheduler || o.a).now() }, e.prototype._trimBufferThenGetEvents = function() { for (var t = this._getNow(), e = this._bufferSize, n = this._windowTime, i = this._events, r = i.length, o = 0; o < r && !(t - i[o].time < n);) o++; return r > e && (o = Math.max(o, r - e)), o > 0 && i.splice(0, o), i }, e
            }(r.a),
            I = function() { return function(t, e) { this.time = t, this.value = e } }()
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return r }));
        var i = n(3);

        function r(t, e) { return e ? new i.a((function(n) { return e.schedule(o, 0, { error: t, subscriber: n }) })) : new i.a((function(e) { return e.error(t) })) }

        function o(t) {
            var e = t.error;
            t.subscriber.error(e)
        }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "b", (function() { return C })), n.d(e, "a", (function() { return I }));
        var i = n(0),
            r = n(14),
            o = n(10),
            g = n(30),
            s = n(25),
            A = n(52),
            a = {};

        function C() {
            for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
            var n = void 0,
                i = void 0;
            return Object(r.a)(t[t.length - 1]) && (i = t.pop()), "function" == typeof t[t.length - 1] && (n = t.pop()), 1 === t.length && Object(o.a)(t[0]) && (t = t[0]), Object(A.a)(t, i).lift(new I(n))
        }
        var I = function() {
                function t(t) { this.resultSelector = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new u(t, this.resultSelector)) }, t
            }(),
            u = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.resultSelector = n, i.active = 0, i.values = [], i.observables = [], i }
                return i.a(e, t), e.prototype._next = function(t) { this.values.push(a), this.observables.push(t) }, e.prototype._complete = function() {
                    var t = this.observables,
                        e = t.length;
                    if (0 === e) this.destination.complete();
                    else {
                        this.active = e, this.toRespond = e;
                        for (var n = 0; n < e; n++) {
                            var i = t[n];
                            this.add(Object(s.a)(this, i, void 0, n))
                        }
                    }
                }, e.prototype.notifyComplete = function(t) { 0 == (this.active -= 1) && this.destination.complete() }, e.prototype.notifyNext = function(t, e, n) {
                    var i = this.values,
                        r = i[n],
                        o = this.toRespond ? r === a ? --this.toRespond : this.toRespond : 0;
                    i[n] = e, 0 === o && (this.resultSelector ? this._tryResultSelector(i) : this.destination.next(i.slice()))
                }, e.prototype._tryResultSelector = function(t) {
                    var e;
                    try { e = this.resultSelector.apply(this, t) } catch (t) { return void this.destination.error(t) }
                    this.destination.next(e)
                }, e
            }(g.a)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return o }));
        var i = n(51),
            r = n(28);

        function o(t) { return void 0 === t && (t = Number.POSITIVE_INFINITY), Object(i.b)(r.a, t) }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return g }));
        var i = n(3),
            r = n(19),
            o = n(18);

        function g(t) { return new i.a((function(e) { var n; try { n = t() } catch (t) { return void e.error(t) } return (n ? Object(r.a)(n) : Object(o.b)()).subscribe(e) })) }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "b", (function() { return a })), n.d(e, "a", (function() { return C }));
        var i = n(0),
            r = n(52),
            o = n(10),
            g = n(1),
            s = n(34),
            A = n(2);

        function a() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; var n = t[t.length - 1]; return "function" == typeof n && t.pop(), Object(r.a)(t, void 0).lift(new C(n)) }
        var C = function() {
                function t(t) { this.resultSelector = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new I(t, this.resultSelector)) }, t
            }(),
            I = function(t) {
                function e(e, n, i) { void 0 === i && (i = Object.create(null)); var r = t.call(this, e) || this; return r.resultSelector = n, r.iterators = [], r.active = 0, r.resultSelector = "function" == typeof n ? n : void 0, r }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e = this.iterators;
                    Object(o.a)(t) ? e.push(new c(t)) : "function" == typeof t[s.a] ? e.push(new u(t[s.a]())) : e.push(new l(this.destination, this, t))
                }, e.prototype._complete = function() {
                    var t = this.iterators,
                        e = t.length;
                    if (this.unsubscribe(), 0 !== e) {
                        this.active = e;
                        for (var n = 0; n < e; n++) {
                            var i = t[n];
                            if (i.stillUnsubscribed) this.destination.add(i.subscribe());
                            else this.active--
                        }
                    } else this.destination.complete()
                }, e.prototype.notifyInactive = function() { this.active--, 0 === this.active && this.destination.complete() }, e.prototype.checkIterators = function() {
                    for (var t = this.iterators, e = t.length, n = this.destination, i = 0; i < e; i++) { if ("function" == typeof(g = t[i]).hasValue && !g.hasValue()) return }
                    var r = !1,
                        o = [];
                    for (i = 0; i < e; i++) {
                        var g, s = (g = t[i]).next();
                        if (g.hasCompleted() && (r = !0), s.done) return void n.complete();
                        o.push(s.value)
                    }
                    this.resultSelector ? this._tryresultSelector(o) : n.next(o), r && n.complete()
                }, e.prototype._tryresultSelector = function(t) {
                    var e;
                    try { e = this.resultSelector.apply(this, t) } catch (t) { return void this.destination.error(t) }
                    this.destination.next(e)
                }, e
            }(g.a),
            u = function() {
                function t(t) { this.iterator = t, this.nextResult = t.next() }
                return t.prototype.hasValue = function() { return !0 }, t.prototype.next = function() { var t = this.nextResult; return this.nextResult = this.iterator.next(), t }, t.prototype.hasCompleted = function() { var t = this.nextResult; return Boolean(t && t.done) }, t
            }(),
            c = function() {
                function t(t) { this.array = t, this.index = 0, this.length = 0, this.length = t.length }
                return t.prototype[s.a] = function() { return this }, t.prototype.next = function(t) {
                    var e = this.index++,
                        n = this.array;
                    return e < this.length ? { value: n[e], done: !1 } : { value: null, done: !0 }
                }, t.prototype.hasValue = function() { return this.array.length > this.index }, t.prototype.hasCompleted = function() { return this.array.length === this.index }, t
            }(),
            l = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.parent = n, r.observable = i, r.stillUnsubscribed = !0, r.buffer = [], r.isComplete = !1, r }
                return i.a(e, t), e.prototype[s.a] = function() { return this }, e.prototype.next = function() { var t = this.buffer; return 0 === t.length && this.isComplete ? { value: null, done: !0 } : { value: t.shift(), done: !1 } }, e.prototype.hasValue = function() { return this.buffer.length > 0 }, e.prototype.hasCompleted = function() { return 0 === this.buffer.length && this.isComplete }, e.prototype.notifyComplete = function() { this.buffer.length > 0 ? (this.isComplete = !0, this.parent.notifyInactive()) : this.destination.complete() }, e.prototype.notifyNext = function(t) { this.buffer.push(t), this.parent.checkIterators() }, e.prototype.subscribe = function() { return Object(A.c)(this.observable, new A.a(this)) }, e
            }(A.b)
    }, function(t, e, n) {
        "use strict";

        function i(t) { return null !== t && "object" == typeof t }
        n.d(e, "a", (function() { return i }))
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return r }));
        var i = n(1);

        function r(t) {
            for (; t;) {
                var e = t,
                    n = e.closed,
                    r = e.destination,
                    o = e.isStopped;
                if (n || o) return !1;
                t = r && r instanceof i.a ? r : null
            }
            return !0
        }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return o }));
        var i = n(3),
            r = n(7);

        function o(t, e) {
            return new i.a((function(n) {
                var i = new r.a,
                    o = 0;
                return i.add(e.schedule((function() { o !== t.length ? (n.next(t[o++]), n.closed || i.add(this.schedule())) : n.complete() }))), i
            }))
        }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return o }));
        var i = n(26),
            r = n(61),
            o = {
                closed: !0,
                next: function(t) {},
                error: function(t) {
                    if (i.a.useDeprecatedSynchronousErrorHandling) throw t;
                    Object(r.a)(t)
                },
                complete: function() {}
            }
    }, function(t, e, n) { t.exports = n(299) }, function(t, e, n) {
        n(249);
        var i = n(258),
            r = n(21),
            o = n(114),
            g = n(49),
            s = n(72),
            A = n(22)("toStringTag");
        for (var a in i) {
            var C = r[a],
                I = C && C.prototype;
            I && o(I) !== A && g(I, A, a), s[a] = s.Array
        }
    }, function(t, e, n) {
        var i, r, o, g = n(251),
            s = n(21),
            A = n(42),
            a = n(49),
            C = n(44),
            I = n(111),
            u = n(112),
            c = s.WeakMap;
        if (g) {
            var l = new c,
                h = l.get,
                d = l.has,
                f = l.set;
            i = function(t, e) { return f.call(l, t, e), e }, r = function(t) { return h.call(l, t) || {} }, o = function(t) { return d.call(l, t) }
        } else {
            var p = I("state");
            u[p] = !0, i = function(t, e) { return a(t, p, e), e }, r = function(t) { return C(t, p) ? t[p] : {} }, o = function(t) { return C(t, p) }
        }
        t.exports = { set: i, get: r, has: o, enforce: function(t) { return o(t) ? r(t) : i(t, {}) }, getterFor: function(t) { return function(e) { var n; if (!A(e) || (n = r(e)).type !== t) throw TypeError("Incompatible receiver, " + t + " required"); return n } } }
    }, function(t, e, n) {
        var i = n(29),
            r = n(156),
            o = n(73),
            g = n(48),
            s = n(110),
            A = n(44),
            a = n(188),
            C = Object.getOwnPropertyDescriptor;
        e.f = i ? C : function(t, e) {
            if (t = g(t), e = s(e, !0), a) try { return C(t, e) } catch (t) {}
            if (A(t, e)) return o(!r.f.call(t, e), t[e])
        }
    }, function(t, e, n) {
        var i = n(75);
        t.exports = function(t, e, n) {
            if (i(t), void 0 === e) return t;
            switch (n) {
                case 0:
                    return function() { return t.call(e) };
                case 1:
                    return function(n) { return t.call(e, n) };
                case 2:
                    return function(n, i) { return t.call(e, n, i) };
                case 3:
                    return function(n, i, r) { return t.call(e, n, i, r) }
            }
            return function() { return t.apply(e, arguments) }
        }
    }, function(t, e, n) {
        var i = n(49);
        t.exports = function(t, e, n, r) { r && r.enumerable ? t[e] = n : i(t, e, n) }
    }, function(t, e, n) {
        "use strict";
        var i = n(259).charAt,
            r = n(95),
            o = n(189),
            g = r.set,
            s = r.getterFor("String Iterator");
        o(String, "String", (function(t) { g(this, { type: "String Iterator", string: String(t), index: 0 }) }), (function() {
            var t, e = s(this),
                n = e.string,
                r = e.index;
            return r >= n.length ? { value: void 0, done: !0 } : (t = i(n, r), e.index += t.length, { value: t, done: !1 })
        }))
    }, function(t, e, n) {
        var i = n(71);
        t.exports = Array.isArray || function(t) { return "Array" == i(t) }
    }, function(t, e, n) {
        var i = n(23);
        t.exports = function(t) { return i[t + "Prototype"] }
    }, function(t, e, n) {
        "use strict";
        var i = n(75),
            r = function(t) {
                var e, n;
                this.promise = new t((function(t, i) {
                    if (void 0 !== e || void 0 !== n) throw TypeError("Bad Promise constructor");
                    e = t, n = i
                })), this.resolve = i(e), this.reject = i(n)
            };
        t.exports.f = function(t) { return new r(t) }
    }, function(t, e, n) {
        "use strict";
        var i = n(37),
            r = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var o = r(n(5)),
            g = r(n(6)),
            s = i(n(24)),
            A = n(38),
            a = n(11),
            C = function() {
                function t(e) {
                    (0, o.default)(this, t),
                    function(t) { t && s.assertObject(t, "Transaction config") }(e), this.timeout = function(t) { if (s.isObject(t) && (t.timeout || 0 === t.timeout)) { s.assertNumberOrInteger(t.timeout, "Transaction timeout"); var e = (0, A.int)(t.timeout); if (e.isZero()) throw (0, a.newError)("Transaction timeout should not be zero"); if (e.isNegative()) throw (0, a.newError)("Transaction timeout should not be negative"); return e } return null }(e), this.metadata = function(t) { if (s.isObject(t) && t.metadata) { var e = t.metadata; if (s.assertObject(e), 0 !== Object.keys(e).length) return e } return null }(e)
                }
                return (0, g.default)(t, [{ key: "isEmpty", value: function() { return Object.values(this).every((function(t) { return null == t })) } }], [{ key: "empty", value: function() { return I } }]), t
            }();
        e.default = C;
        var I = new C({})
    }, function(t, e, n) {
        "use strict";
        n.d(e, "b", (function() { return o })), n.d(e, "a", (function() { return g }));
        var i = n(0),
            r = function(t) {
                function e(e, n) { var i = t.call(this, e, n) || this; return i.scheduler = e, i.work = n, i }
                return i.a(e, t), e.prototype.schedule = function(e, n) { return void 0 === n && (n = 0), n > 0 ? t.prototype.schedule.call(this, e, n) : (this.delay = n, this.state = e, this.scheduler.flush(this), this) }, e.prototype.execute = function(e, n) { return n > 0 || this.closed ? t.prototype.execute.call(this, e, n) : this._execute(e, n) }, e.prototype.requestAsyncId = function(e, n, i) { return void 0 === i && (i = 0), null !== i && i > 0 || null === i && this.delay > 0 ? t.prototype.requestAsyncId.call(this, e, n, i) : e.flush(this) }, e
            }(n(55).a),
            o = new(function(t) {
                function e() { return null !== t && t.apply(this, arguments) || this }
                return i.a(e, t), e
            }(n(53).a))(r),
            g = o
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return i }));
        var i = function() {
            function t(e, n) { void 0 === n && (n = t.now), this.SchedulerAction = e, this.now = n }
            return t.prototype.schedule = function(t, e, n) { return void 0 === e && (e = 0), new this.SchedulerAction(this, t).schedule(n, e) }, t.now = function() { return Date.now() }, t
        }()
    }, function(t, e, n) { t.exports = n(310) }, function(t, e, n) {
        var i = n(217);

        function r(t, e) {
            for (var n = 0; n < e.length; n++) {
                var r = e[n];
                r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), i(t, r.key, r)
            }
        }
        t.exports = function(t, e, n) { return e && r(t.prototype, e), n && r(t, n), t }
    }, function(t, e, n) { t.exports = n(354) }, function(t, e, n) { t.exports = n(350) }, function(t, e, n) {
        var i = n(42);
        t.exports = function(t, e) { if (!i(t)) return t; var n, r; if (e && "function" == typeof(n = t.toString) && !i(r = n.call(t))) return r; if ("function" == typeof(n = t.valueOf) && !i(r = n.call(t))) return r; if (!e && "function" == typeof(n = t.toString) && !i(r = n.call(t))) return r; throw TypeError("Can't convert object to primitive value") }
    }, function(t, e, n) {
        var i = n(154),
            r = n(155),
            o = i("keys");
        t.exports = function(t) { return o[t] || (o[t] = r(t)) }
    }, function(t, e) { t.exports = {} }, function(t, e, n) {
        var i = n(194),
            r = n(161);
        t.exports = Object.keys || function(t) { return i(t, r) }
    }, function(t, e, n) {
        var i = n(162),
            r = n(71),
            o = n(22)("toStringTag"),
            g = "Arguments" == r(function() { return arguments }());
        t.exports = i ? r : function(t) { var e, n, i; return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof(n = function(t, e) { try { return t[e] } catch (t) {} }(e = Object(t), o)) ? n : g ? r(e) : "Object" == (i = r(e)) && "function" == typeof e.callee ? "Arguments" : i }
    }, function(t, e, n) {
        var i = n(114),
            r = n(72),
            o = n(22)("iterator");
        t.exports = function(t) { if (null != t) return t[o] || t["@@iterator"] || r[i(t)] }
    }, function(t, e, n) {
        "use strict";
        var i = n(110),
            r = n(57),
            o = n(73);
        t.exports = function(t, e, n) {
            var g = i(e);
            g in t ? r.f(t, g, o(0, n)) : t[g] = n
        }
    }, function(t, e, n) {
        var i = n(27),
            r = n(22),
            o = n(163),
            g = r("species");
        t.exports = function(t) { return o >= 51 || !i((function() { var e = []; return (e.constructor = {})[g] = function() { return { foo: 1 } }, 1 !== e[t](Boolean).foo })) }
    }, function(t, e, n) {
        var i = n(29),
            r = n(27),
            o = n(44),
            g = Object.defineProperty,
            s = {},
            A = function(t) { throw t };
        t.exports = function(t, e) {
            if (o(s, t)) return s[t];
            e || (e = {});
            var n = [][t],
                a = !!o(e, "ACCESSORS") && e.ACCESSORS,
                C = o(e, 0) ? e[0] : A,
                I = o(e, 1) ? e[1] : void 0;
            return s[t] = !!n && !r((function() {
                if (a && !i) return !0;
                var t = { length: -1 };
                a ? g(t, 1, { enumerable: !0, get: A }) : t[1] = 1, n.call(t, C, I)
            }))
        }
    }, function(t, e, n) {
        var i = n(97),
            r = n(185),
            o = n(76),
            g = n(77),
            s = n(203),
            A = [].push,
            a = function(t) {
                var e = 1 == t,
                    n = 2 == t,
                    a = 3 == t,
                    C = 4 == t,
                    I = 6 == t,
                    u = 5 == t || I;
                return function(c, l, h, d) {
                    for (var f, p, v = o(c), y = r(v), b = i(l, h, 3), m = g(y.length), w = 0, _ = d || s, k = e ? _(c, m) : n ? _(c, 0) : void 0; m > w; w++)
                        if ((u || w in y) && (p = b(f = y[w], w, v), t))
                            if (e) k[w] = p;
                            else if (p) switch (t) {
                            case 3:
                                return !0;
                            case 5:
                                return f;
                            case 6:
                                return w;
                            case 2:
                                A.call(k, f)
                        } else if (C) return !1;
                    return I ? -1 : a || C ? C : k
                }
            };
        t.exports = { forEach: a(0), map: a(1), filter: a(2), some: a(3), every: a(4), find: a(5), findIndex: a(6) }
    }, function(t, e, n) {
        var i = n(43),
            r = n(199),
            o = n(77),
            g = n(97),
            s = n(115),
            A = n(198),
            a = function(t, e) { this.stopped = t, this.result = e };
        (t.exports = function(t, e, n, C, I) {
            var u, c, l, h, d, f, p, v = g(e, n, C ? 2 : 1);
            if (I) u = t;
            else {
                if ("function" != typeof(c = s(t))) throw TypeError("Target is not iterable");
                if (r(c)) {
                    for (l = 0, h = o(t.length); h > l; l++)
                        if ((d = C ? v(i(p = t[l])[0], p[1]) : v(t[l])) && d instanceof a) return d;
                    return new a(!1)
                }
                u = c.call(t)
            }
            for (f = u.next; !(p = f.call(u)).done;)
                if ("object" == typeof(d = A(u, v, p.value, C)) && d && d instanceof a) return d;
            return new a(!1)
        }).stop = function(t) { return new a(!0, t) }
    }, function(t, e) { t.exports = function(t) { try { return { error: !1, value: t() } } catch (t) { return { error: !0, value: t } } } }, function(t, e) {
        function n(e) { return "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? t.exports = n = function(t) { return typeof t } : t.exports = n = function(t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t }, n(e) }
        t.exports = n
    }, function(t, e) { t.exports = function(t) { if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return t } }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.EMPTY_CONNECTION_HOLDER = e.default = void 0;
        var r = i(n(16)),
            o = i(n(12)),
            g = i(n(17)),
            s = i(n(5)),
            A = i(n(6)),
            a = n(11),
            C = n(24),
            I = n(39),
            u = i(n(63)),
            c = function() {
                function t() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                        n = e.mode,
                        i = void 0 === n ? I.ACCESS_MODE_WRITE : n,
                        r = e.database,
                        o = void 0 === r ? "" : r,
                        g = e.bookmark,
                        A = e.connectionProvider;
                    (0, s.default)(this, t), this._mode = i, this._database = o ? (0, C.assertString)(o, "database") : "", this._bookmark = g || u.default.empty(), this._connectionProvider = A, this._referenceCount = 0, this._connectionPromise = Promise.resolve(null)
                }
                return (0, A.default)(t, [{ key: "mode", value: function() { return this._mode } }, { key: "database", value: function() { return this._database } }, { key: "initializeConnection", value: function() { return 0 !== this._referenceCount ? (this._referenceCount++, !1) : (this._connectionPromise = this._connectionProvider.acquireConnection({ accessMode: this._mode, database: this._database, bookmark: this._bookmark }), this._referenceCount++, !0) } }, { key: "getConnection", value: function() { return this._connectionPromise } }, { key: "releaseConnection", value: function() { return 0 === this._referenceCount ? this._connectionPromise : (this._referenceCount--, 0 === this._referenceCount ? this._releaseConnection() : this._connectionPromise) } }, { key: "close", value: function() { return 0 === this._referenceCount ? this._connectionPromise : (this._referenceCount = 0, this._releaseConnection()) } }, { key: "_releaseConnection", value: function() { return this._connectionPromise = this._connectionPromise.then((function(t) { return t ? t.resetAndFlush().catch(l).then((function() { return t._release() })) : Promise.resolve() })).catch(l), this._connectionPromise } }]), t
            }();

        function l(t) {}
        e.default = c;
        var h = new(function(t) {
            function e() { return (0, s.default)(this, e), (0, r.default)(this, (0, o.default)(e).apply(this, arguments)) }
            return (0, g.default)(e, t), (0, A.default)(e, [{ key: "initializeConnection", value: function() { return !0 } }, { key: "getConnection", value: function() { return Promise.reject((0, a.newError)("This connection holder does not serve connections")) } }, { key: "releaseConnection", value: function() { return Promise.resolve() } }, { key: "close", value: function() { return Promise.resolve() } }]), e
        }(c));
        e.EMPTY_CONNECTION_HOLDER = h
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = (n(45), i(n(126)), function() {
                function t(e) {
                    (0, r.default)(this, t), this._errorHandler = e
                }
                return (0, o.default)(t, [{ key: "isOpen", value: function() { throw new Error("not implemented") } }, { key: "protocol", value: function() { throw new Error("not implemented") } }, { key: "connect", value: function(t, e) { throw new Error("not implemented") } }, { key: "write", value: function(t, e, n) { throw new Error("not implemented") } }, { key: "resetAndFlush", value: function() { throw new Error("not implemented") } }, { key: "close", value: function() { throw new Error("not implemented") } }, { key: "handleAndTransformError", value: function(t, e) { return this._errorHandler ? this._errorHandler.handleAndTransformError(t, e) : t } }, { key: "id", get: function() { throw new Error("not implemented") } }, { key: "databaseId", get: function() { throw new Error("not implemented") }, set: function(t) { throw new Error("not implemented") } }, { key: "address", get: function() { throw new Error("not implemented") } }, { key: "version", get: function() { throw new Error("not implemented") }, set: function(t) { throw new Error("not implemented") } }, { key: "server", get: function() { throw new Error("not implemented") } }]), t
            }());
        e.default = g
    }, function(t, e, n) {
        "use strict";
        var i = n(37),
            r = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var o = r(n(5)),
            g = r(n(6)),
            s = n(224),
            A = r(n(63)),
            a = (n(225), r(n(125)), n(39)),
            C = i(n(226)),
            I = r(n(80)),
            u = n(45),
            c = r(n(103)),
            l = function() {
                function t(e, n, i) {
                    (0, o.default)(this, t), this._connection = e, this._packer = this._createPacker(n), this._unpacker = this._createUnpacker(i)
                }
                return (0, g.default)(t, [{ key: "packer", value: function() { return this._packer } }, { key: "unpacker", value: function() { return this._unpacker } }, { key: "transformMetadata", value: function(t) { return t } }, {
                    key: "initialize",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.userAgent,
                            n = t.authToken,
                            i = t.onError,
                            r = t.onComplete,
                            o = new u.LoginObserver({ connection: this._connection, afterError: i, afterComplete: r });
                        return this._connection.write(I.default.init(e, n), o, !0), o
                    }
                }, { key: "prepareToClose", value: function() {} }, {
                    key: "beginTransaction",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.bookmark,
                            n = t.txConfig,
                            i = t.database,
                            r = t.mode,
                            o = t.beforeError,
                            g = t.afterError,
                            s = t.beforeComplete,
                            A = t.afterComplete;
                        return this.run("BEGIN", e ? e.asBeginTransactionParameters() : {}, { bookmark: e, txConfig: n, database: i, mode: r, beforeError: o, afterError: g, beforeComplete: s, afterComplete: A, flush: !1 })
                    }
                }, {
                    key: "commitTransaction",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.beforeError,
                            n = t.afterError,
                            i = t.beforeComplete,
                            r = t.afterComplete;
                        return this.run("COMMIT", {}, { bookmark: A.default.empty(), txConfig: c.default.empty(), mode: a.ACCESS_MODE_WRITE, beforeError: e, afterError: n, beforeComplete: i, afterComplete: r })
                    }
                }, {
                    key: "rollbackTransaction",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.beforeError,
                            n = t.afterError,
                            i = t.beforeComplete,
                            r = t.afterComplete;
                        return this.run("ROLLBACK", {}, { bookmark: A.default.empty(), txConfig: c.default.empty(), mode: a.ACCESS_MODE_WRITE, beforeError: e, afterError: n, beforeComplete: i, afterComplete: r })
                    }
                }, {
                    key: "run",
                    value: function(t, e) {
                        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                            i = (n.bookmark, n.txConfig),
                            r = n.database,
                            o = (n.mode, n.beforeKeys),
                            g = n.afterKeys,
                            A = n.beforeError,
                            a = n.afterError,
                            C = n.beforeComplete,
                            c = n.afterComplete,
                            l = n.flush,
                            h = void 0 === l || l,
                            d = new u.ResultStreamObserver({ connection: this._connection, beforeKeys: o, afterKeys: g, beforeError: A, afterError: a, beforeComplete: C, afterComplete: c });
                        return (0, s.assertTxConfigIsEmpty)(i, this._connection, d), (0, s.assertDatabaseIsEmpty)(r, this._connection, d), this._connection.write(I.default.run(t, e), d, !1), this._connection.write(I.default.pullAll(), d, h), d
                    }
                }, {
                    key: "reset",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.onError,
                            n = t.onComplete,
                            i = new u.ResetObserver({ connection: this._connection, onError: e, onComplete: n });
                        return this._connection.write(I.default.reset(), i, !0), i
                    }
                }, { key: "_createPacker", value: function(t) { return new C.Packer(t) } }, { key: "_createUnpacker", value: function(t) { return new C.Unpacker(t) } }, { key: "version", get: function() { return a.BOLT_PROTOCOL_V1 } }]), t
            }();
        e.default = l
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(58)),
            o = i(n(64)),
            g = i(n(5)),
            s = i(n(6)),
            A = n(45),
            a = i(n(168)),
            C = i(n(234)),
            I = n(11),
            u = n(24),
            c = i(n(124)),
            l = i(n(81)),
            h = n(39),
            d = i(n(376)),
            f = i(n(63)),
            p = i(n(103));
        var v = function() {
            function t(e) {
                var n = e.mode,
                    i = e.connectionProvider,
                    r = e.bookmark,
                    o = e.database,
                    s = e.config,
                    A = e.reactive,
                    a = e.fetchSize;
                (0, g.default)(this, t), this._mode = n, this._database = o, this._reactive = A, this._fetchSize = a, this._readConnectionHolder = new c.default({ mode: h.ACCESS_MODE_READ, database: o, bookmark: r, connectionProvider: i }), this._writeConnectionHolder = new c.default({ mode: h.ACCESS_MODE_WRITE, database: o, bookmark: r, connectionProvider: i }), this._open = !0, this._hasTx = !1, this._lastBookmark = r, this._transactionExecutor = function(t) { var e = t && t.maxTransactionRetryTime ? t.maxTransactionRetryTime : null; return new d.default(e) }(s), this._onComplete = this._onCompleteCallback.bind(this)
            }
            var e;
            return (0, s.default)(t, [{
                key: "run",
                value: function(t, e, n) {
                    var i = this,
                        r = (0, u.validateQueryAndParameters)(t, e),
                        o = r.validatedQuery,
                        g = r.params,
                        s = n ? new p.default(n) : p.default.empty();
                    return this._run(o, g, (function(t) { return i._assertSessionIsOpen(), t.protocol().run(o, g, { bookmark: i._lastBookmark, txConfig: s, mode: i._mode, database: i._database, afterComplete: i._onComplete, reactive: i._reactive, fetchSize: i._fetchSize }) }))
                }
            }, { key: "_run", value: function(t, e, n) { var i, r = this._connectionHolderWithMode(this._mode); return i = this._open ? !this._hasTx && r.initializeConnection() ? r.getConnection().then((function(t) { return n(t) })).catch((function(t) { return Promise.resolve(new A.FailedObserver({ error: t })) })) : Promise.resolve(new A.FailedObserver({ error: (0, I.newError)("Queries cannot be run directly on a session with an open transaction; either run from within the transaction or use a different session.") })) : Promise.resolve(new A.FailedObserver({ error: (0, I.newError)("Cannot run query in a closed session.") })), new a.default(i, t, e, r) } }, {
                key: "beginTransaction",
                value: function(t) {
                    var e = t,
                        n = p.default.empty();
                    return e && (n = new p.default(e)), this._beginTransaction(this._mode, n)
                }
            }, {
                key: "_beginTransaction",
                value: function(t, e) {
                    if (!this._open) throw (0, I.newError)("Cannot begin a transaction on a closed session.");
                    if (this._hasTx) throw (0, I.newError)("You cannot begin a transaction on a session with an open transaction; either run from within the transaction or use a different session.");
                    var n = l.default._validateSessionMode(t),
                        i = this._connectionHolderWithMode(n);
                    i.initializeConnection(), this._hasTx = !0;
                    var r = new C.default({ connectionHolder: i, onClose: this._transactionClosed.bind(this), onBookmark: this._updateBookmark.bind(this), onConnection: this._assertSessionIsOpen.bind(this), reactive: this._reactive, fetchSize: this._fetchSize });
                    return r._begin(this._lastBookmark, e), r
                }
            }, { key: "_assertSessionIsOpen", value: function() { if (!this._open) throw (0, I.newError)("You cannot run more transactions on a closed session.") } }, { key: "_transactionClosed", value: function() { this._hasTx = !1 } }, { key: "lastBookmark", value: function() { return this._lastBookmark.values() } }, { key: "readTransaction", value: function(t, e) { var n = new p.default(e); return this._runTransaction(h.ACCESS_MODE_READ, n, t) } }, { key: "writeTransaction", value: function(t, e) { var n = new p.default(e); return this._runTransaction(h.ACCESS_MODE_WRITE, n, t) } }, { key: "_runTransaction", value: function(t, e, n) { var i = this; return this._transactionExecutor.execute((function() { return i._beginTransaction(t, e) }), n) } }, { key: "_updateBookmark", value: function(t) { t && !t.isEmpty() && (this._lastBookmark = t) } }, {
                key: "close",
                value: (e = (0, o.default)(r.default.mark((function t() {
                    return r.default.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                if (!this._open) { t.next = 7; break }
                                return this._open = !1, this._transactionExecutor.close(), t.next = 5, this._readConnectionHolder.close();
                            case 5:
                                return t.next = 7, this._writeConnectionHolder.close();
                            case 7:
                            case "end":
                                return t.stop()
                        }
                    }), t, this)
                }))), function() { return e.apply(this, arguments) })
            }, { key: "_connectionHolderWithMode", value: function(t) { if (t === h.ACCESS_MODE_READ) return this._readConnectionHolder; if (t === h.ACCESS_MODE_WRITE) return this._writeConnectionHolder; throw (0, I.newError)("Unknown access mode: " + t) } }, { key: "_onCompleteCallback", value: function(t) { this._updateBookmark(new f.default(t.bookmark)) } }]), t
        }();
        e.default = v
    }, function(t, e, n) {
        "use strict";
        n.d(e, "b", (function() { return A })), n.d(e, "a", (function() { return u }));
        var i = n(0),
            r = n(1),
            o = n(7),
            g = n(3),
            s = n(8);

        function A(t, e, n, i) { return function(r) { return r.lift(new a(t, e, n, i)) } }
        var a = function() {
                function t(t, e, n, i) { this.keySelector = t, this.elementSelector = e, this.durationSelector = n, this.subjectSelector = i }
                return t.prototype.call = function(t, e) { return e.subscribe(new C(t, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector)) }, t
            }(),
            C = function(t) {
                function e(e, n, i, r, o) { var g = t.call(this, e) || this; return g.keySelector = n, g.elementSelector = i, g.durationSelector = r, g.subjectSelector = o, g.groups = null, g.attemptedToUnsubscribe = !1, g.count = 0, g }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e;
                    try { e = this.keySelector(t) } catch (t) { return void this.error(t) }
                    this._group(t, e)
                }, e.prototype._group = function(t, e) {
                    var n = this.groups;
                    n || (n = this.groups = new Map);
                    var i, r = n.get(e);
                    if (this.elementSelector) try { i = this.elementSelector(t) } catch (t) { this.error(t) } else i = t;
                    if (!r) {
                        r = this.subjectSelector ? this.subjectSelector() : new s.a, n.set(e, r);
                        var o = new u(e, r, this);
                        if (this.destination.next(o), this.durationSelector) {
                            var g = void 0;
                            try { g = this.durationSelector(new u(e, r)) } catch (t) { return void this.error(t) }
                            this.add(g.subscribe(new I(e, r, this)))
                        }
                    }
                    r.closed || r.next(i)
                }, e.prototype._error = function(t) {
                    var e = this.groups;
                    e && (e.forEach((function(e, n) { e.error(t) })), e.clear()), this.destination.error(t)
                }, e.prototype._complete = function() {
                    var t = this.groups;
                    t && (t.forEach((function(t, e) { t.complete() })), t.clear()), this.destination.complete()
                }, e.prototype.removeGroup = function(t) { this.groups.delete(t) }, e.prototype.unsubscribe = function() { this.closed || (this.attemptedToUnsubscribe = !0, 0 === this.count && t.prototype.unsubscribe.call(this)) }, e
            }(r.a),
            I = function(t) {
                function e(e, n, i) { var r = t.call(this, n) || this; return r.key = e, r.group = n, r.parent = i, r }
                return i.a(e, t), e.prototype._next = function(t) { this.complete() }, e.prototype._unsubscribe = function() {
                    var t = this.parent,
                        e = this.key;
                    this.key = this.parent = null, t && t.removeGroup(e)
                }, e
            }(r.a),
            u = function(t) {
                function e(e, n, i) { var r = t.call(this) || this; return r.key = e, r.groupSubject = n, r.refCountSubscription = i, r }
                return i.a(e, t), e.prototype._subscribe = function(t) {
                    var e = new o.a,
                        n = this.refCountSubscription,
                        i = this.groupSubject;
                    return n && !n.closed && e.add(new c(n)), e.add(i.subscribe(t)), e
                }, e
            }(g.a),
            c = function(t) {
                function e(e) { var n = t.call(this) || this; return n.parent = e, e.count++, n }
                return i.a(e, t), e.prototype.unsubscribe = function() {
                    var e = this.parent;
                    e.closed || this.closed || (t.prototype.unsubscribe.call(this), e.count -= 1, 0 === e.count && e.attemptedToUnsubscribe && e.unsubscribe())
                }, e
            }(o.a)
    }, function(t, e, n) {
        "use strict";
        n.r(e), n.d(e, "Observable", (function() { return i.a })), n.d(e, "ConnectableObservable", (function() { return r.a })), n.d(e, "GroupedObservable", (function() { return o.a })), n.d(e, "observable", (function() { return g.a })), n.d(e, "Subject", (function() { return s.a })), n.d(e, "BehaviorSubject", (function() { return A.a })), n.d(e, "ReplaySubject", (function() { return a.a })), n.d(e, "AsyncSubject", (function() { return C.a })), n.d(e, "asap", (function() { return I.a })), n.d(e, "asapScheduler", (function() { return I.b })), n.d(e, "async", (function() { return u.a })), n.d(e, "asyncScheduler", (function() { return u.b })), n.d(e, "queue", (function() { return c.a })), n.d(e, "queueScheduler", (function() { return c.b })), n.d(e, "animationFrame", (function() { return v })), n.d(e, "animationFrameScheduler", (function() { return p })), n.d(e, "VirtualTimeScheduler", (function() { return y })), n.d(e, "VirtualAction", (function() { return b })), n.d(e, "Scheduler", (function() { return m.a })), n.d(e, "Subscription", (function() { return w.a })), n.d(e, "Subscriber", (function() { return _.a })), n.d(e, "Notification", (function() { return k.a })), n.d(e, "NotificationKind", (function() { return k.b })), n.d(e, "pipe", (function() { return x.a })), n.d(e, "noop", (function() { return O.a })), n.d(e, "identity", (function() { return E.a })), n.d(e, "isObservable", (function() { return T })), n.d(e, "ArgumentOutOfRangeError", (function() { return S.a })), n.d(e, "EmptyError", (function() { return D.a })), n.d(e, "ObjectUnsubscribedError", (function() { return N.a })), n.d(e, "UnsubscriptionError", (function() { return R.a })), n.d(e, "TimeoutError", (function() { return P.a })), n.d(e, "bindCallback", (function() { return L })), n.d(e, "bindNodeCallback", (function() { return V })), n.d(e, "combineLatest", (function() { return W.b })), n.d(e, "concat", (function() { return H.a })), n.d(e, "defer", (function() { return K.a })), n.d(e, "empty", (function() { return Q.b })), n.d(e, "forkJoin", (function() { return J })), n.d(e, "from", (function() { return q.a })), n.d(e, "fromEvent", (function() { return et })), n.d(e, "fromEventPattern", (function() { return nt })), n.d(e, "generate", (function() { return it })), n.d(e, "iif", (function() { return ot })), n.d(e, "interval", (function() { return st })), n.d(e, "merge", (function() { return at.a })), n.d(e, "never", (function() { return It })), n.d(e, "of", (function() { return ut.a })), n.d(e, "onErrorResumeNext", (function() { return ct })), n.d(e, "pairs", (function() { return lt })), n.d(e, "partition", (function() { return vt })), n.d(e, "race", (function() { return yt.a })), n.d(e, "range", (function() { return bt })), n.d(e, "throwError", (function() { return wt.a })), n.d(e, "timer", (function() { return _t.a })), n.d(e, "using", (function() { return kt })), n.d(e, "zip", (function() { return xt.b })), n.d(e, "scheduled", (function() { return Ot.a })), n.d(e, "EMPTY", (function() { return Q.a })), n.d(e, "NEVER", (function() { return Ct })), n.d(e, "config", (function() { return Et.a }));
        var i = n(3),
            r = n(130),
            o = n(128),
            g = n(40),
            s = n(8),
            A = n(131),
            a = n(83),
            C = n(54),
            I = n(67),
            u = n(9),
            c = n(104),
            l = n(0),
            h = n(55),
            d = function(t) {
                function e(e, n) { var i = t.call(this, e, n) || this; return i.scheduler = e, i.work = n, i }
                return l.a(e, t), e.prototype.requestAsyncId = function(e, n, i) { return void 0 === i && (i = 0), null !== i && i > 0 ? t.prototype.requestAsyncId.call(this, e, n, i) : (e.actions.push(this), e.scheduled || (e.scheduled = requestAnimationFrame((function() { return e.flush(null) })))) }, e.prototype.recycleAsyncId = function(e, n, i) {
                    if (void 0 === i && (i = 0), null !== i && i > 0 || null === i && this.delay > 0) return t.prototype.recycleAsyncId.call(this, e, n, i);
                    0 === e.actions.length && (cancelAnimationFrame(n), e.scheduled = void 0)
                }, e
            }(h.a),
            f = n(53),
            p = new(function(t) {
                function e() { return null !== t && t.apply(this, arguments) || this }
                return l.a(e, t), e.prototype.flush = function(t) {
                    this.active = !0, this.scheduled = void 0;
                    var e, n = this.actions,
                        i = -1,
                        r = n.length;
                    t = t || n.shift();
                    do { if (e = t.execute(t.state, t.delay)) break } while (++i < r && (t = n.shift()));
                    if (this.active = !1, e) { for (; ++i < r && (t = n.shift());) t.unsubscribe(); throw e }
                }, e
            }(f.a))(d),
            v = p,
            y = function(t) {
                function e(e, n) { void 0 === e && (e = b), void 0 === n && (n = Number.POSITIVE_INFINITY); var i = t.call(this, e, (function() { return i.frame })) || this; return i.maxFrames = n, i.frame = 0, i.index = -1, i }
                return l.a(e, t), e.prototype.flush = function() {
                    for (var t, e, n = this.actions, i = this.maxFrames;
                        (e = n[0]) && e.delay <= i && (n.shift(), this.frame = e.delay, !(t = e.execute(e.state, e.delay))););
                    if (t) { for (; e = n.shift();) e.unsubscribe(); throw t }
                }, e.frameTimeFactor = 10, e
            }(f.a),
            b = function(t) {
                function e(e, n, i) { void 0 === i && (i = e.index += 1); var r = t.call(this, e, n) || this; return r.scheduler = e, r.work = n, r.index = i, r.active = !0, r.index = e.index = i, r }
                return l.a(e, t), e.prototype.schedule = function(n, i) {
                    if (void 0 === i && (i = 0), !this.id) return t.prototype.schedule.call(this, n, i);
                    this.active = !1;
                    var r = new e(this.scheduler, this.work);
                    return this.add(r), r.schedule(n, i)
                }, e.prototype.requestAsyncId = function(t, n, i) { void 0 === i && (i = 0), this.delay = t.frame + i; var r = t.actions; return r.push(this), r.sort(e.sortActions), !0 }, e.prototype.recycleAsyncId = function(t, e, n) { void 0 === n && (n = 0) }, e.prototype._execute = function(e, n) { if (!0 === this.active) return t.prototype._execute.call(this, e, n) }, e.sortActions = function(t, e) { return t.delay === e.delay ? t.index === e.index ? 0 : t.index > e.index ? 1 : -1 : t.delay > e.delay ? 1 : -1 }, e
            }(h.a),
            m = n(105),
            w = n(7),
            _ = n(1),
            k = n(32),
            x = n(66),
            O = n(35),
            E = n(28);

        function T(t) { return !!t && (t instanceof i.a || "function" == typeof t.lift && "function" == typeof t.subscribe) }
        var S = n(46),
            D = n(50),
            N = n(41),
            R = n(69),
            P = n(133),
            M = n(13),
            j = n(90),
            F = n(10),
            z = n(14);

        function L(t, e, n) {
            if (e) {
                if (!Object(z.a)(e)) return function() { for (var i = [], r = 0; r < arguments.length; r++) i[r] = arguments[r]; return L(t, n).apply(void 0, i).pipe(Object(M.a)((function(t) { return Object(F.a)(t) ? e.apply(void 0, t) : e(t) }))) };
                n = e
            }
            return function() {
                for (var e = [], r = 0; r < arguments.length; r++) e[r] = arguments[r];
                var o, g = this,
                    s = { context: g, subject: o, callbackFunc: t, scheduler: n };
                return new i.a((function(i) {
                    if (n) { var r = { args: e, subscriber: i, params: s }; return n.schedule(B, 0, r) }
                    if (!o) {
                        o = new C.a;
                        try {
                            t.apply(g, e.concat([function() {
                                for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
                                o.next(t.length <= 1 ? t[0] : t), o.complete()
                            }]))
                        } catch (t) { Object(j.a)(o) ? o.error(t) : console.warn(t) }
                    }
                    return o.subscribe(i)
                }))
            }
        }

        function B(t) {
            var e = this,
                n = t.args,
                i = t.subscriber,
                r = t.params,
                o = r.callbackFunc,
                g = r.context,
                s = r.scheduler,
                A = r.subject;
            if (!A) {
                A = r.subject = new C.a;
                try {
                    o.apply(g, n.concat([function() {
                        for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                        var i = t.length <= 1 ? t[0] : t;
                        e.add(s.schedule(Z, 0, { value: i, subject: A }))
                    }]))
                } catch (t) { A.error(t) }
            }
            this.add(A.subscribe(i))
        }

        function Z(t) {
            var e = t.value,
                n = t.subject;
            n.next(e), n.complete()
        }

        function V(t, e, n) {
            if (e) {
                if (!Object(z.a)(e)) return function() { for (var i = [], r = 0; r < arguments.length; r++) i[r] = arguments[r]; return V(t, n).apply(void 0, i).pipe(Object(M.a)((function(t) { return Object(F.a)(t) ? e.apply(void 0, t) : e(t) }))) };
                n = e
            }
            return function() {
                for (var e = [], r = 0; r < arguments.length; r++) e[r] = arguments[r];
                var o = { subject: void 0, args: e, callbackFunc: t, scheduler: n, context: this };
                return new i.a((function(i) {
                    var r = o.context,
                        g = o.subject;
                    if (n) return n.schedule(Y, 0, { params: o, subscriber: i, context: r });
                    if (!g) {
                        g = o.subject = new C.a;
                        try {
                            t.apply(r, e.concat([function() {
                                for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
                                var n = t.shift();
                                n ? g.error(n) : (g.next(t.length <= 1 ? t[0] : t), g.complete())
                            }]))
                        } catch (t) { Object(j.a)(g) ? g.error(t) : console.warn(t) }
                    }
                    return g.subscribe(i)
                }))
            }
        }

        function Y(t) {
            var e = this,
                n = t.params,
                i = t.subscriber,
                r = t.context,
                o = n.callbackFunc,
                g = n.args,
                s = n.scheduler,
                A = n.subject;
            if (!A) {
                A = n.subject = new C.a;
                try {
                    o.apply(r, g.concat([function() {
                        for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
                        var i = t.shift();
                        if (i) e.add(s.schedule(U, 0, { err: i, subject: A }));
                        else {
                            var r = t.length <= 1 ? t[0] : t;
                            e.add(s.schedule(G, 0, { value: r, subject: A }))
                        }
                    }]))
                } catch (t) { this.add(s.schedule(U, 0, { err: t, subject: A })) }
            }
            this.add(A.subscribe(i))
        }

        function G(t) {
            var e = t.value,
                n = t.subject;
            n.next(e), n.complete()
        }

        function U(t) {
            var e = t.err;
            t.subject.error(e)
        }
        var W = n(85),
            H = n(59),
            K = n(87),
            Q = n(18),
            X = n(89),
            q = n(19);

        function J() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; if (1 === t.length) { var n = t[0]; if (Object(F.a)(n)) return $(n, null); if (Object(X.a)(n) && Object.getPrototypeOf(n) === Object.prototype) { var i = Object.keys(n); return $(i.map((function(t) { return n[t] })), i) } } if ("function" == typeof t[t.length - 1]) { var r = t.pop(); return $(t = 1 === t.length && Object(F.a)(t[0]) ? t[0] : t, null).pipe(Object(M.a)((function(t) { return r.apply(void 0, t) }))) } return $(t, null) }

        function $(t, e) {
            return new i.a((function(n) {
                var i = t.length;
                if (0 !== i)
                    for (var r = new Array(i), o = 0, g = 0, s = function(s) {
                            var A = Object(q.a)(t[s]),
                                a = !1;
                            n.add(A.subscribe({ next: function(t) { a || (a = !0, g++), r[s] = t }, error: function(t) { return n.error(t) }, complete: function() {++o !== i && a || (g === i && n.next(e ? e.reduce((function(t, e, n) { return t[e] = r[n], t }), {}) : r), n.complete()) } }))
                        }, A = 0; A < i; A++) s(A);
                else n.complete()
            }))
        }
        var tt = n(47);

        function et(t, e, n, r) {
            return Object(tt.a)(n) && (r = n, n = void 0), r ? et(t, e, n).pipe(Object(M.a)((function(t) { return Object(F.a)(t) ? r.apply(void 0, t) : r(t) }))) : new i.a((function(i) {
                ! function t(e, n, i, r, o) {
                    var g;
                    if (function(t) { return t && "function" == typeof t.addEventListener && "function" == typeof t.removeEventListener }(e)) {
                        var s = e;
                        e.addEventListener(n, i, o), g = function() { return s.removeEventListener(n, i, o) }
                    } else if (function(t) { return t && "function" == typeof t.on && "function" == typeof t.off }(e)) {
                        var A = e;
                        e.on(n, i), g = function() { return A.off(n, i) }
                    } else if (function(t) { return t && "function" == typeof t.addListener && "function" == typeof t.removeListener }(e)) {
                        var a = e;
                        e.addListener(n, i), g = function() { return a.removeListener(n, i) }
                    } else { if (!e || !e.length) throw new TypeError("Invalid event target"); for (var C = 0, I = e.length; C < I; C++) t(e[C], n, i, r, o) }
                    r.add(g)
                }(t, e, (function(t) { arguments.length > 1 ? i.next(Array.prototype.slice.call(arguments)) : i.next(t) }), i, n)
            }))
        }

        function nt(t, e, n) { return n ? nt(t, e).pipe(Object(M.a)((function(t) { return Object(F.a)(t) ? n.apply(void 0, t) : n(t) }))) : new i.a((function(n) { var i, r = function() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return n.next(1 === t.length ? t[0] : t) }; try { i = t(r) } catch (t) { return void n.error(t) } if (Object(tt.a)(e)) return function() { return e(r, i) } })) }

        function it(t, e, n, r, o) {
            var g, s;
            if (1 == arguments.length) {
                var A = t;
                s = A.initialState, e = A.condition, n = A.iterate, g = A.resultSelector || E.a, o = A.scheduler
            } else void 0 === r || Object(z.a)(r) ? (s = t, g = E.a, o = r) : (s = t, g = r);
            return new i.a((function(t) { var i = s; if (o) return o.schedule(rt, 0, { subscriber: t, iterate: n, condition: e, resultSelector: g, state: i }); for (;;) { if (e) { var r = void 0; try { r = e(i) } catch (e) { return void t.error(e) } if (!r) { t.complete(); break } } var A = void 0; try { A = g(i) } catch (e) { return void t.error(e) } if (t.next(A), t.closed) break; try { i = n(i) } catch (e) { return void t.error(e) } } }))
        }

        function rt(t) {
            var e = t.subscriber,
                n = t.condition;
            if (!e.closed) { if (t.needIterate) try { t.state = t.iterate(t.state) } catch (t) { return void e.error(t) } else t.needIterate = !0; if (n) { var i = void 0; try { i = n(t.state) } catch (t) { return void e.error(t) } if (!i) return void e.complete(); if (e.closed) return } var r; try { r = t.resultSelector(t.state) } catch (t) { return void e.error(t) } if (!e.closed && (e.next(r), !e.closed)) return this.schedule(t) }
        }

        function ot(t, e, n) { return void 0 === e && (e = Q.a), void 0 === n && (n = Q.a), Object(K.a)((function() { return t() ? e : n })) }
        var gt = n(56);

        function st(t, e) { return void 0 === t && (t = 0), void 0 === e && (e = u.a), (!Object(gt.a)(t) || t < 0) && (t = 0), e && "function" == typeof e.schedule || (e = u.a), new i.a((function(n) { return n.add(e.schedule(At, t, { subscriber: n, counter: 0, period: t })), n })) }

        function At(t) {
            var e = t.subscriber,
                n = t.counter,
                i = t.period;
            e.next(n), this.schedule({ subscriber: e, counter: n + 1, period: i }, i)
        }
        var at = n(135),
            Ct = new i.a(O.a);

        function It() { return Ct }
        var ut = n(65);

        function ct() {
            for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
            if (0 === t.length) return Q.a;
            var n = t[0],
                r = t.slice(1);
            return 1 === t.length && Object(F.a)(n) ? ct.apply(void 0, n) : new i.a((function(t) { var e = function() { return t.add(ct.apply(void 0, r).subscribe(t)) }; return Object(q.a)(n).subscribe({ next: function(e) { t.next(e) }, error: e, complete: e }) }))
        }

        function lt(t, e) {
            return e ? new i.a((function(n) {
                var i = Object.keys(t),
                    r = new w.a;
                return r.add(e.schedule(ht, 0, { keys: i, index: 0, subscriber: n, subscription: r, obj: t })), r
            })) : new i.a((function(e) {
                for (var n = Object.keys(t), i = 0; i < n.length && !e.closed; i++) {
                    var r = n[i];
                    t.hasOwnProperty(r) && e.next([r, t[r]])
                }
                e.complete()
            }))
        }

        function ht(t) {
            var e = t.keys,
                n = t.index,
                i = t.subscriber,
                r = t.subscription,
                o = t.obj;
            if (!i.closed)
                if (n < e.length) {
                    var g = e[n];
                    i.next([g, o[g]]), r.add(this.schedule({ keys: e, index: n + 1, subscriber: i, subscription: r, obj: o }))
                } else i.complete()
        }
        var dt = n(148),
            ft = n(60),
            pt = n(31);

        function vt(t, e, n) { return [Object(pt.a)(e, n)(new i.a(Object(ft.a)(t))), Object(pt.a)(Object(dt.a)(e, n))(new i.a(Object(ft.a)(t)))] }
        var yt = n(136);

        function bt(t, e, n) {
            return void 0 === t && (t = 0), new i.a((function(i) {
                void 0 === e && (e = t, t = 0);
                var r = 0,
                    o = t;
                if (n) return n.schedule(mt, 0, { index: r, count: e, start: t, subscriber: i });
                for (;;) { if (r++ >= e) { i.complete(); break } if (i.next(o++), i.closed) break }
            }))
        }

        function mt(t) {
            var e = t.start,
                n = t.index,
                i = t.count,
                r = t.subscriber;
            n >= i ? r.complete() : (r.next(e), r.closed || (t.index = n + 1, t.start = e + 1, this.schedule(t)))
        }
        var wt = n(84),
            _t = n(137);

        function kt(t, e) { return new i.a((function(n) { var i, r; try { i = t() } catch (t) { return void n.error(t) } try { r = e(i) } catch (t) { return void n.error(t) } var o = (r ? Object(q.a)(r) : Q.a).subscribe(n); return function() { o.unsubscribe(), i && i.unsubscribe() } })) }
        var xt = n(88),
            Ot = n(138),
            Et = n(26)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return a })), n.d(e, "b", (function() { return C }));
        var i = n(0),
            r = n(8),
            o = n(3),
            g = n(1),
            s = n(7),
            A = n(82),
            a = function(t) {
                function e(e, n) { var i = t.call(this) || this; return i.source = e, i.subjectFactory = n, i._refCount = 0, i._isComplete = !1, i }
                return i.a(e, t), e.prototype._subscribe = function(t) { return this.getSubject().subscribe(t) }, e.prototype.getSubject = function() { var t = this._subject; return t && !t.isStopped || (this._subject = this.subjectFactory()), this._subject }, e.prototype.connect = function() { var t = this._connection; return t || (this._isComplete = !1, (t = this._connection = new s.a).add(this.source.subscribe(new I(this.getSubject(), this))), t.closed && (this._connection = null, t = s.a.EMPTY)), t }, e.prototype.refCount = function() { return Object(A.a)()(this) }, e
            }(o.a),
            C = function() { var t = a.prototype; return { operator: { value: null }, _refCount: { value: 0, writable: !0 }, _subject: { value: null, writable: !0 }, _connection: { value: null, writable: !0 }, _subscribe: { value: t._subscribe }, _isComplete: { value: t._isComplete, writable: !0 }, getSubject: { value: t.getSubject }, connect: { value: t.connect }, refCount: { value: t.refCount } } }(),
            I = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.connectable = n, i }
                return i.a(e, t), e.prototype._error = function(e) { this._unsubscribe(), t.prototype._error.call(this, e) }, e.prototype._complete = function() { this.connectable._isComplete = !0, this._unsubscribe(), t.prototype._complete.call(this) }, e.prototype._unsubscribe = function() {
                    var t = this.connectable;
                    if (t) {
                        this.connectable = null;
                        var e = t._connection;
                        t._refCount = 0, t._subject = null, t._connection = null, e && e.unsubscribe()
                    }
                }, e
            }(r.b);
        g.a
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return g }));
        var i = n(0),
            r = n(8),
            o = n(41),
            g = function(t) {
                function e(e) { var n = t.call(this) || this; return n._value = e, n }
                return i.a(e, t), Object.defineProperty(e.prototype, "value", { get: function() { return this.getValue() }, enumerable: !0, configurable: !0 }), e.prototype._subscribe = function(e) { var n = t.prototype._subscribe.call(this, e); return n && !n.closed && e.next(this._value), n }, e.prototype.getValue = function() { if (this.hasError) throw this.thrownError; if (this.closed) throw new o.a; return this._value }, e.prototype.next = function(e) { t.prototype.next.call(this, this._value = e) }, e
            }(r.a)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "b", (function() { return g })), n.d(e, "a", (function() { return A }));
        var i = n(0),
            r = n(1),
            o = n(32);

        function g(t, e) {
            return void 0 === e && (e = 0),
                function(n) { return n.lift(new s(t, e)) }
        }
        var s = function() {
                function t(t, e) { void 0 === e && (e = 0), this.scheduler = t, this.delay = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new A(t, this.scheduler, this.delay)) }, t
            }(),
            A = function(t) {
                function e(e, n, i) { void 0 === i && (i = 0); var r = t.call(this, e) || this; return r.scheduler = n, r.delay = i, r }
                return i.a(e, t), e.dispatch = function(t) {
                    var e = t.notification,
                        n = t.destination;
                    e.observe(n), this.unsubscribe()
                }, e.prototype.scheduleMessage = function(t) { this.destination.add(this.scheduler.schedule(e.dispatch, this.delay, new a(t, this.destination))) }, e.prototype._next = function(t) { this.scheduleMessage(o.a.createNext(t)) }, e.prototype._error = function(t) { this.scheduleMessage(o.a.createError(t)), this.unsubscribe() }, e.prototype._complete = function() { this.scheduleMessage(o.a.createComplete()), this.unsubscribe() }, e
            }(r.a),
            a = function() { return function(t, e) { this.notification = t, this.destination = e } }()
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return i }));
        var i = function() {
            function t() { return Error.call(this), this.message = "Timeout has occurred", this.name = "TimeoutError", this }
            return t.prototype = Object.create(Error.prototype), t
        }()
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return r }));
        var i = n(86);

        function r() { return Object(i.a)(1) }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return s }));
        var i = n(3),
            r = n(14),
            o = n(86),
            g = n(52);

        function s() {
            for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
            var n = Number.POSITIVE_INFINITY,
                s = null,
                A = t[t.length - 1];
            return Object(r.a)(A) ? (s = t.pop(), t.length > 1 && "number" == typeof t[t.length - 1] && (n = t.pop())) : "number" == typeof A && (n = t.pop()), null === s && 1 === t.length && t[0] instanceof i.a ? t[0] : Object(o.a)(n)(Object(g.a)(t, s))
        }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return A }));
        var i = n(0),
            r = n(10),
            o = n(52),
            g = n(30),
            s = n(25);

        function A() {
            for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
            if (1 === t.length) {
                if (!Object(r.a)(t[0])) return t[0];
                t = t[0]
            }
            return Object(o.a)(t, void 0).lift(new a)
        }
        var a = function() {
                function t() {}
                return t.prototype.call = function(t, e) { return e.subscribe(new C(t)) }, t
            }(),
            C = function(t) {
                function e(e) { var n = t.call(this, e) || this; return n.hasFirst = !1, n.observables = [], n.subscriptions = [], n }
                return i.a(e, t), e.prototype._next = function(t) { this.observables.push(t) }, e.prototype._complete = function() {
                    var t = this.observables,
                        e = t.length;
                    if (0 === e) this.destination.complete();
                    else {
                        for (var n = 0; n < e && !this.hasFirst; n++) {
                            var i = t[n],
                                r = Object(s.a)(this, i, void 0, n);
                            this.subscriptions && this.subscriptions.push(r), this.add(r)
                        }
                        this.observables = null
                    }
                }, e.prototype.notifyNext = function(t, e, n) {
                    if (!this.hasFirst) {
                        this.hasFirst = !0;
                        for (var i = 0; i < this.subscriptions.length; i++)
                            if (i !== n) {
                                var r = this.subscriptions[i];
                                r.unsubscribe(), this.remove(r)
                            }
                        this.subscriptions = null
                    }
                    this.destination.next(e)
                }, e
            }(g.a)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return s }));
        var i = n(3),
            r = n(9),
            o = n(56),
            g = n(14);

        function s(t, e, n) { void 0 === t && (t = 0); var s = -1; return Object(o.a)(e) ? s = Number(e) < 1 ? 1 : Number(e) : Object(g.a)(e) && (n = e), Object(g.a)(n) || (n = r.a), new i.a((function(e) { var i = Object(o.a)(t) ? t : +t - n.now(); return n.schedule(A, i, { index: 0, period: s, subscriber: e }) })) }

        function A(t) {
            var e = t.index,
                n = t.period,
                i = t.subscriber;
            if (i.next(e), !i.closed) {
                if (-1 === n) return i.complete();
                t.index = e + 1, this.schedule(t, n)
            }
        }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return C }));
        var i = n(3),
            r = n(7),
            o = n(40);
        var g = n(91),
            s = n(34);
        var A = n(147),
            a = n(146);

        function C(t, e) {
            if (null != t) {
                if (function(t) { return t && "function" == typeof t[o.a] }(t)) return function(t, e) {
                    return new i.a((function(n) {
                        var i = new r.a;
                        return i.add(e.schedule((function() {
                            var r = t[o.a]();
                            i.add(r.subscribe({ next: function(t) { i.add(e.schedule((function() { return n.next(t) }))) }, error: function(t) { i.add(e.schedule((function() { return n.error(t) }))) }, complete: function() { i.add(e.schedule((function() { return n.complete() }))) } }))
                        }))), i
                    }))
                }(t, e);
                if (Object(A.a)(t)) return function(t, e) { return new i.a((function(n) { var i = new r.a; return i.add(e.schedule((function() { return t.then((function(t) { i.add(e.schedule((function() { n.next(t), i.add(e.schedule((function() { return n.complete() }))) }))) }), (function(t) { i.add(e.schedule((function() { return n.error(t) }))) })) }))), i })) }(t, e);
                if (Object(a.a)(t)) return Object(g.a)(t, e);
                if (function(t) { return t && "function" == typeof t[s.a] }(t) || "string" == typeof t) return function(t, e) {
                    if (!t) throw new Error("Iterable cannot be null");
                    return new i.a((function(n) {
                        var i, o = new r.a;
                        return o.add((function() { i && "function" == typeof i.return && i.return() })), o.add(e.schedule((function() {
                            i = t[s.a](), o.add(e.schedule((function() {
                                if (!n.closed) {
                                    var t, e;
                                    try {
                                        var r = i.next();
                                        t = r.value, e = r.done
                                    } catch (t) { return void n.error(t) }
                                    e ? n.complete() : (n.next(t), this.schedule())
                                }
                            })))
                        }))), o
                    }))
                }(t, e)
            }
            throw new TypeError((null !== t && typeof t || t) + " is not observable")
        }
    }, function(t, e, n) { t.exports = n(248) }, function(t, e, n) { t.exports = n(261) }, function(t, e, n) { t.exports = n(262) }, function(t, e, n) { t.exports = n(266) }, function(t, e) { t.exports = function(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") } }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return r }));
        var i = n(0),
            r = function(t) {
                function e(e, n) { var i = t.call(this) || this; return i.subject = e, i.subscriber = n, i.closed = !1, i }
                return i.a(e, t), e.prototype.unsubscribe = function() {
                    if (!this.closed) {
                        this.closed = !0;
                        var t = this.subject,
                            e = t.observers;
                        if (this.subject = null, e && 0 !== e.length && !t.isStopped && !t.closed) { var n = e.indexOf(this.subscriber); - 1 !== n && e.splice(n, 1) }
                    }
                }, e
            }(n(7).a)
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return i }));
        var i = function(t) {
            return function(e) {
                for (var n = 0, i = t.length; n < i && !e.closed; n++) e.next(t[n]);
                e.complete()
            }
        }
    }, function(t, e, n) {
        "use strict";
        n.d(e, "a", (function() { return i }));
        var i = function(t) { return t && "number" == typeof t.length && "function" != typeof t }
    }, function(t, e, n) {
        "use strict";

        function i(t) { return !!t && "function" != typeof t.subscribe && "function" == typeof t.then }
        n.d(e, "a", (function() { return i }))
    }, function(t, e, n) {
        "use strict";

        function i(t, e) {
            function n() { return !n.pred.apply(n.thisArg, arguments) }
            return n.pred = t, n.thisArg = e, n
        }
        n.d(e, "a", (function() { return i }))
    }, function(t, e, n) { t.exports = n(338) }, function(t, e, n) {
        var i = n(344);

        function r(t, e, n, r, o, g, s) {
            try {
                var A = t[g](s),
                    a = A.value
            } catch (t) { return void n(t) }
            A.done ? e(a) : i.resolve(a).then(r, o)
        }
        t.exports = function(t) {
            return function() {
                var e = this,
                    n = arguments;
                return new i((function(i, o) {
                    var g = t.apply(e, n);

                    function s(t) { r(g, i, o, s, A, "next", t) }

                    function A(t) { r(g, i, o, s, A, "throw", t) }
                    s(void 0)
                }))
            }
        }
    }, function(t, e) { t.exports = function(t) { if (null == t) throw TypeError("Can't call method on " + t); return t } }, function(t, e) {
        var n;
        n = function() { return this }();
        try { n = n || new Function("return this")() } catch (t) { "object" == typeof window && (n = window) }
        t.exports = n
    }, function(t, e, n) {
        var i = n(21),
            r = n(42),
            o = i.document,
            g = r(o) && r(o.createElement);
        t.exports = function(t) { return g ? o.createElement(t) : {} }
    }, function(t, e, n) {
        var i = n(74),
            r = n(187);
        (t.exports = function(t, e) { return r[t] || (r[t] = void 0 !== e ? e : {}) })("versions", []).push({ version: "3.6.4", mode: i ? "pure" : "global", copyright: "© 2020 Denis Pushkarev (zloirock.ru)" })
    }, function(t, e) {
        var n = 0,
            i = Math.random();
        t.exports = function(t) { return "Symbol(" + String(void 0 === t ? "" : t) + ")_" + (++n + i).toString(36) }
    }, function(t, e, n) {
        "use strict";
        var i = {}.propertyIsEnumerable,
            r = Object.getOwnPropertyDescriptor,
            o = r && !i.call({ 1: 2 }, 1);
        e.f = o ? function(t) { var e = r(this, t); return !!e && e.enumerable } : i
    }, function(t, e, n) {
        var i = n(44),
            r = n(76),
            o = n(111),
            g = n(254),
            s = o("IE_PROTO"),
            A = Object.prototype;
        t.exports = g ? Object.getPrototypeOf : function(t) { return t = r(t), i(t, s) ? t[s] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? A : null }
    }, function(t, e, n) {
        var i = n(27);
        t.exports = !!Object.getOwnPropertySymbols && !i((function() { return !String(Symbol()) }))
    }, function(t, e, n) {
        var i, r = n(43),
            o = n(193),
            g = n(161),
            s = n(112),
            A = n(196),
            a = n(153),
            C = n(111),
            I = C("IE_PROTO"),
            u = function() {},
            c = function(t) { return "<script>" + t + "<\/script>" },
            l = function() {
                try { i = document.domain && new ActiveXObject("htmlfile") } catch (t) {}
                var t, e;
                l = i ? function(t) { t.write(c("")), t.close(); var e = t.parentWindow.Object; return t = null, e }(i) : ((e = a("iframe")).style.display = "none", A.appendChild(e), e.src = String("javascript:"), (t = e.contentWindow.document).open(), t.write(c("document.F=Object")), t.close(), t.F);
                for (var n = g.length; n--;) delete l.prototype[g[n]];
                return l()
            };
        s[I] = !0, t.exports = Object.create || function(t, e) { var n; return null !== t ? (u.prototype = r(t), n = new u, u.prototype = null, n[I] = t) : n = l(), void 0 === e ? n : o(n, e) }
    }, function(t, e) {
        var n = Math.ceil,
            i = Math.floor;
        t.exports = function(t) { return isNaN(t = +t) ? 0 : (t > 0 ? i : n)(t) }
    }, function(t, e) { t.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"] }, function(t, e, n) {
        var i = {};
        i[n(22)("toStringTag")] = "z", t.exports = "[object z]" === String(i)
    }, function(t, e, n) {
        var i, r, o = n(21),
            g = n(164),
            s = o.process,
            A = s && s.versions,
            a = A && A.v8;
        a ? r = (i = a.split("."))[0] + i[1] : g && (!(i = g.match(/Edge\/(\d+)/)) || i[1] >= 74) && (i = g.match(/Chrome\/(\d+)/)) && (r = i[1]), t.exports = r && +r
    }, function(t, e, n) {
        var i = n(62);
        t.exports = i("navigator", "userAgent") || ""
    }, function(t, e, n) {
        var i = n(194),
            r = n(161).concat("length", "prototype");
        e.f = Object.getOwnPropertyNames || function(t) { return i(t, r) }
    }, function(t, e, n) {
        var i = n(22);
        e.f = i
    }, function(t, e) {
        function n(e, i) { return t.exports = n = Object.setPrototypeOf || function(t, e) { return t.__proto__ = e, t }, n(e, i) }
        t.exports = n
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(169)),
            s = n(124),
            A = (n(45), function(t) { console.log("Uncaught error when processing result: " + t) }),
            a = function(t) {};
        var C = function() {
            function t(e, n, i, o) {
                (0, r.default)(this, t), this._stack = function() { var t = new Error(""); if (t.stack) return t.stack.replace(/^Error(\n\r)*/, ""); return null }(), this._streamObserverPromise = e, this._p = null, this._query = n, this._parameters = i || {}, this._connectionHolder = o || s.EMPTY_CONNECTION_HOLDER
            }
            return (0, o.default)(t, [{ key: "keys", value: function() { var t = this; return new Promise((function(e, n) { t._streamObserverPromise.then((function(t) { return t.subscribe({ onKeys: function(t) { return e(t) }, onError: function(t) { return n(t) } }) })) })) } }, { key: "summary", value: function() { var t = this; return new Promise((function(e, n) { t._streamObserverPromise.then((function(t) { t.cancel(), t.subscribe({ onCompleted: function(t) { return e(t) }, onError: function(t) { return n(t) } }) })) })) } }, {
                key: "_getOrCreatePromise",
                value: function() {
                    var t = this;
                    return this._p || (this._p = new Promise((function(e, n) {
                        var i = [],
                            r = { onNext: function(t) { i.push(t) }, onCompleted: function(t) { e({ records: i, summary: t }) }, onError: function(t) { n(t) } };
                        t.subscribe(r)
                    }))), this._p
                }
            }, { key: "then", value: function(t, e) { return this._getOrCreatePromise().then(t, e) } }, { key: "catch", value: function(t) { return this._getOrCreatePromise().catch(t) } }, {
                key: "subscribe",
                value: function(t) {
                    var e = this,
                        n = t.onCompleted || a;
                    t.onCompleted = function(i) {
                        var r = e._connectionHolder,
                            o = e._query,
                            s = e._parameters;

                        function A(e) { r.releaseConnection().then((function() { n.call(t, new g.default(o, s, i, e)) })) }
                        r.getConnection().then((function(t) { A(t ? t.protocol().version : void 0) }), (function(t) { A() }))
                    };
                    var i = t.onError || A;
                    t.onError = function(n) { e._connectionHolder.releaseConnection().then((function() {! function(t, e) { e && (t.stack = t.toString() + "\n" + e) }(n, e._stack), i.call(t, n) })) }, this._streamObserverPromise.then((function(e) { return e.subscribe(t) }))
                }
            }, { key: "_cancel", value: function() { this._streamObserverPromise.then((function(t) { return t.cancel() })) } }]), t
        }();
        e.default = C
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = e.queryType = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(38),
            s = function() {
                function t(e, n, i, o) {
                    (0, r.default)(this, t), this.query = { text: e, parameters: n }, this.queryType = i.type, this.counters = new C(i.stats || {}), this.updateStatistics = this.counters, this.plan = !(!i.plan && !i.profile) && new A(i.plan || i.profile), this.profile = !!i.profile && new a(i.profile), this.notifications = this._buildNotifications(i.notifications), this.server = new u(i.server, o), this.resultConsumedAfter = i.result_consumed_after, this.resultAvailableAfter = i.result_available_after, this.database = { name: i.db || null }
                }
                return (0, o.default)(t, [{ key: "_buildNotifications", value: function(t) { return t ? t.map((function(t) { return new I(t) })) : [] } }, { key: "hasPlan", value: function() { return this.plan instanceof A } }, { key: "hasProfile", value: function() { return this.profile instanceof a } }]), t
            }(),
            A = function t(e) {
                (0, r.default)(this, t), this.operatorType = e.operatorType, this.identifiers = e.identifiers, this.arguments = e.args, this.children = e.children ? e.children.map((function(e) { return new t(e) })) : []
            },
            a = function() {
                function t(e) {
                    (0, r.default)(this, t), this.operatorType = e.operatorType, this.identifiers = e.identifiers, this.arguments = e.args, this.dbHits = l("dbHits", e), this.rows = l("rows", e), this.pageCacheMisses = l("pageCacheMisses", e), this.pageCacheHits = l("pageCacheHits", e), this.pageCacheHitRatio = l("pageCacheHitRatio", e), this.time = l("time", e), this.children = e.children ? e.children.map((function(e) { return new t(e) })) : []
                }
                return (0, o.default)(t, [{ key: "hasPageCacheStats", value: function() { return this.pageCacheMisses > 0 || this.pageCacheHits > 0 || this.pageCacheHitRatio > 0 } }]), t
            }(),
            C = function() {
                function t(e) {
                    var n = this;
                    (0, r.default)(this, t), this._stats = { nodesCreated: 0, nodesDeleted: 0, relationshipsCreated: 0, relationshipsDeleted: 0, propertiesSet: 0, labelsAdded: 0, labelsRemoved: 0, indexesAdded: 0, indexesRemoved: 0, constraintsAdded: 0, constraintsRemoved: 0 }, this._systemUpdates = 0, Object.keys(e).forEach((function(t) {
                        var i = t.replace(/(-\w)/g, (function(t) { return t[1].toUpperCase() }));
                        i in n._stats ? n._stats[i] = c(e[t]) : "systemUpdates" === i && (n._systemUpdates = c(e[t]))
                    })), this._stats = Object.freeze(this._stats)
                }
                return (0, o.default)(t, [{ key: "containsUpdates", value: function() { var t = this; return Object.keys(this._stats).reduce((function(e, n) { return e + t._stats[n] }), 0) > 0 } }, { key: "updates", value: function() { return this._stats } }, { key: "containsSystemUpdates", value: function() { return this._systemUpdates > 0 } }, { key: "systemUpdates", value: function() { return this._systemUpdates } }]), t
            }(),
            I = function() {
                function t(e) {
                    (0, r.default)(this, t), this.code = e.code, this.title = e.title, this.description = e.description, this.severity = e.severity, this.position = t._constructPosition(e.position)
                }
                return (0, o.default)(t, null, [{ key: "_constructPosition", value: function(t) { return t ? { offset: c(t.offset), line: c(t.line), column: c(t.column) } : {} } }]), t
            }(),
            u = function t(e, n) {
                (0, r.default)(this, t), e && (this.address = e.address, this.version = e.version), this.protocolVersion = n
            };

        function c(t) { return (0, g.isInt)(t) ? t.toInt() : t }

        function l(t, e) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0; if (t in e) { var i = e[t]; return (0, g.isInt)(i) ? i.toInt() : i } return n }
        e.queryType = { READ_ONLY: "r", READ_WRITE: "rw", WRITE_ONLY: "w", SCHEMA_WRITE: "s" };
        var h = s;
        e.default = h
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(58)),
            o = i(n(221)),
            g = i(n(5)),
            s = i(n(6)),
            A = n(11);

        function a(t) { var e = {}; return t.forEach((function(t, n) { e[t] = n })), e }
        var C = function() {
            function t(e, n) {
                var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null;
                (0, g.default)(this, t), this.keys = e, this.length = e.length, this._fields = n, this._fieldLookup = i || a(e)
            }
            return (0, s.default)(t, [{
                key: "forEach",
                value: function(t) {
                    var e = !0,
                        n = !1,
                        i = void 0;
                    try {
                        for (var r, g = this.entries()[Symbol.iterator](); !(e = (r = g.next()).done); e = !0) {
                            var s = (0, o.default)(r.value, 2),
                                A = s[0];
                            t(s[1], A, this)
                        }
                    } catch (t) { n = !0, i = t } finally { try { e || null == g.return || g.return() } finally { if (n) throw i } }
                }
            }, {
                key: "map",
                value: function(t) {
                    var e = [],
                        n = !0,
                        i = !1,
                        r = void 0;
                    try {
                        for (var g, s = this.entries()[Symbol.iterator](); !(n = (g = s.next()).done); n = !0) {
                            var A = (0, o.default)(g.value, 2),
                                a = A[0],
                                C = A[1];
                            e.push(t(C, a, this))
                        }
                    } catch (t) { i = !0, r = t } finally { try { n || null == s.return || s.return() } finally { if (i) throw r } }
                    return e
                }
            }, {
                key: "entries",
                value: r.default.mark((function t() {
                    var e;
                    return r.default.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                e = 0;
                            case 1:
                                if (!(e < this.keys.length)) { t.next = 7; break }
                                return t.next = 4, [this.keys[e], this._fields[e]];
                            case 4:
                                e++, t.next = 1;
                                break;
                            case 7:
                            case "end":
                                return t.stop()
                        }
                    }), t, this)
                }))
            }, {
                key: "values",
                value: r.default.mark((function t() {
                    var e;
                    return r.default.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                e = 0;
                            case 1:
                                if (!(e < this.keys.length)) { t.next = 7; break }
                                return t.next = 4, this._fields[e];
                            case 4:
                                e++, t.next = 1;
                                break;
                            case 7:
                            case "end":
                                return t.stop()
                        }
                    }), t, this)
                }))
            }, {
                key: Symbol.iterator,
                value: r.default.mark((function t() {
                    return r.default.wrap((function(t) {
                        for (;;) switch (t.prev = t.next) {
                            case 0:
                                return t.delegateYield(this.values(), "t0", 1);
                            case 1:
                            case "end":
                                return t.stop()
                        }
                    }), t, this)
                }))
            }, {
                key: "toObject",
                value: function() {
                    var t = {},
                        e = !0,
                        n = !1,
                        i = void 0;
                    try {
                        for (var r, g = this.entries()[Symbol.iterator](); !(e = (r = g.next()).done); e = !0) {
                            var s = (0, o.default)(r.value, 2),
                                A = s[0],
                                a = s[1];
                            t[A] = a
                        }
                    } catch (t) { n = !0, i = t } finally { try { e || null == g.return || g.return() } finally { if (n) throw i } }
                    return t
                }
            }, { key: "get", value: function(t) { var e; if ("number" != typeof t) { if (void 0 === (e = this._fieldLookup[t])) throw (0, A.newError)("This record has no field with key '" + t + "', available key are: [" + this.keys + "].") } else e = t; if (e > this._fields.length - 1 || e < 0) throw (0, A.newError)("This record has no field with index '" + e + "'. Remember that indexes start at `0`, and make sure your query returns records in the shape you meant it to."); return this._fields[e] } }, { key: "has", value: function(t) { return "number" == typeof t ? t >= 0 && t < this._fields.length : void 0 !== this._fieldLookup[t] } }]), t
        }();
        e.default = C
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(16)),
            o = i(n(12)),
            g = i(n(17)),
            s = i(n(5)),
            A = i(n(6)),
            a = function() {
                function t(e) {
                    (0, s.default)(this, t), this.position = 0, this.length = e
                }
                return (0, A.default)(t, [{ key: "getUInt8", value: function(t) { throw new Error("Not implemented") } }, { key: "getInt8", value: function(t) { throw new Error("Not implemented") } }, { key: "getFloat64", value: function(t) { throw new Error("Not implemented") } }, { key: "putUInt8", value: function(t, e) { throw new Error("Not implemented") } }, { key: "putInt8", value: function(t, e) { throw new Error("Not implemented") } }, { key: "putFloat64", value: function(t, e) { throw new Error("Not implemented") } }, { key: "getInt16", value: function(t) { return this.getInt8(t) << 8 | this.getUInt8(t + 1) } }, { key: "getUInt16", value: function(t) { return this.getUInt8(t) << 8 | this.getUInt8(t + 1) } }, { key: "getInt32", value: function(t) { return this.getInt8(t) << 24 | this.getUInt8(t + 1) << 16 | this.getUInt8(t + 2) << 8 | this.getUInt8(t + 3) } }, { key: "getUInt32", value: function(t) { return this.getUInt8(t) << 24 | this.getUInt8(t + 1) << 16 | this.getUInt8(t + 2) << 8 | this.getUInt8(t + 3) } }, { key: "getInt64", value: function(t) { return this.getInt8(t) << 56 | this.getUInt8(t + 1) << 48 | this.getUInt8(t + 2) << 40 | this.getUInt8(t + 3) << 32 | this.getUInt8(t + 4) << 24 | this.getUInt8(t + 5) << 16 | this.getUInt8(t + 6) << 8 | this.getUInt8(t + 7) } }, { key: "getSlice", value: function(t, e) { return new C(t, e, this) } }, { key: "putInt16", value: function(t, e) { this.putInt8(t, e >> 8), this.putUInt8(t + 1, 255 & e) } }, { key: "putUInt16", value: function(t, e) { this.putUInt8(t, e >> 8 & 255), this.putUInt8(t + 1, 255 & e) } }, { key: "putInt32", value: function(t, e) { this.putInt8(t, e >> 24), this.putUInt8(t + 1, e >> 16 & 255), this.putUInt8(t + 2, e >> 8 & 255), this.putUInt8(t + 3, 255 & e) } }, { key: "putUInt32", value: function(t, e) { this.putUInt8(t, e >> 24 & 255), this.putUInt8(t + 1, e >> 16 & 255), this.putUInt8(t + 2, e >> 8 & 255), this.putUInt8(t + 3, 255 & e) } }, { key: "putInt64", value: function(t, e) { this.putInt8(t, e >> 48), this.putUInt8(t + 1, e >> 42 & 255), this.putUInt8(t + 2, e >> 36 & 255), this.putUInt8(t + 3, e >> 30 & 255), this.putUInt8(t + 4, e >> 24 & 255), this.putUInt8(t + 5, e >> 16 & 255), this.putUInt8(t + 6, e >> 8 & 255), this.putUInt8(t + 7, 255 & e) } }, { key: "putBytes", value: function(t, e) { for (var n = 0, i = e.remaining(); n < i; n++) this.putUInt8(t + n, e.readUInt8()) } }, { key: "readUInt8", value: function() { return this.getUInt8(this._updatePos(1)) } }, { key: "readInt8", value: function() { return this.getInt8(this._updatePos(1)) } }, { key: "readUInt16", value: function() { return this.getUInt16(this._updatePos(2)) } }, { key: "readUInt32", value: function() { return this.getUInt32(this._updatePos(4)) } }, { key: "readInt16", value: function() { return this.getInt16(this._updatePos(2)) } }, { key: "readInt32", value: function() { return this.getInt32(this._updatePos(4)) } }, { key: "readInt64", value: function() { return this.getInt32(this._updatePos(8)) } }, { key: "readFloat64", value: function() { return this.getFloat64(this._updatePos(8)) } }, { key: "writeUInt8", value: function(t) { this.putUInt8(this._updatePos(1), t) } }, { key: "writeInt8", value: function(t) { this.putInt8(this._updatePos(1), t) } }, { key: "writeInt16", value: function(t) { this.putInt16(this._updatePos(2), t) } }, { key: "writeInt32", value: function(t) { this.putInt32(this._updatePos(4), t) } }, { key: "writeUInt32", value: function(t) { this.putUInt32(this._updatePos(4), t) } }, { key: "writeInt64", value: function(t) { this.putInt64(this._updatePos(8), t) } }, { key: "writeFloat64", value: function(t) { this.putFloat64(this._updatePos(8), t) } }, { key: "writeBytes", value: function(t) { this.putBytes(this._updatePos(t.remaining()), t) } }, { key: "readSlice", value: function(t) { return this.getSlice(this._updatePos(t), t) } }, { key: "_updatePos", value: function(t) { var e = this.position; return this.position += t, e } }, { key: "remaining", value: function() { return this.length - this.position } }, { key: "hasRemaining", value: function() { return this.remaining() > 0 } }, { key: "reset", value: function() { this.position = 0 } }, { key: "toString", value: function() { return this.constructor.name + "( position=" + this.position + " )\n  " + this.toHex() } }, {
                    key: "toHex",
                    value: function() {
                        for (var t = "", e = 0; e < this.length; e++) {
                            var n = this.getUInt8(e).toString(16);
                            1 === n.length && (n = "0" + n), t += n, e !== this.length - 1 && (t += " ")
                        }
                        return t
                    }
                }]), t
            }();
        e.default = a;
        var C = function(t) {
            function e(t, n, i) { var g; return (0, s.default)(this, e), (g = (0, r.default)(this, (0, o.default)(e).call(this, n)))._start = t, g._inner = i, g }
            return (0, g.default)(e, t), (0, A.default)(e, [{ key: "putUInt8", value: function(t, e) { this._inner.putUInt8(this._start + t, e) } }, { key: "getUInt8", value: function(t) { return this._inner.getUInt8(this._start + t) } }, { key: "putInt8", value: function(t, e) { this._inner.putInt8(this._start + t, e) } }, { key: "putFloat64", value: function(t, e) { this._inner.putFloat64(this._start + t, e) } }, { key: "getInt8", value: function(t) { return this._inner.getInt8(this._start + t) } }, { key: "getFloat64", value: function(t) { return this._inner.getFloat64(this._start + t) } }]), e
        }(a)
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(16)),
            s = i(n(12)),
            A = i(n(17)),
            a = function(t) {
                function e(t) {
                    var n;
                    (0, r.default)(this, e);
                    var i = t instanceof ArrayBuffer ? t : new ArrayBuffer(t);
                    return (n = (0, g.default)(this, (0, s.default)(e).call(this, i.byteLength)))._buffer = i, n._view = new DataView(n._buffer), n
                }
                return (0, A.default)(e, t), (0, o.default)(e, [{ key: "putUInt8", value: function(t, e) { this._view.setUint8(t, e) } }, { key: "getUInt8", value: function(t) { return this._view.getUint8(t) } }, { key: "putInt8", value: function(t, e) { this._view.setInt8(t, e) } }, { key: "getInt8", value: function(t) { return this._view.getInt8(t) } }, { key: "getFloat64", value: function(t) { return this._view.getFloat64(t) } }, { key: "putFloat64", value: function(t, e) { this._view.setFloat64(t, e) } }, { key: "getSlice", value: function(t, n) { if (this._buffer.slice) return new e(this._buffer.slice(t, t + n)); for (var i = new e(n), r = 0; r < n; r++) i.putUInt8(r, this.getUInt8(r + t)); return i } }, { key: "readView", value: function(t) { return new DataView(this._buffer, this._updatePos(t), t) } }]), e
            }(i(n(171)).default);
        e.default = a
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = (i(n(63)), function() {
                function t() {
                    (0, r.default)(this, t)
                }
                return (0, o.default)(t, [{
                    key: "acquireConnection",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        t.accessMode, t.database, t.bookmarks;
                        throw new Error("not implemented")
                    }
                }, { key: "supportsMultiDb", value: function() { throw new Error("not implemented") } }, { key: "supportsTransactionConfig", value: function() { throw new Error("not implemented") } }, { key: "close", value: function() { throw new Error("not implemented") } }]), t
            }());
        e.default = g
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(58)),
            o = i(n(64)),
            g = i(n(5)),
            s = i(n(6)),
            A = i(n(16)),
            a = i(n(12)),
            C = i(n(123)),
            I = i(n(17)),
            u = n(79),
            c = n(225),
            l = n(11),
            h = i(n(370)),
            d = i(n(371)),
            f = i(n(125));
        i(n(126)), n(45);

        function p() {}
        var v = { onNext: p, onCompleted: p, onError: p },
            y = 0,
            b = function(t) {
                function e(t, n, i, r) {
                    var o, s = arguments.length > 4 && void 0 !== arguments[4] && arguments[4],
                        I = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : null;
                    return (0, g.default)(this, e), (o = (0, A.default)(this, (0, a.default)(e).call(this, n)))._id = y++, o._address = i, o._server = { address: i.asHostPort() }, o.creationTimestamp = Date.now(), o._disableLosslessIntegers = s, o._pendingObservers = [], o._currentObserver = void 0, o._ch = t, o._dechunker = new c.Dechunker, o._chunker = new c.Chunker(t), o._log = r, o._serversideRouting = I, o._dbConnectionId = null, o._protocol = null, o._currentFailure = null, o._isBroken = !1, o._log.isDebugEnabled() && o._log.debug("".concat((0, C.default)(o), " created towards ").concat(i)), o
                }
                var n;
                return (0, I.default)(e, t), (0, s.default)(e, [{ key: "connect", value: function(t, e) { var n = this; return this._negotiateProtocol().then((function() { return n._initialize(t, e) })) } }, {
                    key: "_negotiateProtocol",
                    value: function() {
                        var t = this,
                            e = new d.default(this, this._ch, this._chunker, this._disableLosslessIntegers, this._log, this._serversideRouting);
                        return new Promise((function(n, i) {
                            var r = function(e) { t._handleFatalError(e), i(e) };
                            t._ch.onerror = r.bind(t), t._ch._error && r(t._ch._error), t._ch.onmessage = function(r) { try { t._protocol = e.createNegotiatedProtocol(r), t._ch.onerror = t._handleFatalError.bind(t), t._ch.onmessage = function(e) { return t._dechunker.write(e) }, t._dechunker.onmessage = function(e) { t._handleMessage(t._protocol.unpacker().unpack(e)) }, r.hasRemaining() && t._dechunker.write(r.readSlice(r.remaining())), n(t) } catch (e) { t._handleFatalError(e), i(e) } }, e.writeHandshakeRequest()
                        }))
                    }
                }, {
                    key: "_initialize",
                    value: function(t, e) {
                        var n = this,
                            i = this;
                        return new Promise((function(r, o) { n._protocol.initialize({ userAgent: t, authToken: e, onError: function(t) { return o(t) }, onComplete: function() { return r(i) } }) }))
                    }
                }, { key: "protocol", value: function() { return this._protocol } }, {
                    key: "write",
                    value: function(t, e, n) {
                        var i = this;
                        this._queueObserver(e) && (this._log.isDebugEnabled() && this._log.debug("".concat(this, " C: ").concat(t)), this._protocol.packer().packStruct(t.signature, t.fields.map((function(t) { return i._packable(t) }))), this._chunker.messageBoundary(), n && this._chunker.flush())
                    }
                }, {
                    key: "_handleFatalError",
                    value: function(t) {
                        for (this._isBroken = !0, this._error = this.handleAndTransformError(t, this._address), this._log.isErrorEnabled() && this._log.error("".concat(this, " experienced a fatal error ").concat(JSON.stringify(this._error))), this._currentObserver && this._currentObserver.onError && this._currentObserver.onError(this._error); this._pendingObservers.length > 0;) {
                            var e = this._pendingObservers.shift();
                            e && e.onError && e.onError(this._error)
                        }
                    }
                }, {
                    key: "_handleMessage",
                    value: function(t) {
                        if (!this._isBroken) {
                            var e = t.fields[0];
                            switch (t.signature) {
                                case 113:
                                    this._log.isDebugEnabled() && this._log.debug("".concat(this, " S: RECORD ").concat(JSON.stringify(t))), this._currentObserver.onNext(e);
                                    break;
                                case 112:
                                    this._log.isDebugEnabled() && this._log.debug("".concat(this, " S: SUCCESS ").concat(JSON.stringify(t)));
                                    try {
                                        var n = this._protocol.transformMetadata(e);
                                        this._currentObserver.onCompleted(n)
                                    } finally { this._updateCurrentObserver() }
                                    break;
                                case 127:
                                    this._log.isDebugEnabled() && this._log.debug("".concat(this, " S: FAILURE ").concat(JSON.stringify(t)));
                                    try {
                                        var i = (0, l.newError)(e.message, e.code);
                                        this._currentFailure = this.handleAndTransformError(i, this._address), this._currentObserver.onError(this._currentFailure)
                                    } finally { this._updateCurrentObserver(), this._resetOnFailure() }
                                    break;
                                case 126:
                                    this._log.isDebugEnabled() && this._log.debug("".concat(this, " S: IGNORED ").concat(JSON.stringify(t)));
                                    try { this._currentFailure && this._currentObserver.onError ? this._currentObserver.onError(this._currentFailure) : this._currentObserver.onError && this._currentObserver.onError((0, l.newError)("Ignored either because of an error or RESET")) } finally { this._updateCurrentObserver() }
                                    break;
                                default:
                                    this._handleFatalError((0, l.newError)("Unknown Bolt protocol message: " + t))
                            }
                        }
                    }
                }, {
                    key: "resetAndFlush",
                    value: function() {
                        var t = this;
                        return new Promise((function(e, n) {
                            t._protocol.reset({
                                onError: function(e) {
                                    if (t._isBroken) n(e);
                                    else {
                                        var i = t._handleProtocolError("Received FAILURE as a response for RESET: " + e);
                                        n(i)
                                    }
                                },
                                onComplete: function() { e() }
                            })
                        }))
                    }
                }, {
                    key: "_resetOnFailure",
                    value: function() {
                        var t = this;
                        this._protocol.reset({ onError: function() { t._currentFailure = null }, onComplete: function() { t._currentFailure = null } })
                    }
                }, { key: "_queueObserver", value: function(t) { return this._isBroken ? (t && t.onError && t.onError(this._error), !1) : ((t = t || v).onCompleted = t.onCompleted || p, t.onError = t.onError || p, t.onNext = t.onNext || p, void 0 === this._currentObserver ? this._currentObserver = t : this._pendingObservers.push(t), !0) } }, { key: "_updateCurrentObserver", value: function() { this._currentObserver = this._pendingObservers.shift() } }, { key: "isOpen", value: function() { return !this._isBroken && this._ch._open } }, {
                    key: "close",
                    value: (n = (0, o.default)(r.default.mark((function t() {
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return this._log.isDebugEnabled() && this._log.debug("".concat(this, " closing")), this._protocol && this.isOpen() && this._protocol.prepareToClose(), t.next = 4, this._ch.close();
                                case 4:
                                    this._log.isDebugEnabled() && this._log.debug("".concat(this, " closed"));
                                case 5:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function() { return n.apply(this, arguments) })
                }, { key: "toString", value: function() { return "Connection [".concat(this.id, "][").concat(this.databaseId || "", "]") } }, { key: "_packable", value: function(t) { return this._protocol.packer().packable(t) } }, { key: "_handleProtocolError", value: function(t) { this._currentFailure = null, this._updateCurrentObserver(); var e = (0, l.newError)(t, l.PROTOCOL_ERROR); return this._handleFatalError(e), e } }, { key: "id", get: function() { return this._id } }, { key: "databaseId", get: function() { return this._dbConnectionId }, set: function(t) { this._dbConnectionId = t } }, { key: "address", get: function() { return this._address } }, { key: "version", get: function() { return this._server.version }, set: function(t) { this._server.version = t } }, { key: "server", get: function() { return this._server } }], [{
                    key: "create",
                    value: function(t, n, i, r) {
                        var o = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : null,
                            g = new h.default(t, n, i.errorCode());
                        return new e(new u.Channel(g), i, t, r, n.disableLosslessIntegers, o)
                    }
                }]), e
            }(f.default);
        e.default = b
    }, function(t, e, n) {
        "use strict";
        var i = n(37),
            r = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.isDuration = function(t) { return p(t, "__isDuration__") }, e.isLocalTime = function(t) { return p(t, "__isLocalTime__") }, e.isTime = function(t) { return p(t, "__isTime__") }, e.isDate = function(t) { return p(t, "__isDate__") }, e.isLocalDateTime = function(t) { return p(t, "__isLocalDateTime__") }, e.isDateTime = function(t) { return p(t, "__isDateTime__") }, e.DateTime = e.LocalDateTime = e.Date = e.Time = e.LocalTime = e.Duration = void 0;
        var o = r(n(221)),
            g = r(n(5)),
            s = r(n(6)),
            A = i(n(230)),
            a = n(24),
            C = n(11),
            I = { value: !0, enumerable: !1, configurable: !1, writable: !1 },
            u = function() {
                function t(e, n, i, r) {
                    (0, g.default)(this, t), this.months = (0, a.assertNumberOrInteger)(e, "Months"), this.days = (0, a.assertNumberOrInteger)(n, "Days"), (0, a.assertNumberOrInteger)(i, "Seconds"), (0, a.assertNumberOrInteger)(r, "Nanoseconds"), this.seconds = A.normalizeSecondsForDuration(i, r), this.nanoseconds = A.normalizeNanosecondsForDuration(r), Object.freeze(this)
                }
                return (0, s.default)(t, [{ key: "toString", value: function() { return A.durationToIsoString(this.months, this.days, this.seconds, this.nanoseconds) } }]), t
            }();
        e.Duration = u, Object.defineProperty(u.prototype, "__isDuration__", I);
        var c = function() {
            function t(e, n, i, r) {
                (0, g.default)(this, t), this.hour = A.assertValidHour(e), this.minute = A.assertValidMinute(n), this.second = A.assertValidSecond(i), this.nanosecond = A.assertValidNanosecond(r), Object.freeze(this)
            }
            return (0, s.default)(t, [{ key: "toString", value: function() { return A.timeToIsoString(this.hour, this.minute, this.second, this.nanosecond) } }], [{ key: "fromStandardDate", value: function(e, n) { return y(e, n), new t(e.getHours(), e.getMinutes(), e.getSeconds(), A.totalNanoseconds(e, n)) } }]), t
        }();
        e.LocalTime = c, Object.defineProperty(c.prototype, "__isLocalTime__", I);
        var l = function() {
            function t(e, n, i, r, o) {
                (0, g.default)(this, t), this.hour = A.assertValidHour(e), this.minute = A.assertValidMinute(n), this.second = A.assertValidSecond(i), this.nanosecond = A.assertValidNanosecond(r), this.timeZoneOffsetSeconds = (0, a.assertNumberOrInteger)(o, "Time zone offset in seconds"), Object.freeze(this)
            }
            return (0, s.default)(t, [{ key: "toString", value: function() { return A.timeToIsoString(this.hour, this.minute, this.second, this.nanosecond) + A.timeZoneOffsetToIsoString(this.timeZoneOffsetSeconds) } }], [{ key: "fromStandardDate", value: function(e, n) { return y(e, n), new t(e.getHours(), e.getMinutes(), e.getSeconds(), A.totalNanoseconds(e, n), A.timeZoneOffsetInSeconds(e)) } }]), t
        }();
        e.Time = l, Object.defineProperty(l.prototype, "__isTime__", I);
        var h = function() {
            function t(e, n, i) {
                (0, g.default)(this, t), this.year = A.assertValidYear(e), this.month = A.assertValidMonth(n), this.day = A.assertValidDay(i), Object.freeze(this)
            }
            return (0, s.default)(t, [{ key: "toString", value: function() { return A.dateToIsoString(this.year, this.month, this.day) } }], [{ key: "fromStandardDate", value: function(e) { return y(e, null), new t(e.getFullYear(), e.getMonth() + 1, e.getDate()) } }]), t
        }();
        e.Date = h, Object.defineProperty(h.prototype, "__isDate__", I);
        var d = function() {
            function t(e, n, i, r, o, s, a) {
                (0, g.default)(this, t), this.year = A.assertValidYear(e), this.month = A.assertValidMonth(n), this.day = A.assertValidDay(i), this.hour = A.assertValidHour(r), this.minute = A.assertValidMinute(o), this.second = A.assertValidSecond(s), this.nanosecond = A.assertValidNanosecond(a), Object.freeze(this)
            }
            return (0, s.default)(t, [{ key: "toString", value: function() { return v(this.year, this.month, this.day, this.hour, this.minute, this.second, this.nanosecond) } }], [{ key: "fromStandardDate", value: function(e, n) { return y(e, n), new t(e.getFullYear(), e.getMonth() + 1, e.getDate(), e.getHours(), e.getMinutes(), e.getSeconds(), A.totalNanoseconds(e, n)) } }]), t
        }();
        e.LocalDateTime = d, Object.defineProperty(d.prototype, "__isLocalDateTime__", I);
        var f = function() {
            function t(e, n, i, r, s, I, u, c, l) {
                (0, g.default)(this, t), this.year = A.assertValidYear(e), this.month = A.assertValidMonth(n), this.day = A.assertValidDay(i), this.hour = A.assertValidHour(r), this.minute = A.assertValidMinute(s), this.second = A.assertValidSecond(I), this.nanosecond = A.assertValidNanosecond(u);
                var h = function(t, e) {
                        var n = t || 0 === t,
                            i = e && "" !== e;
                        if (n && !i) return (0, a.assertNumberOrInteger)(t, "Time zone offset in seconds"), [t, null];
                        if (!n && i) return (0, a.assertString)(e, "Time zone ID"), [null, e];
                        throw n && i ? (0, C.newError)("Unable to create DateTime with both time zone offset and id. Please specify either of them. Given offset: ".concat(t, " and id: ").concat(e)) : (0, C.newError)("Unable to create DateTime without either time zone offset or id. Please specify either of them. Given offset: ".concat(t, " and id: ").concat(e))
                    }(c, l),
                    d = (0, o.default)(h, 2),
                    f = d[0],
                    p = d[1];
                this.timeZoneOffsetSeconds = f, this.timeZoneId = p, Object.freeze(this)
            }
            return (0, s.default)(t, [{ key: "toString", value: function() { return v(this.year, this.month, this.day, this.hour, this.minute, this.second, this.nanosecond) + (this.timeZoneId ? "[".concat(this.timeZoneId, "]") : A.timeZoneOffsetToIsoString(this.timeZoneOffsetSeconds)) } }], [{ key: "fromStandardDate", value: function(e, n) { return y(e, n), new t(e.getFullYear(), e.getMonth() + 1, e.getDate(), e.getHours(), e.getMinutes(), e.getSeconds(), A.totalNanoseconds(e, n), A.timeZoneOffsetInSeconds(e), null) } }]), t
        }();

        function p(t, e) { return !0 === (t && t[e]) }

        function v(t, e, n, i, r, o, g) { return A.dateToIsoString(t, e, n) + "T" + A.timeToIsoString(i, r, o, g) }

        function y(t, e) {
            (0, a.assertValidDate)(t, "Standard date"), null != e && (0, a.assertNumberOrInteger)(e, "Nanosecond")
        }
        e.DateTime = f, Object.defineProperty(f.prototype, "__isDateTime__", I)
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.DEFAULT_ACQUISITION_TIMEOUT = e.DEFAULT_MAX_SIZE = e.default = void 0;
        var r = i(n(5)),
            o = i(n(6));
        e.DEFAULT_MAX_SIZE = 100;
        e.DEFAULT_ACQUISITION_TIMEOUT = 6e4;
        var g = function() {
            function t(e, n) {
                (0, r.default)(this, t), this.maxSize = s(e, 100), this.acquisitionTimeout = s(n, 6e4)
            }
            return (0, o.default)(t, null, [{ key: "defaultConfig", value: function() { return new t(100, 6e4) } }, { key: "fromDriverConfig", value: function(e) { return new t(A(e.maxConnectionPoolSize) ? e.maxConnectionPoolSize : 100, A(e.connectionAcquisitionTimeout) ? e.connectionAcquisitionTimeout : 6e4) } }]), t
        }();

        function s(t, e) { return 0 === t || t ? t : e }

        function A(t) { return 0 === t || t }
        e.default = g
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r, o = i(n(16)),
            g = i(n(12)),
            s = i(n(17)),
            A = i(n(5)),
            a = i(n(6)),
            C = i(n(219)),
            I = n(11),
            u = (r = {}, (0, C.default)(r, "error", 0), (0, C.default)(r, "warn", 1), (0, C.default)(r, "info", 2), (0, C.default)(r, "debug", 3), r),
            c = function() {
                function t(e, n) {
                    (0, A.default)(this, t), this._level = e, this._loggerFunction = n
                }
                return (0, a.default)(t, [{ key: "isErrorEnabled", value: function() { return h(this._level, "error") } }, { key: "error", value: function(t) { this.isErrorEnabled() && this._loggerFunction("error", t) } }, { key: "isWarnEnabled", value: function() { return h(this._level, "warn") } }, { key: "warn", value: function(t) { this.isWarnEnabled() && this._loggerFunction("warn", t) } }, { key: "isInfoEnabled", value: function() { return h(this._level, "info") } }, { key: "info", value: function(t) { this.isInfoEnabled() && this._loggerFunction("info", t) } }, { key: "isDebugEnabled", value: function() { return h(this._level, "debug") } }, { key: "debug", value: function(t) { this.isDebugEnabled() && this._loggerFunction("debug", t) } }], [{
                    key: "create",
                    value: function(e) {
                        if (e && e.logging) {
                            var n = e.logging;
                            return new t(function(t) {
                                if (t && t.level) {
                                    var e = t.level,
                                        n = u[e];
                                    if (!n && 0 !== n) throw (0, I.newError)("Illegal logging level: ".concat(e, ". Supported levels are: ").concat(Object.keys(u)));
                                    return e
                                }
                                return "info"
                            }(n), function(t) { if (t && t.logger) { var e = t.logger; if (e && "function" == typeof e) return e } throw (0, I.newError)("Illegal logger function: ".concat(t.logger)) }(n))
                        }
                        return this.noOp()
                    }
                }, { key: "noOp", value: function() { return l } }]), t
            }(),
            l = new(function(t) {
                function e() { return (0, A.default)(this, e), (0, o.default)(this, (0, g.default)(e).call(this, null, null)) }
                return (0, s.default)(e, t), (0, a.default)(e, [{ key: "isErrorEnabled", value: function() { return !1 } }, { key: "error", value: function(t) {} }, { key: "isWarnEnabled", value: function() { return !1 } }, { key: "warn", value: function(t) {} }, { key: "isInfoEnabled", value: function() { return !1 } }, { key: "info", value: function(t) {} }, { key: "isDebugEnabled", value: function() { return !1 } }, { key: "debug", value: function(t) {} }]), e
            }(c));

        function h(t, e) { return u[t] >= u[e] }
        var d = c;
        e.default = d
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(11),
            s = function() {
                function t(e, n, i) {
                    (0, r.default)(this, t), this._errorCode = e, this._handleUnavailability = n || A, this._handleWriteFailure = i || A
                }
                return (0, o.default)(t, [{ key: "errorCode", value: function() { return this._errorCode } }, { key: "handleAndTransformError", value: function(t, e) { return function(t) { if (t) return t.code === g.SESSION_EXPIRED || t.code === g.SERVICE_UNAVAILABLE || "Neo.TransientError.General.DatabaseUnavailable" === t.code; return !1 }(t) ? this._handleUnavailability(t, e) : function(t) { if (t) return "Neo.ClientError.Cluster.NotALeader" === t.code || "Neo.ClientError.General.ForbiddenOnReadOnlyDatabase" === t.code; return !1 }(t) ? this._handleWriteFailure(t, e) : t } }]), t
            }();

        function A(t) { return t }
        e.default = s
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(24),
            s = i(n(238)),
            A = function() {
                function t(e, n, i, o) {
                    (0, r.default)(this, t), this._host = (0, g.assertString)(e, "host"), this._resolved = n ? (0, g.assertString)(n, "resolved") : null, this._port = (0, g.assertNumber)(i, "port"), this._hostPort = o, this._stringValue = n ? "".concat(o, "(").concat(n, ")") : "".concat(o)
                }
                return (0, o.default)(t, [{ key: "host", value: function() { return this._host } }, { key: "resolvedHost", value: function() { return this._resolved ? this._resolved : this._host } }, { key: "port", value: function() { return this._port } }, { key: "resolveWith", value: function(e) { return new t(this._host, e, this._port, this._hostPort) } }, { key: "asHostPort", value: function() { return this._hostPort } }, { key: "asKey", value: function() { return this._hostPort } }, { key: "toString", value: function() { return this._stringValue } }], [{ key: "fromUrl", value: function(e) { var n = s.default.parseDatabaseUrl(e); return new t(n.host, null, n.port, n.hostAndPort) } }]), t
            }();
        e.default = A
    }, function(t, e, n) {
        "use strict";
        n.r(e), n.d(e, "audit", (function() { return o })), n.d(e, "auditTime", (function() { return C })), n.d(e, "buffer", (function() { return I })), n.d(e, "bufferCount", (function() { return h })), n.d(e, "bufferTime", (function() { return y })), n.d(e, "bufferToggle", (function() { return S })), n.d(e, "bufferWhen", (function() { return R })), n.d(e, "catchError", (function() { return j })), n.d(e, "combineAll", (function() { return B })), n.d(e, "combineLatest", (function() { return Y })), n.d(e, "concat", (function() { return U })), n.d(e, "concatAll", (function() { return W.a })), n.d(e, "concatMap", (function() { return K })), n.d(e, "concatMapTo", (function() { return Q })), n.d(e, "count", (function() { return X })), n.d(e, "debounce", (function() { return $ })), n.d(e, "debounceTime", (function() { return nt })), n.d(e, "defaultIfEmpty", (function() { return gt })), n.d(e, "delay", (function() { return It })), n.d(e, "delayWhen", (function() { return dt })), n.d(e, "dematerialize", (function() { return bt })), n.d(e, "distinct", (function() { return _t })), n.d(e, "distinctUntilChanged", (function() { return Ot })), n.d(e, "distinctUntilKeyChanged", (function() { return St })), n.d(e, "elementAt", (function() { return Vt })), n.d(e, "endWith", (function() { return Gt })), n.d(e, "every", (function() { return Ut })), n.d(e, "exhaust", (function() { return Kt })), n.d(e, "exhaustMap", (function() { return Jt })), n.d(e, "expand", (function() { return ee })), n.d(e, "filter", (function() { return Nt.a })), n.d(e, "finalize", (function() { return re })), n.d(e, "find", (function() { return se })), n.d(e, "findIndex", (function() { return Ce })), n.d(e, "first", (function() { return ue })), n.d(e, "groupBy", (function() { return ce.b })), n.d(e, "ignoreElements", (function() { return le })), n.d(e, "isEmpty", (function() { return fe })), n.d(e, "last", (function() { return we })), n.d(e, "map", (function() { return qt.a })), n.d(e, "mapTo", (function() { return _e })), n.d(e, "materialize", (function() { return Oe })), n.d(e, "max", (function() { return Me })), n.d(e, "merge", (function() { return Fe })), n.d(e, "mergeAll", (function() { return ze.a })), n.d(e, "mergeMap", (function() { return H.b })), n.d(e, "flatMap", (function() { return H.a })), n.d(e, "mergeMapTo", (function() { return Le })), n.d(e, "mergeScan", (function() { return Be })), n.d(e, "min", (function() { return Ye })), n.d(e, "multicast", (function() { return Ue })), n.d(e, "observeOn", (function() { return He.b })), n.d(e, "onErrorResumeNext", (function() { return Ke })), n.d(e, "pairwise", (function() { return qe })), n.d(e, "partition", (function() { return en })), n.d(e, "pluck", (function() { return nn })), n.d(e, "publish", (function() { return gn })), n.d(e, "publishBehavior", (function() { return An })), n.d(e, "publishLast", (function() { return Cn })), n.d(e, "publishReplay", (function() { return un })), n.d(e, "race", (function() { return ln })), n.d(e, "reduce", (function() { return Pe })), n.d(e, "repeat", (function() { return hn })), n.d(e, "repeatWhen", (function() { return pn })), n.d(e, "retry", (function() { return bn })), n.d(e, "retryWhen", (function() { return _n })), n.d(e, "refCount", (function() { return On.a })), n.d(e, "sample", (function() { return En })), n.d(e, "sampleTime", (function() { return Dn })), n.d(e, "scan", (function() { return Se })), n.d(e, "sequenceEqual", (function() { return Mn })), n.d(e, "share", (function() { return Bn })), n.d(e, "shareReplay", (function() { return Zn })), n.d(e, "single", (function() { return Vn })), n.d(e, "skip", (function() { return Un })), n.d(e, "skipLast", (function() { return Kn })), n.d(e, "skipUntil", (function() { return qn })), n.d(e, "skipWhile", (function() { return ti })), n.d(e, "startWith", (function() { return ii })), n.d(e, "subscribeOn", (function() { return si })), n.d(e, "switchAll", (function() { return ui })), n.d(e, "switchMap", (function() { return ai })), n.d(e, "switchMapTo", (function() { return ci })), n.d(e, "take", (function() { return Lt })), n.d(e, "takeLast", (function() { return ye })), n.d(e, "takeUntil", (function() { return li })), n.d(e, "takeWhile", (function() { return fi })), n.d(e, "tap", (function() { return mi })), n.d(e, "throttle", (function() { return xi })), n.d(e, "throttleTime", (function() { return Ti })), n.d(e, "throwIfEmpty", (function() { return Pt })), n.d(e, "timeInterval", (function() { return Pi })), n.d(e, "timeout", (function() { return Zi })), n.d(e, "timeoutWith", (function() { return Fi })), n.d(e, "timestamp", (function() { return Vi })), n.d(e, "toArray", (function() { return Ui })), n.d(e, "window", (function() { return Wi })), n.d(e, "windowCount", (function() { return Qi })), n.d(e, "windowTime", (function() { return Ji })), n.d(e, "windowToggle", (function() { return or })), n.d(e, "windowWhen", (function() { return Ar })), n.d(e, "withLatestFrom", (function() { return Ir })), n.d(e, "zip", (function() { return hr })), n.d(e, "zipAll", (function() { return dr }));
        var i = n(0),
            r = n(2);

        function o(t) { return function(e) { return e.lift(new g(t)) } }
        var g = function() {
                function t(t) { this.durationSelector = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new s(t, this.durationSelector)) }, t
            }(),
            s = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.durationSelector = n, i.hasValue = !1, i }
                return i.a(e, t), e.prototype._next = function(t) { if (this.value = t, this.hasValue = !0, !this.throttled) { var e = void 0; try { e = (0, this.durationSelector)(t) } catch (t) { return this.destination.error(t) } var n = Object(r.c)(e, new r.a(this));!n || n.closed ? this.clearThrottle() : this.add(this.throttled = n) } }, e.prototype.clearThrottle = function() {
                    var t = this.value,
                        e = this.hasValue,
                        n = this.throttled;
                    n && (this.remove(n), this.throttled = void 0, n.unsubscribe()), e && (this.value = void 0, this.hasValue = !1, this.destination.next(t))
                }, e.prototype.notifyNext = function() { this.clearThrottle() }, e.prototype.notifyComplete = function() { this.clearThrottle() }, e
            }(r.b),
            A = n(9),
            a = n(137);

        function C(t, e) { return void 0 === e && (e = A.a), o((function() { return Object(a.a)(t, e) })) }

        function I(t) { return function(e) { return e.lift(new u(t)) } }
        var u = function() {
                function t(t) { this.closingNotifier = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new c(t, this.closingNotifier)) }, t
            }(),
            c = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.buffer = [], i.add(Object(r.c)(n, new r.a(i))), i }
                return i.a(e, t), e.prototype._next = function(t) { this.buffer.push(t) }, e.prototype.notifyNext = function() {
                    var t = this.buffer;
                    this.buffer = [], this.destination.next(t)
                }, e
            }(r.b),
            l = n(1);

        function h(t, e) {
            return void 0 === e && (e = null),
                function(n) { return n.lift(new d(t, e)) }
        }
        var d = function() {
                function t(t, e) { this.bufferSize = t, this.startBufferEvery = e, this.subscriberClass = e && t !== e ? p : f }
                return t.prototype.call = function(t, e) { return e.subscribe(new this.subscriberClass(t, this.bufferSize, this.startBufferEvery)) }, t
            }(),
            f = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.bufferSize = n, i.buffer = [], i }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e = this.buffer;
                    e.push(t), e.length == this.bufferSize && (this.destination.next(e), this.buffer = [])
                }, e.prototype._complete = function() {
                    var e = this.buffer;
                    e.length > 0 && this.destination.next(e), t.prototype._complete.call(this)
                }, e
            }(l.a),
            p = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.bufferSize = n, r.startBufferEvery = i, r.buffers = [], r.count = 0, r }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e = this.bufferSize,
                        n = this.startBufferEvery,
                        i = this.buffers,
                        r = this.count;
                    this.count++, r % n == 0 && i.push([]);
                    for (var o = i.length; o--;) {
                        var g = i[o];
                        g.push(t), g.length === e && (i.splice(o, 1), this.destination.next(g))
                    }
                }, e.prototype._complete = function() {
                    for (var e = this.buffers, n = this.destination; e.length > 0;) {
                        var i = e.shift();
                        i.length > 0 && n.next(i)
                    }
                    t.prototype._complete.call(this)
                }, e
            }(l.a),
            v = n(14);

        function y(t) {
            var e = arguments.length,
                n = A.a;
            Object(v.a)(arguments[arguments.length - 1]) && (n = arguments[arguments.length - 1], e--);
            var i = null;
            e >= 2 && (i = arguments[1]);
            var r = Number.POSITIVE_INFINITY;
            return e >= 3 && (r = arguments[2]),
                function(e) { return e.lift(new b(t, i, r, n)) }
        }
        var b = function() {
                function t(t, e, n, i) { this.bufferTimeSpan = t, this.bufferCreationInterval = e, this.maxBufferSize = n, this.scheduler = i }
                return t.prototype.call = function(t, e) { return e.subscribe(new w(t, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler)) }, t
            }(),
            m = function() { return function() { this.buffer = [] } }(),
            w = function(t) {
                function e(e, n, i, r, o) {
                    var g = t.call(this, e) || this;
                    g.bufferTimeSpan = n, g.bufferCreationInterval = i, g.maxBufferSize = r, g.scheduler = o, g.contexts = [];
                    var s = g.openContext();
                    if (g.timespanOnly = null == i || i < 0, g.timespanOnly) {
                        var A = { subscriber: g, context: s, bufferTimeSpan: n };
                        g.add(s.closeAction = o.schedule(_, n, A))
                    } else {
                        var a = { subscriber: g, context: s },
                            C = { bufferTimeSpan: n, bufferCreationInterval: i, subscriber: g, scheduler: o };
                        g.add(s.closeAction = o.schedule(x, n, a)), g.add(o.schedule(k, i, C))
                    }
                    return g
                }
                return i.a(e, t), e.prototype._next = function(t) {
                    for (var e, n = this.contexts, i = n.length, r = 0; r < i; r++) {
                        var o = n[r],
                            g = o.buffer;
                        g.push(t), g.length == this.maxBufferSize && (e = o)
                    }
                    e && this.onBufferFull(e)
                }, e.prototype._error = function(e) { this.contexts.length = 0, t.prototype._error.call(this, e) }, e.prototype._complete = function() {
                    for (var e = this.contexts, n = this.destination; e.length > 0;) {
                        var i = e.shift();
                        n.next(i.buffer)
                    }
                    t.prototype._complete.call(this)
                }, e.prototype._unsubscribe = function() { this.contexts = null }, e.prototype.onBufferFull = function(t) {
                    this.closeContext(t);
                    var e = t.closeAction;
                    if (e.unsubscribe(), this.remove(e), !this.closed && this.timespanOnly) {
                        t = this.openContext();
                        var n = this.bufferTimeSpan,
                            i = { subscriber: this, context: t, bufferTimeSpan: n };
                        this.add(t.closeAction = this.scheduler.schedule(_, n, i))
                    }
                }, e.prototype.openContext = function() { var t = new m; return this.contexts.push(t), t }, e.prototype.closeContext = function(t) {
                    this.destination.next(t.buffer);
                    var e = this.contexts;
                    (e ? e.indexOf(t) : -1) >= 0 && e.splice(e.indexOf(t), 1)
                }, e
            }(l.a);

        function _(t) {
            var e = t.subscriber,
                n = t.context;
            n && e.closeContext(n), e.closed || (t.context = e.openContext(), t.context.closeAction = this.schedule(t, t.bufferTimeSpan))
        }

        function k(t) {
            var e = t.bufferCreationInterval,
                n = t.bufferTimeSpan,
                i = t.subscriber,
                r = t.scheduler,
                o = i.openContext();
            i.closed || (i.add(o.closeAction = r.schedule(x, n, { subscriber: i, context: o })), this.schedule(t, e))
        }

        function x(t) {
            var e = t.subscriber,
                n = t.context;
            e.closeContext(n)
        }
        var O = n(7),
            E = n(25),
            T = n(30);

        function S(t, e) { return function(n) { return n.lift(new D(t, e)) } }
        var D = function() {
                function t(t, e) { this.openings = t, this.closingSelector = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new N(t, this.openings, this.closingSelector)) }, t
            }(),
            N = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.closingSelector = i, r.contexts = [], r.add(Object(E.a)(r, n)), r }
                return i.a(e, t), e.prototype._next = function(t) { for (var e = this.contexts, n = e.length, i = 0; i < n; i++) e[i].buffer.push(t) }, e.prototype._error = function(e) {
                    for (var n = this.contexts; n.length > 0;) {
                        var i = n.shift();
                        i.subscription.unsubscribe(), i.buffer = null, i.subscription = null
                    }
                    this.contexts = null, t.prototype._error.call(this, e)
                }, e.prototype._complete = function() {
                    for (var e = this.contexts; e.length > 0;) {
                        var n = e.shift();
                        this.destination.next(n.buffer), n.subscription.unsubscribe(), n.buffer = null, n.subscription = null
                    }
                    this.contexts = null, t.prototype._complete.call(this)
                }, e.prototype.notifyNext = function(t, e) { t ? this.closeBuffer(t) : this.openBuffer(e) }, e.prototype.notifyComplete = function(t) { this.closeBuffer(t.context) }, e.prototype.openBuffer = function(t) {
                    try {
                        var e = this.closingSelector.call(this, t);
                        e && this.trySubscribe(e)
                    } catch (t) { this._error(t) }
                }, e.prototype.closeBuffer = function(t) {
                    var e = this.contexts;
                    if (e && t) {
                        var n = t.buffer,
                            i = t.subscription;
                        this.destination.next(n), e.splice(e.indexOf(t), 1), this.remove(i), i.unsubscribe()
                    }
                }, e.prototype.trySubscribe = function(t) {
                    var e = this.contexts,
                        n = new O.a,
                        i = { buffer: [], subscription: n };
                    e.push(i);
                    var r = Object(E.a)(this, t, i);
                    !r || r.closed ? this.closeBuffer(i) : (r.context = i, this.add(r), n.add(r))
                }, e
            }(T.a);

        function R(t) { return function(e) { return e.lift(new P(t)) } }
        var P = function() {
                function t(t) { this.closingSelector = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new M(t, this.closingSelector)) }, t
            }(),
            M = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.closingSelector = n, i.subscribing = !1, i.openBuffer(), i }
                return i.a(e, t), e.prototype._next = function(t) { this.buffer.push(t) }, e.prototype._complete = function() {
                    var e = this.buffer;
                    e && this.destination.next(e), t.prototype._complete.call(this)
                }, e.prototype._unsubscribe = function() { this.buffer = void 0, this.subscribing = !1 }, e.prototype.notifyNext = function() { this.openBuffer() }, e.prototype.notifyComplete = function() { this.subscribing ? this.complete() : this.openBuffer() }, e.prototype.openBuffer = function() {
                    var t = this.closingSubscription;
                    t && (this.remove(t), t.unsubscribe());
                    var e, n = this.buffer;
                    this.buffer && this.destination.next(n), this.buffer = [];
                    try { e = (0, this.closingSelector)() } catch (t) { return this.error(t) }
                    t = new O.a, this.closingSubscription = t, this.add(t), this.subscribing = !0, t.add(Object(r.c)(e, new r.a(this))), this.subscribing = !1
                }, e
            }(r.b);

        function j(t) {
            return function(e) {
                var n = new F(t),
                    i = e.lift(n);
                return n.caught = i
            }
        }
        var F = function() {
                function t(t) { this.selector = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new z(t, this.selector, this.caught)) }, t
            }(),
            z = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.selector = n, r.caught = i, r }
                return i.a(e, t), e.prototype.error = function(e) {
                    if (!this.isStopped) {
                        var n = void 0;
                        try { n = this.selector(e, this.caught) } catch (e) { return void t.prototype.error.call(this, e) }
                        this._unsubscribeAndRecycle();
                        var i = new r.a(this);
                        this.add(i);
                        var o = Object(r.c)(n, i);
                        o !== i && this.add(o)
                    }
                }, e
            }(r.b),
            L = n(85);

        function B(t) { return function(e) { return e.lift(new L.a(t)) } }
        var Z = n(10),
            V = n(19);

        function Y() {
            for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
            var n = null;
            return "function" == typeof t[t.length - 1] && (n = t.pop()), 1 === t.length && Object(Z.a)(t[0]) && (t = t[0].slice()),
                function(e) { return e.lift.call(Object(V.a)([e].concat(t)), new L.a(n)) }
        }
        var G = n(59);

        function U() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return function(e) { return e.lift.call(G.a.apply(void 0, [e].concat(t))) } }
        var W = n(134),
            H = n(51);

        function K(t, e) { return Object(H.b)(t, e, 1) }

        function Q(t, e) { return K((function() { return t }), e) }

        function X(t) { return function(e) { return e.lift(new q(t, e)) } }
        var q = function() {
                function t(t, e) { this.predicate = t, this.source = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new J(t, this.predicate, this.source)) }, t
            }(),
            J = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.predicate = n, r.source = i, r.count = 0, r.index = 0, r }
                return i.a(e, t), e.prototype._next = function(t) { this.predicate ? this._tryPredicate(t) : this.count++ }, e.prototype._tryPredicate = function(t) {
                    var e;
                    try { e = this.predicate(t, this.index++, this.source) } catch (t) { return void this.destination.error(t) }
                    e && this.count++
                }, e.prototype._complete = function() { this.destination.next(this.count), this.destination.complete() }, e
            }(l.a);

        function $(t) { return function(e) { return e.lift(new tt(t)) } }
        var tt = function() {
                function t(t) { this.durationSelector = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new et(t, this.durationSelector)) }, t
            }(),
            et = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.durationSelector = n, i.hasValue = !1, i }
                return i.a(e, t), e.prototype._next = function(t) {
                    try {
                        var e = this.durationSelector.call(this, t);
                        e && this._tryNext(t, e)
                    } catch (t) { this.destination.error(t) }
                }, e.prototype._complete = function() { this.emitValue(), this.destination.complete() }, e.prototype._tryNext = function(t, e) {
                    var n = this.durationSubscription;
                    this.value = t, this.hasValue = !0, n && (n.unsubscribe(), this.remove(n)), (n = Object(r.c)(e, new r.a(this))) && !n.closed && this.add(this.durationSubscription = n)
                }, e.prototype.notifyNext = function() { this.emitValue() }, e.prototype.notifyComplete = function() { this.emitValue() }, e.prototype.emitValue = function() {
                    if (this.hasValue) {
                        var e = this.value,
                            n = this.durationSubscription;
                        n && (this.durationSubscription = void 0, n.unsubscribe(), this.remove(n)), this.value = void 0, this.hasValue = !1, t.prototype._next.call(this, e)
                    }
                }, e
            }(r.b);

        function nt(t, e) {
            return void 0 === e && (e = A.a),
                function(n) { return n.lift(new it(t, e)) }
        }
        var it = function() {
                function t(t, e) { this.dueTime = t, this.scheduler = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new rt(t, this.dueTime, this.scheduler)) }, t
            }(),
            rt = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.dueTime = n, r.scheduler = i, r.debouncedSubscription = null, r.lastValue = null, r.hasValue = !1, r }
                return i.a(e, t), e.prototype._next = function(t) { this.clearDebounce(), this.lastValue = t, this.hasValue = !0, this.add(this.debouncedSubscription = this.scheduler.schedule(ot, this.dueTime, this)) }, e.prototype._complete = function() { this.debouncedNext(), this.destination.complete() }, e.prototype.debouncedNext = function() {
                    if (this.clearDebounce(), this.hasValue) {
                        var t = this.lastValue;
                        this.lastValue = null, this.hasValue = !1, this.destination.next(t)
                    }
                }, e.prototype.clearDebounce = function() {
                    var t = this.debouncedSubscription;
                    null !== t && (this.remove(t), t.unsubscribe(), this.debouncedSubscription = null)
                }, e
            }(l.a);

        function ot(t) { t.debouncedNext() }

        function gt(t) {
            return void 0 === t && (t = null),
                function(e) { return e.lift(new st(t)) }
        }
        var st = function() {
                function t(t) { this.defaultValue = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new At(t, this.defaultValue)) }, t
            }(),
            At = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.defaultValue = n, i.isEmpty = !0, i }
                return i.a(e, t), e.prototype._next = function(t) { this.isEmpty = !1, this.destination.next(t) }, e.prototype._complete = function() { this.isEmpty && this.destination.next(this.defaultValue), this.destination.complete() }, e
            }(l.a);

        function at(t) { return t instanceof Date && !isNaN(+t) }
        var Ct = n(32);

        function It(t, e) { void 0 === e && (e = A.a); var n = at(t) ? +t - e.now() : Math.abs(t); return function(t) { return t.lift(new ut(n, e)) } }
        var ut = function() {
                function t(t, e) { this.delay = t, this.scheduler = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new ct(t, this.delay, this.scheduler)) }, t
            }(),
            ct = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.delay = n, r.scheduler = i, r.queue = [], r.active = !1, r.errored = !1, r }
                return i.a(e, t), e.dispatch = function(t) {
                    for (var e = t.source, n = e.queue, i = t.scheduler, r = t.destination; n.length > 0 && n[0].time - i.now() <= 0;) n.shift().notification.observe(r);
                    if (n.length > 0) {
                        var o = Math.max(0, n[0].time - i.now());
                        this.schedule(t, o)
                    } else this.unsubscribe(), e.active = !1
                }, e.prototype._schedule = function(t) { this.active = !0, this.destination.add(t.schedule(e.dispatch, this.delay, { source: this, destination: this.destination, scheduler: t })) }, e.prototype.scheduleNotification = function(t) {
                    if (!0 !== this.errored) {
                        var e = this.scheduler,
                            n = new lt(e.now() + this.delay, t);
                        this.queue.push(n), !1 === this.active && this._schedule(e)
                    }
                }, e.prototype._next = function(t) { this.scheduleNotification(Ct.a.createNext(t)) }, e.prototype._error = function(t) { this.errored = !0, this.queue = [], this.destination.error(t), this.unsubscribe() }, e.prototype._complete = function() { this.scheduleNotification(Ct.a.createComplete()), this.unsubscribe() }, e
            }(l.a),
            lt = function() { return function(t, e) { this.time = t, this.notification = e } }(),
            ht = n(3);

        function dt(t, e) { return e ? function(n) { return new vt(n, e).lift(new ft(t)) } : function(e) { return e.lift(new ft(t)) } }
        var ft = function() {
                function t(t) { this.delayDurationSelector = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new pt(t, this.delayDurationSelector)) }, t
            }(),
            pt = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.delayDurationSelector = n, i.completed = !1, i.delayNotifierSubscriptions = [], i.index = 0, i }
                return i.a(e, t), e.prototype.notifyNext = function(t, e, n, i, r) { this.destination.next(t), this.removeSubscription(r), this.tryComplete() }, e.prototype.notifyError = function(t, e) { this._error(t) }, e.prototype.notifyComplete = function(t) {
                    var e = this.removeSubscription(t);
                    e && this.destination.next(e), this.tryComplete()
                }, e.prototype._next = function(t) {
                    var e = this.index++;
                    try {
                        var n = this.delayDurationSelector(t, e);
                        n && this.tryDelay(n, t)
                    } catch (t) { this.destination.error(t) }
                }, e.prototype._complete = function() { this.completed = !0, this.tryComplete(), this.unsubscribe() }, e.prototype.removeSubscription = function(t) { t.unsubscribe(); var e = this.delayNotifierSubscriptions.indexOf(t); return -1 !== e && this.delayNotifierSubscriptions.splice(e, 1), t.outerValue }, e.prototype.tryDelay = function(t, e) {
                    var n = Object(E.a)(this, t, e);
                    n && !n.closed && (this.destination.add(n), this.delayNotifierSubscriptions.push(n))
                }, e.prototype.tryComplete = function() { this.completed && 0 === this.delayNotifierSubscriptions.length && this.destination.complete() }, e
            }(T.a),
            vt = function(t) {
                function e(e, n) { var i = t.call(this) || this; return i.source = e, i.subscriptionDelay = n, i }
                return i.a(e, t), e.prototype._subscribe = function(t) { this.subscriptionDelay.subscribe(new yt(t, this.source)) }, e
            }(ht.a),
            yt = function(t) {
                function e(e, n) { var i = t.call(this) || this; return i.parent = e, i.source = n, i.sourceSubscribed = !1, i }
                return i.a(e, t), e.prototype._next = function(t) { this.subscribeToSource() }, e.prototype._error = function(t) { this.unsubscribe(), this.parent.error(t) }, e.prototype._complete = function() { this.unsubscribe(), this.subscribeToSource() }, e.prototype.subscribeToSource = function() { this.sourceSubscribed || (this.sourceSubscribed = !0, this.unsubscribe(), this.source.subscribe(this.parent)) }, e
            }(l.a);

        function bt() { return function(t) { return t.lift(new mt) } }
        var mt = function() {
                function t() {}
                return t.prototype.call = function(t, e) { return e.subscribe(new wt(t)) }, t
            }(),
            wt = function(t) {
                function e(e) { return t.call(this, e) || this }
                return i.a(e, t), e.prototype._next = function(t) { t.observe(this.destination) }, e
            }(l.a);

        function _t(t, e) { return function(n) { return n.lift(new kt(t, e)) } }
        var kt = function() {
                function t(t, e) { this.keySelector = t, this.flushes = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new xt(t, this.keySelector, this.flushes)) }, t
            }(),
            xt = function(t) {
                function e(e, n, i) { var o = t.call(this, e) || this; return o.keySelector = n, o.values = new Set, i && o.add(Object(r.c)(i, new r.a(o))), o }
                return i.a(e, t), e.prototype.notifyNext = function() { this.values.clear() }, e.prototype.notifyError = function(t) { this._error(t) }, e.prototype._next = function(t) { this.keySelector ? this._useKeySelector(t) : this._finalizeNext(t, t) }, e.prototype._useKeySelector = function(t) {
                    var e, n = this.destination;
                    try { e = this.keySelector(t) } catch (t) { return void n.error(t) }
                    this._finalizeNext(e, t)
                }, e.prototype._finalizeNext = function(t, e) {
                    var n = this.values;
                    n.has(t) || (n.add(t), this.destination.next(e))
                }, e
            }(r.b);

        function Ot(t, e) { return function(n) { return n.lift(new Et(t, e)) } }
        var Et = function() {
                function t(t, e) { this.compare = t, this.keySelector = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new Tt(t, this.compare, this.keySelector)) }, t
            }(),
            Tt = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.keySelector = i, r.hasKey = !1, "function" == typeof n && (r.compare = n), r }
                return i.a(e, t), e.prototype.compare = function(t, e) { return t === e }, e.prototype._next = function(t) {
                    var e;
                    try {
                        var n = this.keySelector;
                        e = n ? n(t) : t
                    } catch (t) { return this.destination.error(t) }
                    var i = !1;
                    if (this.hasKey) try { i = (0, this.compare)(this.key, e) } catch (t) { return this.destination.error(t) } else this.hasKey = !0;
                    i || (this.key = e, this.destination.next(t))
                }, e
            }(l.a);

        function St(t, e) { return Ot((function(n, i) { return e ? e(n[t], i[t]) : n[t] === i[t] })) }
        var Dt = n(46),
            Nt = n(31),
            Rt = n(50);

        function Pt(t) {
            return void 0 === t && (t = Ft),
                function(e) { return e.lift(new Mt(t)) }
        }
        var Mt = function() {
                function t(t) { this.errorFactory = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new jt(t, this.errorFactory)) }, t
            }(),
            jt = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.errorFactory = n, i.hasValue = !1, i }
                return i.a(e, t), e.prototype._next = function(t) { this.hasValue = !0, this.destination.next(t) }, e.prototype._complete = function() {
                    if (this.hasValue) return this.destination.complete();
                    var t = void 0;
                    try { t = this.errorFactory() } catch (e) { t = e }
                    this.destination.error(t)
                }, e
            }(l.a);

        function Ft() { return new Rt.a }
        var zt = n(18);

        function Lt(t) { return function(e) { return 0 === t ? Object(zt.b)() : e.lift(new Bt(t)) } }
        var Bt = function() {
                function t(t) { if (this.total = t, this.total < 0) throw new Dt.a }
                return t.prototype.call = function(t, e) { return e.subscribe(new Zt(t, this.total)) }, t
            }(),
            Zt = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.total = n, i.count = 0, i }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e = this.total,
                        n = ++this.count;
                    n <= e && (this.destination.next(t), n === e && (this.destination.complete(), this.unsubscribe()))
                }, e
            }(l.a);

        function Vt(t, e) { if (t < 0) throw new Dt.a; var n = arguments.length >= 2; return function(i) { return i.pipe(Object(Nt.a)((function(e, n) { return n === t })), Lt(1), n ? gt(e) : Pt((function() { return new Dt.a }))) } }
        var Yt = n(65);

        function Gt() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return function(e) { return Object(G.a)(e, Yt.a.apply(void 0, t)) } }

        function Ut(t, e) { return function(n) { return n.lift(new Wt(t, e, n)) } }
        var Wt = function() {
                function t(t, e, n) { this.predicate = t, this.thisArg = e, this.source = n }
                return t.prototype.call = function(t, e) { return e.subscribe(new Ht(t, this.predicate, this.thisArg, this.source)) }, t
            }(),
            Ht = function(t) {
                function e(e, n, i, r) { var o = t.call(this, e) || this; return o.predicate = n, o.thisArg = i, o.source = r, o.index = 0, o.thisArg = i || o, o }
                return i.a(e, t), e.prototype.notifyComplete = function(t) { this.destination.next(t), this.destination.complete() }, e.prototype._next = function(t) {
                    var e = !1;
                    try { e = this.predicate.call(this.thisArg, t, this.index++, this.source) } catch (t) { return void this.destination.error(t) }
                    e || this.notifyComplete(!1)
                }, e.prototype._complete = function() { this.notifyComplete(!0) }, e
            }(l.a);

        function Kt() { return function(t) { return t.lift(new Qt) } }
        var Qt = function() {
                function t() {}
                return t.prototype.call = function(t, e) { return e.subscribe(new Xt(t)) }, t
            }(),
            Xt = function(t) {
                function e(e) { var n = t.call(this, e) || this; return n.hasCompleted = !1, n.hasSubscription = !1, n }
                return i.a(e, t), e.prototype._next = function(t) { this.hasSubscription || (this.hasSubscription = !0, this.add(Object(r.c)(t, new r.a(this)))) }, e.prototype._complete = function() { this.hasCompleted = !0, this.hasSubscription || this.destination.complete() }, e.prototype.notifyComplete = function() { this.hasSubscription = !1, this.hasCompleted && this.destination.complete() }, e
            }(r.b),
            qt = n(13);

        function Jt(t, e) { return e ? function(n) { return n.pipe(Jt((function(n, i) { return Object(V.a)(t(n, i)).pipe(Object(qt.a)((function(t, r) { return e(n, t, i, r) }))) }))) } : function(e) { return e.lift(new $t(t)) } }
        var $t = function() {
                function t(t) { this.project = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new te(t, this.project)) }, t
            }(),
            te = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.project = n, i.hasSubscription = !1, i.hasCompleted = !1, i.index = 0, i }
                return i.a(e, t), e.prototype._next = function(t) { this.hasSubscription || this.tryNext(t) }, e.prototype.tryNext = function(t) {
                    var e, n = this.index++;
                    try { e = this.project(t, n) } catch (t) { return void this.destination.error(t) }
                    this.hasSubscription = !0, this._innerSub(e)
                }, e.prototype._innerSub = function(t) {
                    var e = new r.a(this),
                        n = this.destination;
                    n.add(e);
                    var i = Object(r.c)(t, e);
                    i !== e && n.add(i)
                }, e.prototype._complete = function() { this.hasCompleted = !0, this.hasSubscription || this.destination.complete(), this.unsubscribe() }, e.prototype.notifyNext = function(t) { this.destination.next(t) }, e.prototype.notifyError = function(t) { this.destination.error(t) }, e.prototype.notifyComplete = function() { this.hasSubscription = !1, this.hasCompleted && this.destination.complete() }, e
            }(r.b);

        function ee(t, e, n) {
            return void 0 === e && (e = Number.POSITIVE_INFINITY), e = (e || 0) < 1 ? Number.POSITIVE_INFINITY : e,
                function(i) { return i.lift(new ne(t, e, n)) }
        }
        var ne = function() {
                function t(t, e, n) { this.project = t, this.concurrent = e, this.scheduler = n }
                return t.prototype.call = function(t, e) { return e.subscribe(new ie(t, this.project, this.concurrent, this.scheduler)) }, t
            }(),
            ie = function(t) {
                function e(e, n, i, r) { var o = t.call(this, e) || this; return o.project = n, o.concurrent = i, o.scheduler = r, o.index = 0, o.active = 0, o.hasCompleted = !1, i < Number.POSITIVE_INFINITY && (o.buffer = []), o }
                return i.a(e, t), e.dispatch = function(t) {
                    var e = t.subscriber,
                        n = t.result,
                        i = t.value,
                        r = t.index;
                    e.subscribeToProjection(n, i, r)
                }, e.prototype._next = function(t) {
                    var n = this.destination;
                    if (n.closed) this._complete();
                    else {
                        var i = this.index++;
                        if (this.active < this.concurrent) {
                            n.next(t);
                            try {
                                var r = (0, this.project)(t, i);
                                if (this.scheduler) {
                                    var o = { subscriber: this, result: r, value: t, index: i };
                                    this.destination.add(this.scheduler.schedule(e.dispatch, 0, o))
                                } else this.subscribeToProjection(r, t, i)
                            } catch (t) { n.error(t) }
                        } else this.buffer.push(t)
                    }
                }, e.prototype.subscribeToProjection = function(t, e, n) { this.active++, this.destination.add(Object(r.c)(t, new r.a(this))) }, e.prototype._complete = function() { this.hasCompleted = !0, this.hasCompleted && 0 === this.active && this.destination.complete(), this.unsubscribe() }, e.prototype.notifyNext = function(t) { this._next(t) }, e.prototype.notifyComplete = function() {
                    var t = this.buffer;
                    this.active--, t && t.length > 0 && this._next(t.shift()), this.hasCompleted && 0 === this.active && this.destination.complete()
                }, e
            }(r.b);

        function re(t) { return function(e) { return e.lift(new oe(t)) } }
        var oe = function() {
                function t(t) { this.callback = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new ge(t, this.callback)) }, t
            }(),
            ge = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.add(new O.a(n)), i }
                return i.a(e, t), e
            }(l.a);

        function se(t, e) { if ("function" != typeof t) throw new TypeError("predicate is not a function"); return function(n) { return n.lift(new Ae(t, n, !1, e)) } }
        var Ae = function() {
                function t(t, e, n, i) { this.predicate = t, this.source = e, this.yieldIndex = n, this.thisArg = i }
                return t.prototype.call = function(t, e) { return e.subscribe(new ae(t, this.predicate, this.source, this.yieldIndex, this.thisArg)) }, t
            }(),
            ae = function(t) {
                function e(e, n, i, r, o) { var g = t.call(this, e) || this; return g.predicate = n, g.source = i, g.yieldIndex = r, g.thisArg = o, g.index = 0, g }
                return i.a(e, t), e.prototype.notifyComplete = function(t) {
                    var e = this.destination;
                    e.next(t), e.complete(), this.unsubscribe()
                }, e.prototype._next = function(t) {
                    var e = this.predicate,
                        n = this.thisArg,
                        i = this.index++;
                    try { e.call(n || this, t, i, this.source) && this.notifyComplete(this.yieldIndex ? i : t) } catch (t) { this.destination.error(t) }
                }, e.prototype._complete = function() { this.notifyComplete(this.yieldIndex ? -1 : void 0) }, e
            }(l.a);

        function Ce(t, e) { return function(n) { return n.lift(new Ae(t, n, !0, e)) } }
        var Ie = n(28);

        function ue(t, e) { var n = arguments.length >= 2; return function(i) { return i.pipe(t ? Object(Nt.a)((function(e, n) { return t(e, n, i) })) : Ie.a, Lt(1), n ? gt(e) : Pt((function() { return new Rt.a }))) } }
        var ce = n(128);

        function le() { return function(t) { return t.lift(new he) } }
        var he = function() {
                function t() {}
                return t.prototype.call = function(t, e) { return e.subscribe(new de(t)) }, t
            }(),
            de = function(t) {
                function e() { return null !== t && t.apply(this, arguments) || this }
                return i.a(e, t), e.prototype._next = function(t) {}, e
            }(l.a);

        function fe() { return function(t) { return t.lift(new pe) } }
        var pe = function() {
                function t() {}
                return t.prototype.call = function(t, e) { return e.subscribe(new ve(t)) }, t
            }(),
            ve = function(t) {
                function e(e) { return t.call(this, e) || this }
                return i.a(e, t), e.prototype.notifyComplete = function(t) {
                    var e = this.destination;
                    e.next(t), e.complete()
                }, e.prototype._next = function(t) { this.notifyComplete(!1) }, e.prototype._complete = function() { this.notifyComplete(!0) }, e
            }(l.a);

        function ye(t) { return function(e) { return 0 === t ? Object(zt.b)() : e.lift(new be(t)) } }
        var be = function() {
                function t(t) { if (this.total = t, this.total < 0) throw new Dt.a }
                return t.prototype.call = function(t, e) { return e.subscribe(new me(t, this.total)) }, t
            }(),
            me = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.total = n, i.ring = new Array, i.count = 0, i }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e = this.ring,
                        n = this.total,
                        i = this.count++;
                    e.length < n ? e.push(t) : e[i % n] = t
                }, e.prototype._complete = function() {
                    var t = this.destination,
                        e = this.count;
                    if (e > 0)
                        for (var n = this.count >= this.total ? this.total : this.count, i = this.ring, r = 0; r < n; r++) {
                            var o = e++ % n;
                            t.next(i[o])
                        }
                    t.complete()
                }, e
            }(l.a);

        function we(t, e) { var n = arguments.length >= 2; return function(i) { return i.pipe(t ? Object(Nt.a)((function(e, n) { return t(e, n, i) })) : Ie.a, ye(1), n ? gt(e) : Pt((function() { return new Rt.a }))) } }

        function _e(t) { return function(e) { return e.lift(new ke(t)) } }
        var ke = function() {
                function t(t) { this.value = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new xe(t, this.value)) }, t
            }(),
            xe = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.value = n, i }
                return i.a(e, t), e.prototype._next = function(t) { this.destination.next(this.value) }, e
            }(l.a);

        function Oe() { return function(t) { return t.lift(new Ee) } }
        var Ee = function() {
                function t() {}
                return t.prototype.call = function(t, e) { return e.subscribe(new Te(t)) }, t
            }(),
            Te = function(t) {
                function e(e) { return t.call(this, e) || this }
                return i.a(e, t), e.prototype._next = function(t) { this.destination.next(Ct.a.createNext(t)) }, e.prototype._error = function(t) {
                    var e = this.destination;
                    e.next(Ct.a.createError(t)), e.complete()
                }, e.prototype._complete = function() {
                    var t = this.destination;
                    t.next(Ct.a.createComplete()), t.complete()
                }, e
            }(l.a);

        function Se(t, e) {
            var n = !1;
            return arguments.length >= 2 && (n = !0),
                function(i) { return i.lift(new De(t, e, n)) }
        }
        var De = function() {
                function t(t, e, n) { void 0 === n && (n = !1), this.accumulator = t, this.seed = e, this.hasSeed = n }
                return t.prototype.call = function(t, e) { return e.subscribe(new Ne(t, this.accumulator, this.seed, this.hasSeed)) }, t
            }(),
            Ne = function(t) {
                function e(e, n, i, r) { var o = t.call(this, e) || this; return o.accumulator = n, o._seed = i, o.hasSeed = r, o.index = 0, o }
                return i.a(e, t), Object.defineProperty(e.prototype, "seed", { get: function() { return this._seed }, set: function(t) { this.hasSeed = !0, this._seed = t }, enumerable: !0, configurable: !0 }), e.prototype._next = function(t) {
                    if (this.hasSeed) return this._tryNext(t);
                    this.seed = t, this.destination.next(t)
                }, e.prototype._tryNext = function(t) {
                    var e, n = this.index++;
                    try { e = this.accumulator(this.seed, t, n) } catch (t) { this.destination.error(t) }
                    this.seed = e, this.destination.next(e)
                }, e
            }(l.a),
            Re = n(66);

        function Pe(t, e) { return arguments.length >= 2 ? function(n) { return Object(Re.a)(Se(t, e), ye(1), gt(e))(n) } : function(e) { return Object(Re.a)(Se((function(e, n, i) { return t(e, n, i + 1) })), ye(1))(e) } }

        function Me(t) { return Pe("function" == typeof t ? function(e, n) { return t(e, n) > 0 ? e : n } : function(t, e) { return t > e ? t : e }) }
        var je = n(135);

        function Fe() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return function(e) { return e.lift.call(je.a.apply(void 0, [e].concat(t))) } }
        var ze = n(86);

        function Le(t, e, n) { return void 0 === n && (n = Number.POSITIVE_INFINITY), "function" == typeof e ? Object(H.b)((function() { return t }), e, n) : ("number" == typeof e && (n = e), Object(H.b)((function() { return t }), n)) }

        function Be(t, e, n) {
            return void 0 === n && (n = Number.POSITIVE_INFINITY),
                function(i) { return i.lift(new Ze(t, e, n)) }
        }
        var Ze = function() {
                function t(t, e, n) { this.accumulator = t, this.seed = e, this.concurrent = n }
                return t.prototype.call = function(t, e) { return e.subscribe(new Ve(t, this.accumulator, this.seed, this.concurrent)) }, t
            }(),
            Ve = function(t) {
                function e(e, n, i, r) { var o = t.call(this, e) || this; return o.accumulator = n, o.acc = i, o.concurrent = r, o.hasValue = !1, o.hasCompleted = !1, o.buffer = [], o.active = 0, o.index = 0, o }
                return i.a(e, t), e.prototype._next = function(t) {
                    if (this.active < this.concurrent) {
                        var e = this.index++,
                            n = this.destination,
                            i = void 0;
                        try { i = (0, this.accumulator)(this.acc, t, e) } catch (t) { return n.error(t) }
                        this.active++, this._innerSub(i)
                    } else this.buffer.push(t)
                }, e.prototype._innerSub = function(t) {
                    var e = new r.a(this),
                        n = this.destination;
                    n.add(e);
                    var i = Object(r.c)(t, e);
                    i !== e && n.add(i)
                }, e.prototype._complete = function() { this.hasCompleted = !0, 0 === this.active && 0 === this.buffer.length && (!1 === this.hasValue && this.destination.next(this.acc), this.destination.complete()), this.unsubscribe() }, e.prototype.notifyNext = function(t) {
                    var e = this.destination;
                    this.acc = t, this.hasValue = !0, e.next(t)
                }, e.prototype.notifyComplete = function() {
                    var t = this.buffer;
                    this.active--, t.length > 0 ? this._next(t.shift()) : 0 === this.active && this.hasCompleted && (!1 === this.hasValue && this.destination.next(this.acc), this.destination.complete())
                }, e
            }(r.b);

        function Ye(t) { return Pe("function" == typeof t ? function(e, n) { return t(e, n) < 0 ? e : n } : function(t, e) { return t < e ? t : e }) }
        var Ge = n(130);

        function Ue(t, e) { return function(n) { var i; if (i = "function" == typeof t ? t : function() { return t }, "function" == typeof e) return n.lift(new We(i, e)); var r = Object.create(n, Ge.b); return r.source = n, r.subjectFactory = i, r } }
        var We = function() {
                function t(t, e) { this.subjectFactory = t, this.selector = e }
                return t.prototype.call = function(t, e) {
                    var n = this.selector,
                        i = this.subjectFactory(),
                        r = n(i).subscribe(t);
                    return r.add(e.subscribe(i)), r
                }, t
            }(),
            He = n(132);

        function Ke() {
            for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
            return 1 === t.length && Object(Z.a)(t[0]) && (t = t[0]),
                function(e) { return e.lift(new Qe(t)) }
        }
        var Qe = function() {
                function t(t) { this.nextSources = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new Xe(t, this.nextSources)) }, t
            }(),
            Xe = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.destination = e, i.nextSources = n, i }
                return i.a(e, t), e.prototype.notifyError = function() { this.subscribeToNextSource() }, e.prototype.notifyComplete = function() { this.subscribeToNextSource() }, e.prototype._error = function(t) { this.subscribeToNextSource(), this.unsubscribe() }, e.prototype._complete = function() { this.subscribeToNextSource(), this.unsubscribe() }, e.prototype.subscribeToNextSource = function() {
                    var t = this.nextSources.shift();
                    if (t) {
                        var e = new r.a(this),
                            n = this.destination;
                        n.add(e);
                        var i = Object(r.c)(t, e);
                        i !== e && n.add(i)
                    } else this.destination.complete()
                }, e
            }(r.b);

        function qe() { return function(t) { return t.lift(new Je) } }
        var Je = function() {
                function t() {}
                return t.prototype.call = function(t, e) { return e.subscribe(new $e(t)) }, t
            }(),
            $e = function(t) {
                function e(e) { var n = t.call(this, e) || this; return n.hasPrev = !1, n }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e;
                    this.hasPrev ? e = [this.prev, t] : this.hasPrev = !0, this.prev = t, e && this.destination.next(e)
                }, e
            }(l.a),
            tn = n(148);

        function en(t, e) { return function(n) { return [Object(Nt.a)(t, e)(n), Object(Nt.a)(Object(tn.a)(t, e))(n)] } }

        function nn() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; var n = t.length; if (0 === n) throw new Error("list of properties cannot be empty."); return function(e) { return Object(qt.a)(rn(t, n))(e) } }

        function rn(t, e) {
            return function(n) {
                for (var i = n, r = 0; r < e; r++) {
                    var o = null != i ? i[t[r]] : void 0;
                    if (void 0 === o) return;
                    i = o
                }
                return i
            }
        }
        var on = n(8);

        function gn(t) { return t ? Ue((function() { return new on.a }), t) : Ue(new on.a) }
        var sn = n(131);

        function An(t) { return function(e) { return Ue(new sn.a(t))(e) } }
        var an = n(54);

        function Cn() { return function(t) { return Ue(new an.a)(t) } }
        var In = n(83);

        function un(t, e, n, i) {
            n && "function" != typeof n && (i = n);
            var r = "function" == typeof n ? n : void 0,
                o = new In.a(t, e, i);
            return function(t) { return Ue((function() { return o }), r)(t) }
        }
        var cn = n(136);

        function ln() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return function(e) { return 1 === t.length && Object(Z.a)(t[0]) && (t = t[0]), e.lift.call(cn.a.apply(void 0, [e].concat(t))) } }

        function hn(t) {
            return void 0 === t && (t = -1),
                function(e) { return 0 === t ? Object(zt.b)() : t < 0 ? e.lift(new dn(-1, e)) : e.lift(new dn(t - 1, e)) }
        }
        var dn = function() {
                function t(t, e) { this.count = t, this.source = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new fn(t, this.count, this.source)) }, t
            }(),
            fn = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.count = n, r.source = i, r }
                return i.a(e, t), e.prototype.complete = function() {
                    if (!this.isStopped) {
                        var e = this.source,
                            n = this.count;
                        if (0 === n) return t.prototype.complete.call(this);
                        n > -1 && (this.count = n - 1), e.subscribe(this._unsubscribeAndRecycle())
                    }
                }, e
            }(l.a);

        function pn(t) { return function(e) { return e.lift(new vn(t)) } }
        var vn = function() {
                function t(t) { this.notifier = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new yn(t, this.notifier, e)) }, t
            }(),
            yn = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.notifier = n, r.source = i, r.sourceIsBeingSubscribedTo = !0, r }
                return i.a(e, t), e.prototype.notifyNext = function() { this.sourceIsBeingSubscribedTo = !0, this.source.subscribe(this) }, e.prototype.notifyComplete = function() { if (!1 === this.sourceIsBeingSubscribedTo) return t.prototype.complete.call(this) }, e.prototype.complete = function() {
                    if (this.sourceIsBeingSubscribedTo = !1, !this.isStopped) {
                        if (this.retries || this.subscribeToRetries(), !this.retriesSubscription || this.retriesSubscription.closed) return t.prototype.complete.call(this);
                        this._unsubscribeAndRecycle(), this.notifications.next(void 0)
                    }
                }, e.prototype._unsubscribe = function() {
                    var t = this.notifications,
                        e = this.retriesSubscription;
                    t && (t.unsubscribe(), this.notifications = void 0), e && (e.unsubscribe(), this.retriesSubscription = void 0), this.retries = void 0
                }, e.prototype._unsubscribeAndRecycle = function() { var e = this._unsubscribe; return this._unsubscribe = null, t.prototype._unsubscribeAndRecycle.call(this), this._unsubscribe = e, this }, e.prototype.subscribeToRetries = function() {
                    var e;
                    this.notifications = new on.a;
                    try { e = (0, this.notifier)(this.notifications) } catch (e) { return t.prototype.complete.call(this) }
                    this.retries = e, this.retriesSubscription = Object(r.c)(e, new r.a(this))
                }, e
            }(r.b);

        function bn(t) {
            return void 0 === t && (t = -1),
                function(e) { return e.lift(new mn(t, e)) }
        }
        var mn = function() {
                function t(t, e) { this.count = t, this.source = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new wn(t, this.count, this.source)) }, t
            }(),
            wn = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.count = n, r.source = i, r }
                return i.a(e, t), e.prototype.error = function(e) {
                    if (!this.isStopped) {
                        var n = this.source,
                            i = this.count;
                        if (0 === i) return t.prototype.error.call(this, e);
                        i > -1 && (this.count = i - 1), n.subscribe(this._unsubscribeAndRecycle())
                    }
                }, e
            }(l.a);

        function _n(t) { return function(e) { return e.lift(new kn(t, e)) } }
        var kn = function() {
                function t(t, e) { this.notifier = t, this.source = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new xn(t, this.notifier, this.source)) }, t
            }(),
            xn = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.notifier = n, r.source = i, r }
                return i.a(e, t), e.prototype.error = function(e) {
                    if (!this.isStopped) {
                        var n = this.errors,
                            i = this.retries,
                            o = this.retriesSubscription;
                        if (i) this.errors = void 0, this.retriesSubscription = void 0;
                        else {
                            n = new on.a;
                            try { i = (0, this.notifier)(n) } catch (e) { return t.prototype.error.call(this, e) }
                            o = Object(r.c)(i, new r.a(this))
                        }
                        this._unsubscribeAndRecycle(), this.errors = n, this.retries = i, this.retriesSubscription = o, n.next(e)
                    }
                }, e.prototype._unsubscribe = function() {
                    var t = this.errors,
                        e = this.retriesSubscription;
                    t && (t.unsubscribe(), this.errors = void 0), e && (e.unsubscribe(), this.retriesSubscription = void 0), this.retries = void 0
                }, e.prototype.notifyNext = function() {
                    var t = this._unsubscribe;
                    this._unsubscribe = null, this._unsubscribeAndRecycle(), this._unsubscribe = t, this.source.subscribe(this)
                }, e
            }(r.b),
            On = n(82);

        function En(t) { return function(e) { return e.lift(new Tn(t)) } }
        var Tn = function() {
                function t(t) { this.notifier = t }
                return t.prototype.call = function(t, e) {
                    var n = new Sn(t),
                        i = e.subscribe(n);
                    return i.add(Object(r.c)(this.notifier, new r.a(n))), i
                }, t
            }(),
            Sn = function(t) {
                function e() { var e = null !== t && t.apply(this, arguments) || this; return e.hasValue = !1, e }
                return i.a(e, t), e.prototype._next = function(t) { this.value = t, this.hasValue = !0 }, e.prototype.notifyNext = function() { this.emitValue() }, e.prototype.notifyComplete = function() { this.emitValue() }, e.prototype.emitValue = function() { this.hasValue && (this.hasValue = !1, this.destination.next(this.value)) }, e
            }(r.b);

        function Dn(t, e) {
            return void 0 === e && (e = A.a),
                function(n) { return n.lift(new Nn(t, e)) }
        }
        var Nn = function() {
                function t(t, e) { this.period = t, this.scheduler = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new Rn(t, this.period, this.scheduler)) }, t
            }(),
            Rn = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.period = n, r.scheduler = i, r.hasValue = !1, r.add(i.schedule(Pn, n, { subscriber: r, period: n })), r }
                return i.a(e, t), e.prototype._next = function(t) { this.lastValue = t, this.hasValue = !0 }, e.prototype.notifyNext = function() { this.hasValue && (this.hasValue = !1, this.destination.next(this.lastValue)) }, e
            }(l.a);

        function Pn(t) {
            var e = t.subscriber,
                n = t.period;
            e.notifyNext(), this.schedule(t, n)
        }

        function Mn(t, e) { return function(n) { return n.lift(new jn(t, e)) } }
        var jn = function() {
                function t(t, e) { this.compareTo = t, this.comparator = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new Fn(t, this.compareTo, this.comparator)) }, t
            }(),
            Fn = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.compareTo = n, r.comparator = i, r._a = [], r._b = [], r._oneComplete = !1, r.destination.add(n.subscribe(new zn(e, r))), r }
                return i.a(e, t), e.prototype._next = function(t) { this._oneComplete && 0 === this._b.length ? this.emit(!1) : (this._a.push(t), this.checkValues()) }, e.prototype._complete = function() { this._oneComplete ? this.emit(0 === this._a.length && 0 === this._b.length) : this._oneComplete = !0, this.unsubscribe() }, e.prototype.checkValues = function() {
                    for (var t = this._a, e = this._b, n = this.comparator; t.length > 0 && e.length > 0;) {
                        var i = t.shift(),
                            r = e.shift(),
                            o = !1;
                        try { o = n ? n(i, r) : i === r } catch (t) { this.destination.error(t) }
                        o || this.emit(!1)
                    }
                }, e.prototype.emit = function(t) {
                    var e = this.destination;
                    e.next(t), e.complete()
                }, e.prototype.nextB = function(t) { this._oneComplete && 0 === this._a.length ? this.emit(!1) : (this._b.push(t), this.checkValues()) }, e.prototype.completeB = function() { this._oneComplete ? this.emit(0 === this._a.length && 0 === this._b.length) : this._oneComplete = !0 }, e
            }(l.a),
            zn = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.parent = n, i }
                return i.a(e, t), e.prototype._next = function(t) { this.parent.nextB(t) }, e.prototype._error = function(t) { this.parent.error(t), this.unsubscribe() }, e.prototype._complete = function() { this.parent.completeB(), this.unsubscribe() }, e
            }(l.a);

        function Ln() { return new on.a }

        function Bn() { return function(t) { return Object(On.a)()(Ue(Ln)(t)) } }

        function Zn(t, e, n) {
            var i;
            return i = t && "object" == typeof t ? t : { bufferSize: t, windowTime: e, refCount: !1, scheduler: n },
                function(t) {
                    return t.lift(function(t) {
                        var e, n, i = t.bufferSize,
                            r = void 0 === i ? Number.POSITIVE_INFINITY : i,
                            o = t.windowTime,
                            g = void 0 === o ? Number.POSITIVE_INFINITY : o,
                            s = t.refCount,
                            A = t.scheduler,
                            a = 0,
                            C = !1,
                            I = !1;
                        return function(t) {
                            var i;
                            a++, !e || C ? (C = !1, e = new In.a(r, g, A), i = e.subscribe(this), n = t.subscribe({ next: function(t) { e.next(t) }, error: function(t) { C = !0, e.error(t) }, complete: function() { I = !0, n = void 0, e.complete() } })) : i = e.subscribe(this), this.add((function() { a--, i.unsubscribe(), n && !I && s && 0 === a && (n.unsubscribe(), n = void 0, e = void 0) }))
                        }
                    }(i))
                }
        }

        function Vn(t) { return function(e) { return e.lift(new Yn(t, e)) } }
        var Yn = function() {
                function t(t, e) { this.predicate = t, this.source = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new Gn(t, this.predicate, this.source)) }, t
            }(),
            Gn = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.predicate = n, r.source = i, r.seenValue = !1, r.index = 0, r }
                return i.a(e, t), e.prototype.applySingleValue = function(t) { this.seenValue ? this.destination.error("Sequence contains more than one element") : (this.seenValue = !0, this.singleValue = t) }, e.prototype._next = function(t) {
                    var e = this.index++;
                    this.predicate ? this.tryNext(t, e) : this.applySingleValue(t)
                }, e.prototype.tryNext = function(t, e) { try { this.predicate(t, e, this.source) && this.applySingleValue(t) } catch (t) { this.destination.error(t) } }, e.prototype._complete = function() {
                    var t = this.destination;
                    this.index > 0 ? (t.next(this.seenValue ? this.singleValue : void 0), t.complete()) : t.error(new Rt.a)
                }, e
            }(l.a);

        function Un(t) { return function(e) { return e.lift(new Wn(t)) } }
        var Wn = function() {
                function t(t) { this.total = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new Hn(t, this.total)) }, t
            }(),
            Hn = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.total = n, i.count = 0, i }
                return i.a(e, t), e.prototype._next = function(t) {++this.count > this.total && this.destination.next(t) }, e
            }(l.a);

        function Kn(t) { return function(e) { return e.lift(new Qn(t)) } }
        var Qn = function() {
                function t(t) { if (this._skipCount = t, this._skipCount < 0) throw new Dt.a }
                return t.prototype.call = function(t, e) { return 0 === this._skipCount ? e.subscribe(new l.a(t)) : e.subscribe(new Xn(t, this._skipCount)) }, t
            }(),
            Xn = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i._skipCount = n, i._count = 0, i._ring = new Array(n), i }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e = this._skipCount,
                        n = this._count++;
                    if (n < e) this._ring[n] = t;
                    else {
                        var i = n % e,
                            r = this._ring,
                            o = r[i];
                        r[i] = t, this.destination.next(o)
                    }
                }, e
            }(l.a);

        function qn(t) { return function(e) { return e.lift(new Jn(t)) } }
        var Jn = function() {
                function t(t) { this.notifier = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new $n(t, this.notifier)) }, t
            }(),
            $n = function(t) {
                function e(e, n) {
                    var i = t.call(this, e) || this;
                    i.hasValue = !1;
                    var o = new r.a(i);
                    i.add(o), i.innerSubscription = o;
                    var g = Object(r.c)(n, o);
                    return g !== o && (i.add(g), i.innerSubscription = g), i
                }
                return i.a(e, t), e.prototype._next = function(e) { this.hasValue && t.prototype._next.call(this, e) }, e.prototype.notifyNext = function() { this.hasValue = !0, this.innerSubscription && this.innerSubscription.unsubscribe() }, e.prototype.notifyComplete = function() {}, e
            }(r.b);

        function ti(t) { return function(e) { return e.lift(new ei(t)) } }
        var ei = function() {
                function t(t) { this.predicate = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new ni(t, this.predicate)) }, t
            }(),
            ni = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.predicate = n, i.skipping = !0, i.index = 0, i }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e = this.destination;
                    this.skipping && this.tryCallPredicate(t), this.skipping || e.next(t)
                }, e.prototype.tryCallPredicate = function(t) {
                    try {
                        var e = this.predicate(t, this.index++);
                        this.skipping = Boolean(e)
                    } catch (t) { this.destination.error(t) }
                }, e
            }(l.a);

        function ii() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; var n = t[t.length - 1]; return Object(v.a)(n) ? (t.pop(), function(e) { return Object(G.a)(t, e, n) }) : function(e) { return Object(G.a)(t, e) } }
        var ri = n(67),
            oi = n(56),
            gi = function(t) {
                function e(e, n, i) { void 0 === n && (n = 0), void 0 === i && (i = ri.a); var r = t.call(this) || this; return r.source = e, r.delayTime = n, r.scheduler = i, (!Object(oi.a)(n) || n < 0) && (r.delayTime = 0), i && "function" == typeof i.schedule || (r.scheduler = ri.a), r }
                return i.a(e, t), e.create = function(t, n, i) { return void 0 === n && (n = 0), void 0 === i && (i = ri.a), new e(t, n, i) }, e.dispatch = function(t) {
                    var e = t.source,
                        n = t.subscriber;
                    return this.add(e.subscribe(n))
                }, e.prototype._subscribe = function(t) {
                    var n = this.delayTime,
                        i = this.source;
                    return this.scheduler.schedule(e.dispatch, n, { source: i, subscriber: t })
                }, e
            }(ht.a);

        function si(t, e) {
            return void 0 === e && (e = 0),
                function(n) { return n.lift(new Ai(t, e)) }
        }
        var Ai = function() {
            function t(t, e) { this.scheduler = t, this.delay = e }
            return t.prototype.call = function(t, e) { return new gi(e, this.delay, this.scheduler).subscribe(t) }, t
        }();

        function ai(t, e) { return "function" == typeof e ? function(n) { return n.pipe(ai((function(n, i) { return Object(V.a)(t(n, i)).pipe(Object(qt.a)((function(t, r) { return e(n, t, i, r) }))) }))) } : function(e) { return e.lift(new Ci(t)) } }
        var Ci = function() {
                function t(t) { this.project = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new Ii(t, this.project)) }, t
            }(),
            Ii = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.project = n, i.index = 0, i }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e, n = this.index++;
                    try { e = this.project(t, n) } catch (t) { return void this.destination.error(t) }
                    this._innerSub(e)
                }, e.prototype._innerSub = function(t) {
                    var e = this.innerSubscription;
                    e && e.unsubscribe();
                    var n = new r.a(this),
                        i = this.destination;
                    i.add(n), this.innerSubscription = Object(r.c)(t, n), this.innerSubscription !== n && i.add(this.innerSubscription)
                }, e.prototype._complete = function() {
                    var e = this.innerSubscription;
                    e && !e.closed || t.prototype._complete.call(this), this.unsubscribe()
                }, e.prototype._unsubscribe = function() { this.innerSubscription = void 0 }, e.prototype.notifyComplete = function() { this.innerSubscription = void 0, this.isStopped && t.prototype._complete.call(this) }, e.prototype.notifyNext = function(t) { this.destination.next(t) }, e
            }(r.b);

        function ui() { return ai(Ie.a) }

        function ci(t, e) { return e ? ai((function() { return t }), e) : ai((function() { return t })) }

        function li(t) { return function(e) { return e.lift(new hi(t)) } }
        var hi = function() {
                function t(t) { this.notifier = t }
                return t.prototype.call = function(t, e) {
                    var n = new di(t),
                        i = Object(r.c)(this.notifier, new r.a(n));
                    return i && !n.seenValue ? (n.add(i), e.subscribe(n)) : n
                }, t
            }(),
            di = function(t) {
                function e(e) { var n = t.call(this, e) || this; return n.seenValue = !1, n }
                return i.a(e, t), e.prototype.notifyNext = function() { this.seenValue = !0, this.complete() }, e.prototype.notifyComplete = function() {}, e
            }(r.b);

        function fi(t, e) {
            return void 0 === e && (e = !1),
                function(n) { return n.lift(new pi(t, e)) }
        }
        var pi = function() {
                function t(t, e) { this.predicate = t, this.inclusive = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new vi(t, this.predicate, this.inclusive)) }, t
            }(),
            vi = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.predicate = n, r.inclusive = i, r.index = 0, r }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e, n = this.destination;
                    try { e = this.predicate(t, this.index++) } catch (t) { return void n.error(t) }
                    this.nextOrComplete(t, e)
                }, e.prototype.nextOrComplete = function(t, e) {
                    var n = this.destination;
                    Boolean(e) ? n.next(t) : (this.inclusive && n.next(t), n.complete())
                }, e
            }(l.a),
            yi = n(35),
            bi = n(47);

        function mi(t, e, n) { return function(i) { return i.lift(new wi(t, e, n)) } }
        var wi = function() {
                function t(t, e, n) { this.nextOrObserver = t, this.error = e, this.complete = n }
                return t.prototype.call = function(t, e) { return e.subscribe(new _i(t, this.nextOrObserver, this.error, this.complete)) }, t
            }(),
            _i = function(t) {
                function e(e, n, i, r) { var o = t.call(this, e) || this; return o._tapNext = yi.a, o._tapError = yi.a, o._tapComplete = yi.a, o._tapError = i || yi.a, o._tapComplete = r || yi.a, Object(bi.a)(n) ? (o._context = o, o._tapNext = n) : n && (o._context = n, o._tapNext = n.next || yi.a, o._tapError = n.error || yi.a, o._tapComplete = n.complete || yi.a), o }
                return i.a(e, t), e.prototype._next = function(t) {
                    try { this._tapNext.call(this._context, t) } catch (t) { return void this.destination.error(t) }
                    this.destination.next(t)
                }, e.prototype._error = function(t) {
                    try { this._tapError.call(this._context, t) } catch (t) { return void this.destination.error(t) }
                    this.destination.error(t)
                }, e.prototype._complete = function() { try { this._tapComplete.call(this._context) } catch (t) { return void this.destination.error(t) } return this.destination.complete() }, e
            }(l.a),
            ki = { leading: !0, trailing: !1 };

        function xi(t, e) {
            return void 0 === e && (e = ki),
                function(n) { return n.lift(new Oi(t, !!e.leading, !!e.trailing)) }
        }
        var Oi = function() {
                function t(t, e, n) { this.durationSelector = t, this.leading = e, this.trailing = n }
                return t.prototype.call = function(t, e) { return e.subscribe(new Ei(t, this.durationSelector, this.leading, this.trailing)) }, t
            }(),
            Ei = function(t) {
                function e(e, n, i, r) { var o = t.call(this, e) || this; return o.destination = e, o.durationSelector = n, o._leading = i, o._trailing = r, o._hasValue = !1, o }
                return i.a(e, t), e.prototype._next = function(t) { this._hasValue = !0, this._sendValue = t, this._throttled || (this._leading ? this.send() : this.throttle(t)) }, e.prototype.send = function() {
                    var t = this._hasValue,
                        e = this._sendValue;
                    t && (this.destination.next(e), this.throttle(e)), this._hasValue = !1, this._sendValue = void 0
                }, e.prototype.throttle = function(t) {
                    var e = this.tryDurationSelector(t);
                    e && this.add(this._throttled = Object(r.c)(e, new r.a(this)))
                }, e.prototype.tryDurationSelector = function(t) { try { return this.durationSelector(t) } catch (t) { return this.destination.error(t), null } }, e.prototype.throttlingDone = function() {
                    var t = this._throttled,
                        e = this._trailing;
                    t && t.unsubscribe(), this._throttled = void 0, e && this.send()
                }, e.prototype.notifyNext = function() { this.throttlingDone() }, e.prototype.notifyComplete = function() { this.throttlingDone() }, e
            }(r.b);

        function Ti(t, e, n) {
            return void 0 === e && (e = A.a), void 0 === n && (n = ki),
                function(i) { return i.lift(new Si(t, e, n.leading, n.trailing)) }
        }
        var Si = function() {
                function t(t, e, n, i) { this.duration = t, this.scheduler = e, this.leading = n, this.trailing = i }
                return t.prototype.call = function(t, e) { return e.subscribe(new Di(t, this.duration, this.scheduler, this.leading, this.trailing)) }, t
            }(),
            Di = function(t) {
                function e(e, n, i, r, o) { var g = t.call(this, e) || this; return g.duration = n, g.scheduler = i, g.leading = r, g.trailing = o, g._hasTrailingValue = !1, g._trailingValue = null, g }
                return i.a(e, t), e.prototype._next = function(t) { this.throttled ? this.trailing && (this._trailingValue = t, this._hasTrailingValue = !0) : (this.add(this.throttled = this.scheduler.schedule(Ni, this.duration, { subscriber: this })), this.leading ? this.destination.next(t) : this.trailing && (this._trailingValue = t, this._hasTrailingValue = !0)) }, e.prototype._complete = function() { this._hasTrailingValue ? (this.destination.next(this._trailingValue), this.destination.complete()) : this.destination.complete() }, e.prototype.clearThrottle = function() {
                    var t = this.throttled;
                    t && (this.trailing && this._hasTrailingValue && (this.destination.next(this._trailingValue), this._trailingValue = null, this._hasTrailingValue = !1), t.unsubscribe(), this.remove(t), this.throttled = null)
                }, e
            }(l.a);

        function Ni(t) { t.subscriber.clearThrottle() }
        var Ri = n(87);

        function Pi(t) {
            return void 0 === t && (t = A.a),
                function(e) {
                    return Object(Ri.a)((function() {
                        return e.pipe(Se((function(e, n) { var i = e.current; return { value: n, current: t.now(), last: i } }), { current: t.now(), value: void 0, last: void 0 }), Object(qt.a)((function(t) {
                            var e = t.current,
                                n = t.last,
                                i = t.value;
                            return new Mi(i, e - n)
                        })))
                    }))
                }
        }
        var Mi = function() { return function(t, e) { this.value = t, this.interval = e } }(),
            ji = n(133);

        function Fi(t, e, n) {
            return void 0 === n && (n = A.a),
                function(i) {
                    var r = at(t),
                        o = r ? +t - n.now() : Math.abs(t);
                    return i.lift(new zi(o, r, e, n))
                }
        }
        var zi = function() {
                function t(t, e, n, i) { this.waitFor = t, this.absoluteTimeout = e, this.withObservable = n, this.scheduler = i }
                return t.prototype.call = function(t, e) { return e.subscribe(new Li(t, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler)) }, t
            }(),
            Li = function(t) {
                function e(e, n, i, r, o) { var g = t.call(this, e) || this; return g.absoluteTimeout = n, g.waitFor = i, g.withObservable = r, g.scheduler = o, g.scheduleTimeout(), g }
                return i.a(e, t), e.dispatchTimeout = function(t) {
                    var e = t.withObservable;
                    t._unsubscribeAndRecycle(), t.add(Object(r.c)(e, new r.a(t)))
                }, e.prototype.scheduleTimeout = function() {
                    var t = this.action;
                    t ? this.action = t.schedule(this, this.waitFor) : this.add(this.action = this.scheduler.schedule(e.dispatchTimeout, this.waitFor, this))
                }, e.prototype._next = function(e) { this.absoluteTimeout || this.scheduleTimeout(), t.prototype._next.call(this, e) }, e.prototype._unsubscribe = function() { this.action = void 0, this.scheduler = null, this.withObservable = null }, e
            }(r.b),
            Bi = n(84);

        function Zi(t, e) { return void 0 === e && (e = A.a), Fi(t, Object(Bi.a)(new ji.a), e) }

        function Vi(t) { return void 0 === t && (t = A.a), Object(qt.a)((function(e) { return new Yi(e, t.now()) })) }
        var Yi = function() { return function(t, e) { this.value = t, this.timestamp = e } }();

        function Gi(t, e, n) { return 0 === n ? [e] : (t.push(e), t) }

        function Ui() { return Pe(Gi, []) }

        function Wi(t) { return function(e) { return e.lift(new Hi(t)) } }
        var Hi = function() {
                function t(t) { this.windowBoundaries = t }
                return t.prototype.call = function(t, e) {
                    var n = new Ki(t),
                        i = e.subscribe(n);
                    return i.closed || n.add(Object(r.c)(this.windowBoundaries, new r.a(n))), i
                }, t
            }(),
            Ki = function(t) {
                function e(e) { var n = t.call(this, e) || this; return n.window = new on.a, e.next(n.window), n }
                return i.a(e, t), e.prototype.notifyNext = function() { this.openWindow() }, e.prototype.notifyError = function(t) { this._error(t) }, e.prototype.notifyComplete = function() { this._complete() }, e.prototype._next = function(t) { this.window.next(t) }, e.prototype._error = function(t) { this.window.error(t), this.destination.error(t) }, e.prototype._complete = function() { this.window.complete(), this.destination.complete() }, e.prototype._unsubscribe = function() { this.window = null }, e.prototype.openWindow = function() {
                    var t = this.window;
                    t && t.complete();
                    var e = this.destination,
                        n = this.window = new on.a;
                    e.next(n)
                }, e
            }(r.b);

        function Qi(t, e) {
            return void 0 === e && (e = 0),
                function(n) { return n.lift(new Xi(t, e)) }
        }
        var Xi = function() {
                function t(t, e) { this.windowSize = t, this.startWindowEvery = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new qi(t, this.windowSize, this.startWindowEvery)) }, t
            }(),
            qi = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.destination = e, r.windowSize = n, r.startWindowEvery = i, r.windows = [new on.a], r.count = 0, e.next(r.windows[0]), r }
                return i.a(e, t), e.prototype._next = function(t) {
                    for (var e = this.startWindowEvery > 0 ? this.startWindowEvery : this.windowSize, n = this.destination, i = this.windowSize, r = this.windows, o = r.length, g = 0; g < o && !this.closed; g++) r[g].next(t);
                    var s = this.count - i + 1;
                    if (s >= 0 && s % e == 0 && !this.closed && r.shift().complete(), ++this.count % e == 0 && !this.closed) {
                        var A = new on.a;
                        r.push(A), n.next(A)
                    }
                }, e.prototype._error = function(t) {
                    var e = this.windows;
                    if (e)
                        for (; e.length > 0 && !this.closed;) e.shift().error(t);
                    this.destination.error(t)
                }, e.prototype._complete = function() {
                    var t = this.windows;
                    if (t)
                        for (; t.length > 0 && !this.closed;) t.shift().complete();
                    this.destination.complete()
                }, e.prototype._unsubscribe = function() { this.count = 0, this.windows = null }, e
            }(l.a);

        function Ji(t) {
            var e = A.a,
                n = null,
                i = Number.POSITIVE_INFINITY;
            return Object(v.a)(arguments[3]) && (e = arguments[3]), Object(v.a)(arguments[2]) ? e = arguments[2] : Object(oi.a)(arguments[2]) && (i = Number(arguments[2])), Object(v.a)(arguments[1]) ? e = arguments[1] : Object(oi.a)(arguments[1]) && (n = Number(arguments[1])),
                function(r) { return r.lift(new $i(t, n, i, e)) }
        }
        var $i = function() {
                function t(t, e, n, i) { this.windowTimeSpan = t, this.windowCreationInterval = e, this.maxWindowSize = n, this.scheduler = i }
                return t.prototype.call = function(t, e) { return e.subscribe(new er(t, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler)) }, t
            }(),
            tr = function(t) {
                function e() { var e = null !== t && t.apply(this, arguments) || this; return e._numberOfNextedValues = 0, e }
                return i.a(e, t), e.prototype.next = function(e) { this._numberOfNextedValues++, t.prototype.next.call(this, e) }, Object.defineProperty(e.prototype, "numberOfNextedValues", { get: function() { return this._numberOfNextedValues }, enumerable: !0, configurable: !0 }), e
            }(on.a),
            er = function(t) {
                function e(e, n, i, r, o) {
                    var g = t.call(this, e) || this;
                    g.destination = e, g.windowTimeSpan = n, g.windowCreationInterval = i, g.maxWindowSize = r, g.scheduler = o, g.windows = [];
                    var s = g.openWindow();
                    if (null !== i && i >= 0) {
                        var A = { subscriber: g, window: s, context: null },
                            a = { windowTimeSpan: n, windowCreationInterval: i, subscriber: g, scheduler: o };
                        g.add(o.schedule(rr, n, A)), g.add(o.schedule(ir, i, a))
                    } else {
                        var C = { subscriber: g, window: s, windowTimeSpan: n };
                        g.add(o.schedule(nr, n, C))
                    }
                    return g
                }
                return i.a(e, t), e.prototype._next = function(t) {
                    for (var e = this.windows, n = e.length, i = 0; i < n; i++) {
                        var r = e[i];
                        r.closed || (r.next(t), r.numberOfNextedValues >= this.maxWindowSize && this.closeWindow(r))
                    }
                }, e.prototype._error = function(t) {
                    for (var e = this.windows; e.length > 0;) e.shift().error(t);
                    this.destination.error(t)
                }, e.prototype._complete = function() {
                    for (var t = this.windows; t.length > 0;) {
                        var e = t.shift();
                        e.closed || e.complete()
                    }
                    this.destination.complete()
                }, e.prototype.openWindow = function() { var t = new tr; return this.windows.push(t), this.destination.next(t), t }, e.prototype.closeWindow = function(t) {
                    t.complete();
                    var e = this.windows;
                    e.splice(e.indexOf(t), 1)
                }, e
            }(l.a);

        function nr(t) {
            var e = t.subscriber,
                n = t.windowTimeSpan,
                i = t.window;
            i && e.closeWindow(i), t.window = e.openWindow(), this.schedule(t, n)
        }

        function ir(t) {
            var e = t.windowTimeSpan,
                n = t.subscriber,
                i = t.scheduler,
                r = t.windowCreationInterval,
                o = n.openWindow(),
                g = { action: this, subscription: null },
                s = { subscriber: n, window: o, context: g };
            g.subscription = i.schedule(rr, e, s), this.add(g.subscription), this.schedule(t, r)
        }

        function rr(t) {
            var e = t.subscriber,
                n = t.window,
                i = t.context;
            i && i.action && i.subscription && i.action.remove(i.subscription), e.closeWindow(n)
        }

        function or(t, e) { return function(n) { return n.lift(new gr(t, e)) } }
        var gr = function() {
                function t(t, e) { this.openings = t, this.closingSelector = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new sr(t, this.openings, this.closingSelector)) }, t
            }(),
            sr = function(t) {
                function e(e, n, i) { var r = t.call(this, e) || this; return r.openings = n, r.closingSelector = i, r.contexts = [], r.add(r.openSubscription = Object(E.a)(r, n, n)), r }
                return i.a(e, t), e.prototype._next = function(t) {
                    var e = this.contexts;
                    if (e)
                        for (var n = e.length, i = 0; i < n; i++) e[i].window.next(t)
                }, e.prototype._error = function(e) {
                    var n = this.contexts;
                    if (this.contexts = null, n)
                        for (var i = n.length, r = -1; ++r < i;) {
                            var o = n[r];
                            o.window.error(e), o.subscription.unsubscribe()
                        }
                    t.prototype._error.call(this, e)
                }, e.prototype._complete = function() {
                    var e = this.contexts;
                    if (this.contexts = null, e)
                        for (var n = e.length, i = -1; ++i < n;) {
                            var r = e[i];
                            r.window.complete(), r.subscription.unsubscribe()
                        }
                    t.prototype._complete.call(this)
                }, e.prototype._unsubscribe = function() {
                    var t = this.contexts;
                    if (this.contexts = null, t)
                        for (var e = t.length, n = -1; ++n < e;) {
                            var i = t[n];
                            i.window.unsubscribe(), i.subscription.unsubscribe()
                        }
                }, e.prototype.notifyNext = function(t, e, n, i, r) {
                    if (t === this.openings) {
                        var o = void 0;
                        try { o = (0, this.closingSelector)(e) } catch (t) { return this.error(t) }
                        var g = new on.a,
                            s = new O.a,
                            A = { window: g, subscription: s };
                        this.contexts.push(A);
                        var a = Object(E.a)(this, o, A);
                        a.closed ? this.closeWindow(this.contexts.length - 1) : (a.context = A, s.add(a)), this.destination.next(g)
                    } else this.closeWindow(this.contexts.indexOf(t))
                }, e.prototype.notifyError = function(t) { this.error(t) }, e.prototype.notifyComplete = function(t) { t !== this.openSubscription && this.closeWindow(this.contexts.indexOf(t.context)) }, e.prototype.closeWindow = function(t) {
                    if (-1 !== t) {
                        var e = this.contexts,
                            n = e[t],
                            i = n.window,
                            r = n.subscription;
                        e.splice(t, 1), i.complete(), r.unsubscribe()
                    }
                }, e
            }(T.a);

        function Ar(t) { return function(e) { return e.lift(new ar(t)) } }
        var ar = function() {
                function t(t) { this.closingSelector = t }
                return t.prototype.call = function(t, e) { return e.subscribe(new Cr(t, this.closingSelector)) }, t
            }(),
            Cr = function(t) {
                function e(e, n) { var i = t.call(this, e) || this; return i.destination = e, i.closingSelector = n, i.openWindow(), i }
                return i.a(e, t), e.prototype.notifyNext = function(t, e, n, i, r) { this.openWindow(r) }, e.prototype.notifyError = function(t) { this._error(t) }, e.prototype.notifyComplete = function(t) { this.openWindow(t) }, e.prototype._next = function(t) { this.window.next(t) }, e.prototype._error = function(t) { this.window.error(t), this.destination.error(t), this.unsubscribeClosingNotification() }, e.prototype._complete = function() { this.window.complete(), this.destination.complete(), this.unsubscribeClosingNotification() }, e.prototype.unsubscribeClosingNotification = function() { this.closingNotification && this.closingNotification.unsubscribe() }, e.prototype.openWindow = function(t) {
                    void 0 === t && (t = null), t && (this.remove(t), t.unsubscribe());
                    var e = this.window;
                    e && e.complete();
                    var n, i = this.window = new on.a;
                    this.destination.next(i);
                    try { n = (0, this.closingSelector)() } catch (t) { return this.destination.error(t), void this.window.error(t) }
                    this.add(this.closingNotification = Object(E.a)(this, n))
                }, e
            }(T.a);

        function Ir() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return function(e) { var n; "function" == typeof t[t.length - 1] && (n = t.pop()); var i = t; return e.lift(new ur(i, n)) } }
        var ur = function() {
                function t(t, e) { this.observables = t, this.project = e }
                return t.prototype.call = function(t, e) { return e.subscribe(new cr(t, this.observables, this.project)) }, t
            }(),
            cr = function(t) {
                function e(e, n, i) {
                    var r = t.call(this, e) || this;
                    r.observables = n, r.project = i, r.toRespond = [];
                    var o = n.length;
                    r.values = new Array(o);
                    for (var g = 0; g < o; g++) r.toRespond.push(g);
                    for (g = 0; g < o; g++) {
                        var s = n[g];
                        r.add(Object(E.a)(r, s, void 0, g))
                    }
                    return r
                }
                return i.a(e, t), e.prototype.notifyNext = function(t, e, n) { this.values[n] = e; var i = this.toRespond; if (i.length > 0) { var r = i.indexOf(n); - 1 !== r && i.splice(r, 1) } }, e.prototype.notifyComplete = function() {}, e.prototype._next = function(t) {
                    if (0 === this.toRespond.length) {
                        var e = [t].concat(this.values);
                        this.project ? this._tryProject(e) : this.destination.next(e)
                    }
                }, e.prototype._tryProject = function(t) {
                    var e;
                    try { e = this.project.apply(this, t) } catch (t) { return void this.destination.error(t) }
                    this.destination.next(e)
                }, e
            }(T.a),
            lr = n(88);

        function hr() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return function(e) { return e.lift.call(lr.b.apply(void 0, [e].concat(t))) } }

        function dr(t) { return function(e) { return e.lift(new lr.a(t)) } }
    }, function(t, e, n) { t.exports = n(275) }, function(t, e, n) { t.exports = n(279) }, function(t, e, n) { t.exports = n(286) }, function(t, e, n) { t.exports = n(291) }, function(t, e, n) {
        var i = n(27),
            r = n(71),
            o = "".split;
        t.exports = i((function() { return !Object("z").propertyIsEnumerable(0) })) ? function(t) { return "String" == r(t) ? o.call(t, "") : Object(t) } : Object
    }, function(t, e, n) {
        var i = n(187),
            r = Function.toString;
        "function" != typeof i.inspectSource && (i.inspectSource = function(t) { return r.call(t) }), t.exports = i.inspectSource
    }, function(t, e, n) {
        var i = n(21),
            r = n(252),
            o = i["__core-js_shared__"] || r("__core-js_shared__", {});
        t.exports = o
    }, function(t, e, n) {
        var i = n(29),
            r = n(27),
            o = n(153);
        t.exports = !i && !r((function() { return 7 != Object.defineProperty(o("div"), "a", { get: function() { return 7 } }).a }))
    }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(253),
            o = n(157),
            g = n(197),
            s = n(78),
            A = n(49),
            a = n(98),
            C = n(22),
            I = n(74),
            u = n(72),
            c = n(191),
            l = c.IteratorPrototype,
            h = c.BUGGY_SAFARI_ITERATORS,
            d = C("iterator"),
            f = function() { return this };
        t.exports = function(t, e, n, C, c, p, v) {
            r(n, e, C);
            var y, b, m, w = function(t) {
                    if (t === c && E) return E;
                    if (!h && t in x) return x[t];
                    switch (t) {
                        case "keys":
                        case "values":
                        case "entries":
                            return function() { return new n(this, t) }
                    }
                    return function() { return new n(this) }
                },
                _ = e + " Iterator",
                k = !1,
                x = t.prototype,
                O = x[d] || x["@@iterator"] || c && x[c],
                E = !h && O || w(c),
                T = "Array" == e && x.entries || O;
            if (T && (y = o(T.call(new t)), l !== Object.prototype && y.next && (I || o(y) === l || (g ? g(y, l) : "function" != typeof y[d] && A(y, d, f)), s(y, _, !0, !0), I && (u[_] = f))), "values" == c && O && "values" !== O.name && (k = !0, E = function() { return O.call(this) }), I && !v || x[d] === E || A(x, d, E), u[e] = E, c)
                if (b = { values: w("values"), keys: p ? E : w("keys"), entries: w("entries") }, v)
                    for (m in b)(h || k || !(m in x)) && a(x, m, b[m]);
                else i({ target: e, proto: !0, forced: h || k }, b);
            return b
        }
    }, function(t, e, n) {
        var i = n(27),
            r = /#|\.prototype\./,
            o = function(t, e) { var n = s[g(t)]; return n == a || n != A && ("function" == typeof e ? i(e) : !!e) },
            g = o.normalize = function(t) { return String(t).replace(r, ".").toLowerCase() },
            s = o.data = {},
            A = o.NATIVE = "N",
            a = o.POLYFILL = "P";
        t.exports = o
    }, function(t, e, n) {
        "use strict";
        var i, r, o, g = n(157),
            s = n(49),
            A = n(44),
            a = n(22),
            C = n(74),
            I = a("iterator"),
            u = !1;
        [].keys && ("next" in (o = [].keys()) ? (r = g(g(o))) !== Object.prototype && (i = r) : u = !0), null == i && (i = {}), C || A(i, I) || s(i, I, (function() { return this })), t.exports = { IteratorPrototype: i, BUGGY_SAFARI_ITERATORS: u }
    }, function(t, e, n) {
        var i = n(158);
        t.exports = i && !Symbol.sham && "symbol" == typeof Symbol.iterator
    }, function(t, e, n) {
        var i = n(29),
            r = n(57),
            o = n(43),
            g = n(113);
        t.exports = i ? Object.defineProperties : function(t, e) { o(t); for (var n, i = g(e), s = i.length, A = 0; s > A;) r.f(t, n = i[A++], e[n]); return t }
    }, function(t, e, n) {
        var i = n(44),
            r = n(48),
            o = n(255).indexOf,
            g = n(112);
        t.exports = function(t, e) {
            var n, s = r(t),
                A = 0,
                a = [];
            for (n in s) !i(g, n) && i(s, n) && a.push(n);
            for (; e.length > A;) i(s, n = e[A++]) && (~o(a, n) || a.push(n));
            return a
        }
    }, function(t, e, n) {
        var i = n(160),
            r = Math.max,
            o = Math.min;
        t.exports = function(t, e) { var n = i(t); return n < 0 ? r(n + e, 0) : o(n, e) }
    }, function(t, e, n) {
        var i = n(62);
        t.exports = i("document", "documentElement")
    }, function(t, e, n) {
        var i = n(43),
            r = n(257);
        t.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() {
            var t, e = !1,
                n = {};
            try {
                (t = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(n, []), e = n instanceof Array
            } catch (t) {}
            return function(n, o) { return i(n), r(o), e ? t.call(n, o) : n.__proto__ = o, n }
        }() : void 0)
    }, function(t, e, n) {
        var i = n(43);
        t.exports = function(t, e, n, r) { try { return r ? e(i(n)[0], n[1]) : e(n) } catch (e) { var o = t.return; throw void 0 !== o && i(o.call(t)), e } }
    }, function(t, e, n) {
        var i = n(22),
            r = n(72),
            o = i("iterator"),
            g = Array.prototype;
        t.exports = function(t) { return void 0 !== t && (r.Array === t || g[o] === t) }
    }, function(t, e, n) {
        var i = n(22)("iterator"),
            r = !1;
        try {
            var o = 0,
                g = { next: function() { return { done: !!o++ } }, return: function() { r = !0 } };
            g[i] = function() { return this }, Array.from(g, (function() { throw 2 }))
        } catch (t) {}
        t.exports = function(t, e) {
            if (!e && !r) return !1;
            var n = !1;
            try {
                var o = {};
                o[i] = function() { return { next: function() { return { done: n = !0 } } } }, t(o)
            } catch (t) {}
            return n
        }
    }, function(t, e, n) {
        n(271);
        var i = n(23).Object,
            r = t.exports = function(t, e, n) { return i.defineProperty(t, e, n) };
        i.defineProperty.sham && (r.sham = !0)
    }, function(t, e) { e.f = Object.getOwnPropertySymbols }, function(t, e, n) {
        var i = n(42),
            r = n(100),
            o = n(22)("species");
        t.exports = function(t, e) { var n; return r(t) && ("function" != typeof(n = t.constructor) || n !== Array && !r(n.prototype) ? i(n) && null === (n = n[o]) && (n = void 0) : n = void 0), new(void 0 === n ? Array : n)(0 === e ? 0 : e) }
    }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(21),
            o = n(62),
            g = n(74),
            s = n(29),
            A = n(158),
            a = n(192),
            C = n(27),
            I = n(44),
            u = n(100),
            c = n(42),
            l = n(43),
            h = n(76),
            d = n(48),
            f = n(110),
            p = n(73),
            v = n(159),
            y = n(113),
            b = n(165),
            m = n(288),
            w = n(202),
            _ = n(96),
            k = n(57),
            x = n(156),
            O = n(49),
            E = n(98),
            T = n(154),
            S = n(111),
            D = n(112),
            N = n(155),
            R = n(22),
            P = n(166),
            M = n(20),
            j = n(78),
            F = n(95),
            z = n(119).forEach,
            L = S("hidden"),
            B = R("toPrimitive"),
            Z = F.set,
            V = F.getterFor("Symbol"),
            Y = Object.prototype,
            G = r.Symbol,
            U = o("JSON", "stringify"),
            W = _.f,
            H = k.f,
            K = m.f,
            Q = x.f,
            X = T("symbols"),
            q = T("op-symbols"),
            J = T("string-to-symbol-registry"),
            $ = T("symbol-to-string-registry"),
            tt = T("wks"),
            et = r.QObject,
            nt = !et || !et.prototype || !et.prototype.findChild,
            it = s && C((function() { return 7 != v(H({}, "a", { get: function() { return H(this, "a", { value: 7 }).a } })).a })) ? function(t, e, n) {
                var i = W(Y, e);
                i && delete Y[e], H(t, e, n), i && t !== Y && H(Y, e, i)
            } : H,
            rt = function(t, e) { var n = X[t] = v(G.prototype); return Z(n, { type: "Symbol", tag: t, description: e }), s || (n.description = e), n },
            ot = a ? function(t) { return "symbol" == typeof t } : function(t) { return Object(t) instanceof G },
            gt = function(t, e, n) { t === Y && gt(q, e, n), l(t); var i = f(e, !0); return l(n), I(X, i) ? (n.enumerable ? (I(t, L) && t[L][i] && (t[L][i] = !1), n = v(n, { enumerable: p(0, !1) })) : (I(t, L) || H(t, L, p(1, {})), t[L][i] = !0), it(t, i, n)) : H(t, i, n) },
            st = function(t, e) {
                l(t);
                var n = d(e),
                    i = y(n).concat(It(n));
                return z(i, (function(e) { s && !At.call(n, e) || gt(t, e, n[e]) })), t
            },
            At = function(t) {
                var e = f(t, !0),
                    n = Q.call(this, e);
                return !(this === Y && I(X, e) && !I(q, e)) && (!(n || !I(this, e) || !I(X, e) || I(this, L) && this[L][e]) || n)
            },
            at = function(t, e) {
                var n = d(t),
                    i = f(e, !0);
                if (n !== Y || !I(X, i) || I(q, i)) { var r = W(n, i); return !r || !I(X, i) || I(n, L) && n[L][i] || (r.enumerable = !0), r }
            },
            Ct = function(t) {
                var e = K(d(t)),
                    n = [];
                return z(e, (function(t) { I(X, t) || I(D, t) || n.push(t) })), n
            },
            It = function(t) {
                var e = t === Y,
                    n = K(e ? q : d(t)),
                    i = [];
                return z(n, (function(t) {!I(X, t) || e && !I(Y, t) || i.push(X[t]) })), i
            };
        (A || (E((G = function() {
            if (this instanceof G) throw TypeError("Symbol is not a constructor");
            var t = arguments.length && void 0 !== arguments[0] ? String(arguments[0]) : void 0,
                e = N(t),
                n = function(t) { this === Y && n.call(q, t), I(this, L) && I(this[L], e) && (this[L][e] = !1), it(this, e, p(1, t)) };
            return s && nt && it(Y, e, { configurable: !0, set: n }), rt(e, t)
        }).prototype, "toString", (function() { return V(this).tag })), E(G, "withoutSetter", (function(t) { return rt(N(t), t) })), x.f = At, k.f = gt, _.f = at, b.f = m.f = Ct, w.f = It, P.f = function(t) { return rt(R(t), t) }, s && (H(G.prototype, "description", { configurable: !0, get: function() { return V(this).description } }), g || E(Y, "propertyIsEnumerable", At, { unsafe: !0 }))), i({ global: !0, wrap: !0, forced: !A, sham: !A }, { Symbol: G }), z(y(tt), (function(t) { M(t) })), i({ target: "Symbol", stat: !0, forced: !A }, { for: function(t) { var e = String(t); if (I(J, e)) return J[e]; var n = G(e); return J[e] = n, $[n] = e, n }, keyFor: function(t) { if (!ot(t)) throw TypeError(t + " is not a symbol"); if (I($, t)) return $[t] }, useSetter: function() { nt = !0 }, useSimple: function() { nt = !1 } }), i({ target: "Object", stat: !0, forced: !A, sham: !s }, { create: function(t, e) { return void 0 === e ? v(t) : st(v(t), e) }, defineProperty: gt, defineProperties: st, getOwnPropertyDescriptor: at }), i({ target: "Object", stat: !0, forced: !A }, { getOwnPropertyNames: Ct, getOwnPropertySymbols: It }), i({ target: "Object", stat: !0, forced: C((function() { w.f(1) })) }, { getOwnPropertySymbols: function(t) { return w.f(h(t)) } }), U) && i({ target: "JSON", stat: !0, forced: !A || C((function() { var t = G(); return "[null]" != U([t]) || "{}" != U({ a: t }) || "{}" != U(Object(t)) })) }, { stringify: function(t, e, n) { for (var i, r = [t], o = 1; arguments.length > o;) r.push(arguments[o++]); if (i = e, (c(e) || void 0 !== t) && !ot(t)) return u(e) || (e = function(t, e) { if ("function" == typeof i && (e = i.call(this, t, e)), !ot(e)) return e }), r[1] = e, U.apply(null, r) } });
        G.prototype[B] || O(G.prototype, B, G.prototype.valueOf), j(G, "Symbol"), D[L] = !0
    }, function(t, e, n) {
        n(206), n(99), n(94), n(292), n(212), n(298);
        var i = n(23);
        t.exports = i.Promise
    }, function(t, e) {}, function(t, e, n) {
        var i = n(21);
        t.exports = i.Promise
    }, function(t, e, n) {
        var i = n(43),
            r = n(75),
            o = n(22)("species");
        t.exports = function(t, e) { var n, g = i(t).constructor; return void 0 === g || null == (n = i(g)[o]) ? e : r(n) }
    }, function(t, e, n) {
        var i, r, o, g = n(21),
            s = n(27),
            A = n(71),
            a = n(97),
            C = n(196),
            I = n(153),
            u = n(210),
            c = g.location,
            l = g.setImmediate,
            h = g.clearImmediate,
            d = g.process,
            f = g.MessageChannel,
            p = g.Dispatch,
            v = 0,
            y = {},
            b = function(t) {
                if (y.hasOwnProperty(t)) {
                    var e = y[t];
                    delete y[t], e()
                }
            },
            m = function(t) { return function() { b(t) } },
            w = function(t) { b(t.data) },
            _ = function(t) { g.postMessage(t + "", c.protocol + "//" + c.host) };
        l && h || (l = function(t) {
            for (var e = [], n = 1; arguments.length > n;) e.push(arguments[n++]);
            return y[++v] = function() {
                ("function" == typeof t ? t : Function(t)).apply(void 0, e)
            }, i(v), v
        }, h = function(t) { delete y[t] }, "process" == A(d) ? i = function(t) { d.nextTick(m(t)) } : p && p.now ? i = function(t) { p.now(m(t)) } : f && !u ? (o = (r = new f).port2, r.port1.onmessage = w, i = a(o.postMessage, o, 1)) : !g.addEventListener || "function" != typeof postMessage || g.importScripts || s(_) || "file:" === c.protocol ? i = "onreadystatechange" in I("script") ? function(t) { C.appendChild(I("script")).onreadystatechange = function() { C.removeChild(this), b(t) } } : function(t) { setTimeout(m(t), 0) } : (i = _, g.addEventListener("message", w, !1))), t.exports = { set: l, clear: h }
    }, function(t, e, n) {
        var i = n(164);
        t.exports = /(iphone|ipod|ipad).*applewebkit/i.test(i)
    }, function(t, e, n) {
        var i = n(43),
            r = n(42),
            o = n(102);
        t.exports = function(t, e) { if (i(t), r(e) && e.constructor === t) return e; var n = o.f(t); return (0, n.resolve)(e), n.promise }
    }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(75),
            o = n(102),
            g = n(121),
            s = n(120);
        i({ target: "Promise", stat: !0 }, {
            allSettled: function(t) {
                var e = this,
                    n = o.f(e),
                    i = n.resolve,
                    A = n.reject,
                    a = g((function() {
                        var n = r(e.resolve),
                            o = [],
                            g = 0,
                            A = 1;
                        s(t, (function(t) {
                            var r = g++,
                                s = !1;
                            o.push(void 0), A++, n.call(e, t).then((function(t) { s || (s = !0, o[r] = { status: "fulfilled", value: t }, --A || i(o)) }), (function(t) { s || (s = !0, o[r] = { status: "rejected", reason: t }, --A || i(o)) }))
                        })), --A || i(o)
                    }));
                return a.error && A(a.value), n.promise
            }
        })
    }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(27),
            o = n(100),
            g = n(42),
            s = n(76),
            A = n(77),
            a = n(116),
            C = n(203),
            I = n(117),
            u = n(22),
            c = n(163),
            l = u("isConcatSpreadable"),
            h = c >= 51 || !r((function() { var t = []; return t[l] = !1, t.concat()[0] !== t })),
            d = I("concat"),
            f = function(t) { if (!g(t)) return !1; var e = t[l]; return void 0 !== e ? !!e : o(t) };
        i({ target: "Array", proto: !0, forced: !h || !d }, {
            concat: function(t) {
                var e, n, i, r, o, g = s(this),
                    I = C(g, 0),
                    u = 0;
                for (e = -1, i = arguments.length; e < i; e++)
                    if (f(o = -1 === e ? g : arguments[e])) { if (u + (r = A(o.length)) > 9007199254740991) throw TypeError("Maximum allowed index exceeded"); for (n = 0; n < r; n++, u++) n in o && a(I, u, o[n]) } else {
                        if (u >= 9007199254740991) throw TypeError("Maximum allowed index exceeded");
                        a(I, u++, o)
                    }
                return I.length = u, I
            }
        })
    }, function(t, e, n) {
        var i = function(t) {
            "use strict";
            var e = Object.prototype,
                n = e.hasOwnProperty,
                i = "function" == typeof Symbol ? Symbol : {},
                r = i.iterator || "@@iterator",
                o = i.asyncIterator || "@@asyncIterator",
                g = i.toStringTag || "@@toStringTag";

            function s(t, e, n) { return Object.defineProperty(t, e, { value: n, enumerable: !0, configurable: !0, writable: !0 }), t[e] }
            try { s({}, "") } catch (t) { s = function(t, e, n) { return t[e] = n } }

            function A(t, e, n, i) {
                var r = e && e.prototype instanceof I ? e : I,
                    o = Object.create(r.prototype),
                    g = new w(i || []);
                return o._invoke = function(t, e, n) {
                    var i = "suspendedStart";
                    return function(r, o) {
                        if ("executing" === i) throw new Error("Generator is already running");
                        if ("completed" === i) { if ("throw" === r) throw o; return k() }
                        for (n.method = r, n.arg = o;;) {
                            var g = n.delegate;
                            if (g) { var s = y(g, n); if (s) { if (s === C) continue; return s } }
                            if ("next" === n.method) n.sent = n._sent = n.arg;
                            else if ("throw" === n.method) {
                                if ("suspendedStart" === i) throw i = "completed", n.arg;
                                n.dispatchException(n.arg)
                            } else "return" === n.method && n.abrupt("return", n.arg);
                            i = "executing";
                            var A = a(t, e, n);
                            if ("normal" === A.type) { if (i = n.done ? "completed" : "suspendedYield", A.arg === C) continue; return { value: A.arg, done: n.done } }
                            "throw" === A.type && (i = "completed", n.method = "throw", n.arg = A.arg)
                        }
                    }
                }(t, n, g), o
            }

            function a(t, e, n) { try { return { type: "normal", arg: t.call(e, n) } } catch (t) { return { type: "throw", arg: t } } }
            t.wrap = A;
            var C = {};

            function I() {}

            function u() {}

            function c() {}
            var l = {};
            l[r] = function() { return this };
            var h = Object.getPrototypeOf,
                d = h && h(h(_([])));
            d && d !== e && n.call(d, r) && (l = d);
            var f = c.prototype = I.prototype = Object.create(l);

            function p(t) {
                ["next", "throw", "return"].forEach((function(e) { s(t, e, (function(t) { return this._invoke(e, t) })) }))
            }

            function v(t, e) {
                var i;
                this._invoke = function(r, o) {
                    function g() {
                        return new e((function(i, g) {
                            ! function i(r, o, g, s) {
                                var A = a(t[r], t, o);
                                if ("throw" !== A.type) {
                                    var C = A.arg,
                                        I = C.value;
                                    return I && "object" == typeof I && n.call(I, "__await") ? e.resolve(I.__await).then((function(t) { i("next", t, g, s) }), (function(t) { i("throw", t, g, s) })) : e.resolve(I).then((function(t) { C.value = t, g(C) }), (function(t) { return i("throw", t, g, s) }))
                                }
                                s(A.arg)
                            }(r, o, i, g)
                        }))
                    }
                    return i = i ? i.then(g, g) : g()
                }
            }

            function y(t, e) {
                var n = t.iterator[e.method];
                if (void 0 === n) {
                    if (e.delegate = null, "throw" === e.method) {
                        if (t.iterator.return && (e.method = "return", e.arg = void 0, y(t, e), "throw" === e.method)) return C;
                        e.method = "throw", e.arg = new TypeError("The iterator does not provide a 'throw' method")
                    }
                    return C
                }
                var i = a(n, t.iterator, e.arg);
                if ("throw" === i.type) return e.method = "throw", e.arg = i.arg, e.delegate = null, C;
                var r = i.arg;
                return r ? r.done ? (e[t.resultName] = r.value, e.next = t.nextLoc, "return" !== e.method && (e.method = "next", e.arg = void 0), e.delegate = null, C) : r : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, C)
            }

            function b(t) {
                var e = { tryLoc: t[0] };
                1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e)
            }

            function m(t) {
                var e = t.completion || {};
                e.type = "normal", delete e.arg, t.completion = e
            }

            function w(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(b, this), this.reset(!0) }

            function _(t) {
                if (t) {
                    var e = t[r];
                    if (e) return e.call(t);
                    if ("function" == typeof t.next) return t;
                    if (!isNaN(t.length)) {
                        var i = -1,
                            o = function e() {
                                for (; ++i < t.length;)
                                    if (n.call(t, i)) return e.value = t[i], e.done = !1, e;
                                return e.value = void 0, e.done = !0, e
                            };
                        return o.next = o
                    }
                }
                return { next: k }
            }

            function k() { return { value: void 0, done: !0 } }
            return u.prototype = f.constructor = c, c.constructor = u, u.displayName = s(c, g, "GeneratorFunction"), t.isGeneratorFunction = function(t) { var e = "function" == typeof t && t.constructor; return !!e && (e === u || "GeneratorFunction" === (e.displayName || e.name)) }, t.mark = function(t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, c) : (t.__proto__ = c, s(t, g, "GeneratorFunction")), t.prototype = Object.create(f), t }, t.awrap = function(t) { return { __await: t } }, p(v.prototype), v.prototype[o] = function() { return this }, t.AsyncIterator = v, t.async = function(e, n, i, r, o) { void 0 === o && (o = Promise); var g = new v(A(e, n, i, r), o); return t.isGeneratorFunction(n) ? g : g.next().then((function(t) { return t.done ? t.value : g.next() })) }, p(f), s(f, g, "Generator"), f[r] = function() { return this }, f.toString = function() { return "[object Generator]" }, t.keys = function(t) {
                var e = [];
                for (var n in t) e.push(n);
                return e.reverse(),
                    function n() { for (; e.length;) { var i = e.pop(); if (i in t) return n.value = i, n.done = !1, n } return n.done = !0, n }
            }, t.values = _, w.prototype = {
                constructor: w,
                reset: function(t) {
                    if (this.prev = 0, this.next = 0, this.sent = this._sent = void 0, this.done = !1, this.delegate = null, this.method = "next", this.arg = void 0, this.tryEntries.forEach(m), !t)
                        for (var e in this) "t" === e.charAt(0) && n.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = void 0)
                },
                stop: function() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval },
                dispatchException: function(t) {
                    if (this.done) throw t;
                    var e = this;

                    function i(n, i) { return g.type = "throw", g.arg = t, e.next = n, i && (e.method = "next", e.arg = void 0), !!i }
                    for (var r = this.tryEntries.length - 1; r >= 0; --r) {
                        var o = this.tryEntries[r],
                            g = o.completion;
                        if ("root" === o.tryLoc) return i("end");
                        if (o.tryLoc <= this.prev) {
                            var s = n.call(o, "catchLoc"),
                                A = n.call(o, "finallyLoc");
                            if (s && A) { if (this.prev < o.catchLoc) return i(o.catchLoc, !0); if (this.prev < o.finallyLoc) return i(o.finallyLoc) } else if (s) { if (this.prev < o.catchLoc) return i(o.catchLoc, !0) } else { if (!A) throw new Error("try statement without catch or finally"); if (this.prev < o.finallyLoc) return i(o.finallyLoc) }
                        }
                    }
                },
                abrupt: function(t, e) {
                    for (var i = this.tryEntries.length - 1; i >= 0; --i) { var r = this.tryEntries[i]; if (r.tryLoc <= this.prev && n.call(r, "finallyLoc") && this.prev < r.finallyLoc) { var o = r; break } }
                    o && ("break" === t || "continue" === t) && o.tryLoc <= e && e <= o.finallyLoc && (o = null);
                    var g = o ? o.completion : {};
                    return g.type = t, g.arg = e, o ? (this.method = "next", this.next = o.finallyLoc, C) : this.complete(g)
                },
                complete: function(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), C },
                finish: function(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var n = this.tryEntries[e]; if (n.finallyLoc === t) return this.complete(n.completion, n.afterLoc), m(n), C } },
                catch: function(t) {
                    for (var e = this.tryEntries.length - 1; e >= 0; --e) {
                        var n = this.tryEntries[e];
                        if (n.tryLoc === t) {
                            var i = n.completion;
                            if ("throw" === i.type) {
                                var r = i.arg;
                                m(n)
                            }
                            return r
                        }
                    }
                    throw new Error("illegal catch attempt")
                },
                delegateYield: function(t, e, n) { return this.delegate = { iterator: _(t), resultName: e, nextLoc: n }, "next" === this.method && (this.arg = void 0), C }
            }, t
        }(t.exports);
        try { regeneratorRuntime = i } catch (t) { Function("r", "regeneratorRuntime = r")(i) }
    }, function(t, e, n) { n(20)("iterator") }, function(t, e, n) {
        n(213), n(206), n(204), n(318), n(319), n(320), n(321), n(215), n(322), n(323), n(324), n(325), n(326), n(327), n(328), n(329), n(330), n(331), n(332);
        var i = n(23);
        t.exports = i.Symbol
    }, function(t, e, n) { t.exports = n(353) }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.isNode = function(t) { return s(t, "__isNode__") }, e.isRelationship = function(t) { return s(t, "__isRelationship__") }, e.isUnboundRelationship = function(t) { return s(t, UNBOUNT_RELATIONSHIP_IDENTIFIER_PROPERTY) }, e.isPath = function(t) { return s(t, "__isPath__") }, e.isPathSegment = function(t) { return s(t, "__isPathSegment__") }, e.PathSegment = e.Path = e.UnboundRelationship = e.Relationship = e.Node = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = { value: !0, enumerable: !1, configurable: !1, writable: !1 };

        function s(t, e) { return !0 === (t && t[e]) }
        var A = function() {
            function t(e, n, i) {
                (0, r.default)(this, t), this.identity = e, this.labels = n, this.properties = i
            }
            return (0, o.default)(t, [{
                key: "toString",
                value: function() {
                    for (var t = "(" + this.identity, e = 0; e < this.labels.length; e++) t += ":" + this.labels[e];
                    var n = Object.keys(this.properties);
                    if (n.length > 0) {
                        t += " {";
                        for (var i = 0; i < n.length; i++) i > 0 && (t += ","), t += n[i] + ":" + JSON.stringify(this.properties[n[i]]);
                        t += "}"
                    }
                    return t += ")"
                }
            }]), t
        }();
        e.Node = A, Object.defineProperty(A.prototype, "__isNode__", g);
        var a = function() {
            function t(e, n, i, o, g) {
                (0, r.default)(this, t), this.identity = e, this.start = n, this.end = i, this.type = o, this.properties = g
            }
            return (0, o.default)(t, [{
                key: "toString",
                value: function() {
                    var t = "(" + this.start + ")-[:" + this.type,
                        e = Object.keys(this.properties);
                    if (e.length > 0) {
                        t += " {";
                        for (var n = 0; n < e.length; n++) n > 0 && (t += ","), t += e[n] + ":" + JSON.stringify(this.properties[e[n]]);
                        t += "}"
                    }
                    return t += "]->(" + this.end + ")"
                }
            }]), t
        }();
        e.Relationship = a, Object.defineProperty(a.prototype, "__isRelationship__", g);
        var C = function() {
            function t(e, n, i) {
                (0, r.default)(this, t), this.identity = e, this.type = n, this.properties = i
            }
            return (0, o.default)(t, [{ key: "bind", value: function(t, e) { return new a(this.identity, t, e, this.type, this.properties) } }, {
                key: "toString",
                value: function() {
                    var t = "-[:" + this.type,
                        e = Object.keys(this.properties);
                    if (e.length > 0) {
                        t += " {";
                        for (var n = 0; n < e.length; n++) n > 0 && (t += ","), t += e[n] + ":" + JSON.stringify(this.properties[e[n]]);
                        t += "}"
                    }
                    return t += "]->"
                }
            }]), t
        }();
        e.UnboundRelationship = C, Object.defineProperty(C.prototype, "__isUnboundRelationship__", g);
        var I = function t(e, n, i) {
            (0, r.default)(this, t), this.start = e, this.relationship = n, this.end = i
        };
        e.PathSegment = I, Object.defineProperty(I.prototype, "__isPathSegment__", g);
        var u = function t(e, n, i) {
            (0, r.default)(this, t), this.start = e, this.end = n, this.segments = i, this.length = i.length
        };
        e.Path = u, Object.defineProperty(u.prototype, "__isPath__", g)
    }, function(t, e) { t.exports = function(t, e, n) { return e in t ? Object.defineProperty(t, e, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : t[e] = n, t } }, function(t, e, n) {
        var i = n(359);

        function r(e, n, o) { return "undefined" != typeof Reflect && Reflect.get ? t.exports = r = Reflect.get : t.exports = r = function(t, e, n) { var r = i(t, e); if (r) { var o = Object.getOwnPropertyDescriptor(r, e); return o.get ? o.get.call(n) : o.value } }, r(e, n, o || e) }
        t.exports = r
    }, function(t, e, n) {
        var i = n(360),
            r = n(361),
            o = n(222),
            g = n(362);
        t.exports = function(t, e) { return i(t) || r(t, e) || o(t, e) || g() }
    }, function(t, e, n) {
        var i = n(223);
        t.exports = function(t, e) { if (t) { if ("string" == typeof t) return i(t, e); var n = Object.prototype.toString.call(t).slice(8, -1); return "Object" === n && t.constructor && (n = t.constructor.name), "Map" === n || "Set" === n ? Array.from(t) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? i(t, e) : void 0 } }
    }, function(t, e) {
        t.exports = function(t, e) {
            (null == e || e > t.length) && (e = t.length);
            for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];
            return i
        }
    }, function(t, e, n) {
        "use strict";
        Object.defineProperty(e, "__esModule", { value: !0 }), e.assertDatabaseIsEmpty = function(t, e, n) { if (t) { var r = (0, i.newError)("Driver is connected to the database that does not support multiple databases. Please upgrade to neo4j 4.0.0 or later in order to use this functionality"); throw e._handleFatalError(r), n.onError(r), r } }, e.assertTxConfigIsEmpty = function(t, e, n) { if (t && !t.isEmpty()) { var r = (0, i.newError)("Driver is connected to the database that does not support transaction configuration. Please upgrade to neo4j 3.5.0 or later in order to use this functionality"); throw e._handleFatalError(r), n.onError(r), r } };
        var i = n(11);
        n(45)
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.Dechunker = e.Chunker = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(16)),
            s = i(n(12)),
            A = i(n(17)),
            a = i(n(171)),
            C = n(79),
            I = i(n(368)),
            u = function(t) {
                function e(t, n) { var i; return (0, r.default)(this, e), (i = (0, g.default)(this, (0, s.default)(e).call(this, 0)))._bufferSize = n || 1400, i._ch = t, i._buffer = (0, C.alloc)(i._bufferSize), i._currentChunkStart = 0, i._chunkOpen = !1, i }
                return (0, A.default)(e, t), (0, o.default)(e, [{ key: "putUInt8", value: function(t, e) { this._ensure(1), this._buffer.writeUInt8(e) } }, { key: "putInt8", value: function(t, e) { this._ensure(1), this._buffer.writeInt8(e) } }, { key: "putFloat64", value: function(t, e) { this._ensure(8), this._buffer.writeFloat64(e) } }, { key: "putBytes", value: function(t, e) { for (; e.remaining() > 0;) this._ensure(1), this._buffer.remaining() > e.remaining() ? this._buffer.writeBytes(e) : this._buffer.writeBytes(e.readSlice(this._buffer.remaining())); return this } }, {
                    key: "flush",
                    value: function() {
                        if (this._buffer.position > 0) {
                            this._closeChunkIfOpen();
                            var t = this._buffer;
                            this._buffer = null, this._ch.write(t.getSlice(0, t.position)), this._buffer = (0, C.alloc)(this._bufferSize), this._chunkOpen = !1
                        }
                        return this
                    }
                }, { key: "messageBoundary", value: function() { this._closeChunkIfOpen(), this._buffer.remaining() < 2 && this.flush(), this._buffer.writeInt16(0) } }, {
                    key: "_ensure",
                    value: function(t) {
                        var e = this._chunkOpen ? t : t + 2;
                        this._buffer.remaining() < e && this.flush(), this._chunkOpen || (this._currentChunkStart = this._buffer.position, this._buffer.position = this._buffer.position + 2, this._chunkOpen = !0)
                    }
                }, {
                    key: "_closeChunkIfOpen",
                    value: function() {
                        if (this._chunkOpen) {
                            var t = this._buffer.position - (this._currentChunkStart + 2);
                            this._buffer.putUInt16(this._currentChunkStart, t), this._chunkOpen = !1
                        }
                    }
                }]), e
            }(a.default);
        e.Chunker = u;
        var c = function() {
            function t() {
                (0, r.default)(this, t), this._currentMessage = [], this._partialChunkHeader = 0, this._state = this.AWAITING_CHUNK
            }
            return (0, o.default)(t, [{ key: "AWAITING_CHUNK", value: function(t) { return t.remaining() >= 2 ? this._onHeader(t.readUInt16()) : (this._partialChunkHeader = t.readUInt8() << 8, this.IN_HEADER) } }, { key: "IN_HEADER", value: function(t) { return this._onHeader(65535 & (this._partialChunkHeader | t.readUInt8())) } }, { key: "IN_CHUNK", value: function(t) { return this._chunkSize <= t.remaining() ? (this._currentMessage.push(t.readSlice(this._chunkSize)), this.AWAITING_CHUNK) : (this._chunkSize -= t.remaining(), this._currentMessage.push(t.readSlice(t.remaining())), this.IN_CHUNK) } }, { key: "CLOSED", value: function(t) {} }, {
                key: "_onHeader",
                value: function(t) {
                    if (0 === t) {
                        var e;
                        switch (this._currentMessage.length) {
                            case 0:
                                return this.AWAITING_CHUNK;
                            case 1:
                                e = this._currentMessage[0];
                                break;
                            default:
                                e = new I.default(this._currentMessage)
                        }
                        return this._currentMessage = [], this.onmessage(e), this.AWAITING_CHUNK
                    }
                    return this._chunkSize = t, this.IN_CHUNK
                }
            }, { key: "write", value: function(t) { for (; t.hasRemaining();) this._state = this._state(t) } }]), t
        }();
        e.Dechunker = c
    }, function(t, e, n) {
        "use strict";
        var i = n(37),
            r = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.Structure = e.Unpacker = e.Packer = void 0;
        var o = r(n(122)),
            g = r(n(5)),
            s = r(n(6)),
            A = n(79),
            a = i(n(38)),
            C = n(11),
            I = n(218),
            u = function() {
                function t(e, n) {
                    (0, g.default)(this, t), this.signature = e, this.fields = n
                }
                return (0, s.default)(t, [{ key: "toString", value: function() { for (var t = "", e = 0; e < this.fields.length; e++) e > 0 && (t += ", "), t += this.fields[e]; return "Structure(" + this.signature + ", [" + t + "])" } }]), t
            }();
        e.Structure = u;
        var c = function() {
            function t(e) {
                (0, g.default)(this, t), this._ch = e, this._byteArraysSupported = !0
            }
            return (0, s.default)(t, [{
                key: "packable",
                value: function(t) {
                    var e = this;
                    if (null === t) return function() { return e._ch.writeUInt8(192) };
                    if (!0 === t) return function() { return e._ch.writeUInt8(195) };
                    if (!1 === t) return function() { return e._ch.writeUInt8(194) };
                    if ("number" == typeof t) return function() { return e.packFloat(t) };
                    if ("string" == typeof t) return function() { return e.packString(t) };
                    if ((0, a.isInt)(t)) return function() { return e.packInteger(t) };
                    if (t instanceof Int8Array) return function() { return e.packBytes(t) };
                    if (t instanceof Array) return function() { e.packListHeader(t.length); for (var n = 0; n < t.length; n++) e.packable(void 0 === t[n] ? null : t[n])() };
                    if (function(t) { if (null == t) return !1; return "function" == typeof t[Symbol.iterator] }(t)) return this.packableIterable(t);
                    if (t instanceof I.Node) return this._nonPackableValue("It is not allowed to pass nodes in query parameters, given: ".concat(t));
                    if (t instanceof I.Relationship) return this._nonPackableValue("It is not allowed to pass relationships in query parameters, given: ".concat(t));
                    if (t instanceof I.Path) return this._nonPackableValue("It is not allowed to pass paths in query parameters, given: ".concat(t));
                    if (t instanceof u) { for (var n = [], i = 0; i < t.fields.length; i++) n[i] = this.packable(t.fields[i]); return function() { return e.packStruct(t.signature, n) } }
                    return "object" === (0, o.default)(t) ? function() {
                        for (var n = Object.keys(t), i = 0, r = 0; r < n.length; r++) void 0 !== t[n[r]] && i++;
                        e.packMapHeader(i);
                        for (var o = 0; o < n.length; o++) {
                            var g = n[o];
                            void 0 !== t[g] && (e.packString(g), e.packable(t[g])())
                        }
                    } : this._nonPackableValue("Unable to pack the given value: ".concat(t))
                }
            }, { key: "packableIterable", value: function(t) { try { var e = Array.from(t); return this.packable(e) } catch (e) { throw (0, C.newError)("Cannot pack given iterable, ".concat(e.message, ": ").concat(t)) } } }, { key: "packStruct", value: function(t, e) { e = e || [], this.packStructHeader(e.length, t); for (var n = 0; n < e.length; n++) e[n]() } }, {
                key: "packInteger",
                value: function(t) {
                    var e = t.high,
                        n = t.low;
                    t.greaterThanOrEqual(-16) && t.lessThan(128) ? this._ch.writeInt8(n) : t.greaterThanOrEqual(-128) && t.lessThan(-16) ? (this._ch.writeUInt8(200), this._ch.writeInt8(n)) : t.greaterThanOrEqual(-32768) && t.lessThan(32768) ? (this._ch.writeUInt8(201), this._ch.writeInt16(n)) : t.greaterThanOrEqual(-2147483648) && t.lessThan(2147483648) ? (this._ch.writeUInt8(202), this._ch.writeInt32(n)) : (this._ch.writeUInt8(203), this._ch.writeInt32(e), this._ch.writeInt32(n))
                }
            }, { key: "packFloat", value: function(t) { this._ch.writeUInt8(193), this._ch.writeFloat64(t) } }, {
                key: "packString",
                value: function(t) {
                    var e = A.utf8.encode(t),
                        n = e.length;
                    if (n < 16) this._ch.writeUInt8(128 | n), this._ch.writeBytes(e);
                    else if (n < 256) this._ch.writeUInt8(208), this._ch.writeUInt8(n), this._ch.writeBytes(e);
                    else if (n < 65536) this._ch.writeUInt8(209), this._ch.writeUInt8(n / 256 >> 0), this._ch.writeUInt8(n % 256), this._ch.writeBytes(e);
                    else {
                        if (!(n < 4294967296)) throw (0, C.newError)("UTF-8 strings of size " + n + " are not supported");
                        this._ch.writeUInt8(210), this._ch.writeUInt8((n / 16777216 >> 0) % 256), this._ch.writeUInt8((n / 65536 >> 0) % 256), this._ch.writeUInt8((n / 256 >> 0) % 256), this._ch.writeUInt8(n % 256), this._ch.writeBytes(e)
                    }
                }
            }, {
                key: "packListHeader",
                value: function(t) {
                    if (t < 16) this._ch.writeUInt8(144 | t);
                    else if (t < 256) this._ch.writeUInt8(212), this._ch.writeUInt8(t);
                    else if (t < 65536) this._ch.writeUInt8(213), this._ch.writeUInt8((t / 256 >> 0) % 256), this._ch.writeUInt8(t % 256);
                    else {
                        if (!(t < 4294967296)) throw (0, C.newError)("Lists of size " + t + " are not supported");
                        this._ch.writeUInt8(214), this._ch.writeUInt8((t / 16777216 >> 0) % 256), this._ch.writeUInt8((t / 65536 >> 0) % 256), this._ch.writeUInt8((t / 256 >> 0) % 256), this._ch.writeUInt8(t % 256)
                    }
                }
            }, {
                key: "packBytes",
                value: function(t) {
                    if (!this._byteArraysSupported) throw (0, C.newError)("Byte arrays are not supported by the database this driver is connected to");
                    this.packBytesHeader(t.length);
                    for (var e = 0; e < t.length; e++) this._ch.writeInt8(t[e])
                }
            }, {
                key: "packBytesHeader",
                value: function(t) {
                    if (t < 256) this._ch.writeUInt8(204), this._ch.writeUInt8(t);
                    else if (t < 65536) this._ch.writeUInt8(205), this._ch.writeUInt8((t / 256 >> 0) % 256), this._ch.writeUInt8(t % 256);
                    else {
                        if (!(t < 4294967296)) throw (0, C.newError)("Byte arrays of size " + t + " are not supported");
                        this._ch.writeUInt8(206), this._ch.writeUInt8((t / 16777216 >> 0) % 256), this._ch.writeUInt8((t / 65536 >> 0) % 256), this._ch.writeUInt8((t / 256 >> 0) % 256), this._ch.writeUInt8(t % 256)
                    }
                }
            }, {
                key: "packMapHeader",
                value: function(t) {
                    if (t < 16) this._ch.writeUInt8(160 | t);
                    else if (t < 256) this._ch.writeUInt8(216), this._ch.writeUInt8(t);
                    else if (t < 65536) this._ch.writeUInt8(217), this._ch.writeUInt8(t / 256 >> 0), this._ch.writeUInt8(t % 256);
                    else {
                        if (!(t < 4294967296)) throw (0, C.newError)("Maps of size " + t + " are not supported");
                        this._ch.writeUInt8(218), this._ch.writeUInt8((t / 16777216 >> 0) % 256), this._ch.writeUInt8((t / 65536 >> 0) % 256), this._ch.writeUInt8((t / 256 >> 0) % 256), this._ch.writeUInt8(t % 256)
                    }
                }
            }, {
                key: "packStructHeader",
                value: function(t, e) {
                    if (t < 16) this._ch.writeUInt8(176 | t), this._ch.writeUInt8(e);
                    else if (t < 256) this._ch.writeUInt8(220), this._ch.writeUInt8(t), this._ch.writeUInt8(e);
                    else {
                        if (!(t < 65536)) throw (0, C.newError)("Structures of size " + t + " are not supported");
                        this._ch.writeUInt8(221), this._ch.writeUInt8(t / 256 >> 0), this._ch.writeUInt8(t % 256)
                    }
                }
            }, { key: "disableByteArrays", value: function() { this._byteArraysSupported = !1 } }, { key: "_nonPackableValue", value: function(t) { return function() { throw (0, C.newError)(t, C.PROTOCOL_ERROR) } } }]), t
        }();
        e.Packer = c;
        var l = function() {
            function t() {
                var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                (0, g.default)(this, t), this._disableLosslessIntegers = e
            }
            return (0, s.default)(t, [{
                key: "unpack",
                value: function(t) {
                    var e = t.readUInt8(),
                        n = 240 & e,
                        i = 15 & e;
                    if (192 === e) return null;
                    var r = this._unpackBoolean(e);
                    if (null !== r) return r;
                    var o = this._unpackNumberOrInteger(e, t);
                    if (null !== o) return this._disableLosslessIntegers && (0, a.isInt)(o) ? o.toNumberOrInfinity() : o;
                    var g = this._unpackString(e, n, i, t);
                    if (null !== g) return g;
                    var s = this._unpackList(e, n, i, t);
                    if (null !== s) return s;
                    var A = this._unpackByteArray(e, t);
                    if (null !== A) return A;
                    var I = this._unpackMap(e, n, i, t);
                    if (null !== I) return I;
                    var u = this._unpackStruct(e, n, i, t);
                    if (null !== u) return u;
                    throw (0, C.newError)("Unknown packed value with marker " + e.toString(16))
                }
            }, {
                key: "unpackInteger",
                value: function(t) {
                    var e = t.readUInt8(),
                        n = this._unpackInteger(e, t);
                    if (null == n) throw (0, C.newError)("Unable to unpack integer value with marker " + e.toString(16));
                    return n
                }
            }, { key: "_unpackBoolean", value: function(t) { return 195 === t || 194 !== t && null } }, { key: "_unpackNumberOrInteger", value: function(t, e) { return 193 === t ? e.readFloat64() : this._unpackInteger(t, e) } }, {
                key: "_unpackInteger",
                value: function(t, e) {
                    if (t >= 0 && t < 128) return (0, a.int)(t);
                    if (t >= 240 && t < 256) return (0, a.int)(t - 256);
                    if (200 === t) return (0, a.int)(e.readInt8());
                    if (201 === t) return (0, a.int)(e.readInt16());
                    if (202 === t) { var n = e.readInt32(); return (0, a.int)(n) }
                    if (203 === t) {
                        var i = e.readInt32(),
                            r = e.readInt32();
                        return new a.default(r, i)
                    }
                    return null
                }
            }, { key: "_unpackString", value: function(t, e, n, i) { return 128 === e ? A.utf8.decode(i, n) : 208 === t ? A.utf8.decode(i, i.readUInt8()) : 209 === t ? A.utf8.decode(i, i.readUInt16()) : 210 === t ? A.utf8.decode(i, i.readUInt32()) : null } }, { key: "_unpackList", value: function(t, e, n, i) { return 144 === e ? this._unpackListWithSize(n, i) : 212 === t ? this._unpackListWithSize(i.readUInt8(), i) : 213 === t ? this._unpackListWithSize(i.readUInt16(), i) : 214 === t ? this._unpackListWithSize(i.readUInt32(), i) : null } }, { key: "_unpackListWithSize", value: function(t, e) { for (var n = [], i = 0; i < t; i++) n.push(this.unpack(e)); return n } }, { key: "_unpackByteArray", value: function(t, e) { return 204 === t ? this._unpackByteArrayWithSize(e.readUInt8(), e) : 205 === t ? this._unpackByteArrayWithSize(e.readUInt16(), e) : 206 === t ? this._unpackByteArrayWithSize(e.readUInt32(), e) : null } }, { key: "_unpackByteArrayWithSize", value: function(t, e) { for (var n = new Int8Array(t), i = 0; i < t; i++) n[i] = e.readInt8(); return n } }, { key: "_unpackMap", value: function(t, e, n, i) { return 160 === e ? this._unpackMapWithSize(n, i) : 216 === t ? this._unpackMapWithSize(i.readUInt8(), i) : 217 === t ? this._unpackMapWithSize(i.readUInt16(), i) : 218 === t ? this._unpackMapWithSize(i.readUInt32(), i) : null } }, { key: "_unpackMapWithSize", value: function(t, e) { for (var n = {}, i = 0; i < t; i++) { n[this.unpack(e)] = this.unpack(e) } return n } }, { key: "_unpackStruct", value: function(t, e, n, i) { return 176 === e ? this._unpackStructWithSize(n, i) : 220 === t ? this._unpackStructWithSize(i.readUInt8(), i) : 221 === t ? this._unpackStructWithSize(i.readUInt16(), i) : null } }, { key: "_unpackStructWithSize", value: function(t, e) { var n = e.readUInt8(); return 78 === n ? this._unpackNode(t, e) : 82 === n ? this._unpackRelationship(t, e) : 114 === n ? this._unpackUnboundRelationship(t, e) : 80 === n ? this._unpackPath(t, e) : this._unpackUnknownStruct(n, t, e) } }, { key: "_unpackNode", value: function(t, e) { return this._verifyStructSize("Node", 3, t), new I.Node(this.unpack(e), this.unpack(e), this.unpack(e)) } }, { key: "_unpackRelationship", value: function(t, e) { return this._verifyStructSize("Relationship", 5, t), new I.Relationship(this.unpack(e), this.unpack(e), this.unpack(e), this.unpack(e), this.unpack(e)) } }, { key: "_unpackUnboundRelationship", value: function(t, e) { return this._verifyStructSize("UnboundRelationship", 3, t), new I.UnboundRelationship(this.unpack(e), this.unpack(e), this.unpack(e)) } }, {
                key: "_unpackPath",
                value: function(t, e) {
                    this._verifyStructSize("Path", 3, t);
                    for (var n = this.unpack(e), i = this.unpack(e), r = this.unpack(e), o = [], g = n[0], s = 0; s < r.length; s += 2) {
                        var A = n[r[s + 1]],
                            a = r[s],
                            C = void 0;
                        a > 0 ? (C = i[a - 1]) instanceof I.UnboundRelationship && (i[a - 1] = C = C.bind(g.identity, A.identity)) : (C = i[-a - 1]) instanceof I.UnboundRelationship && (i[-a - 1] = C = C.bind(A.identity, g.identity)), o.push(new I.PathSegment(g, C, A)), g = A
                    }
                    return new I.Path(n[0], n[n.length - 1], o)
                }
            }, { key: "_unpackUnknownStruct", value: function(t, e, n) { for (var i = new u(t, []), r = 0; r < e; r++) i.fields.push(this.unpack(n)); return i } }, { key: "_verifyStructSize", value: function(t, e, n) { if (e !== n) throw (0, C.newError)("Wrong struct size for ".concat(t, ", expected ").concat(e, " but was ").concat(n), C.PROTOCOL_ERROR) } }]), t
        }();
        e.Unpacker = l
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(58)),
            o = i(n(64)),
            g = i(n(5)),
            s = i(n(6)),
            A = i(n(16)),
            a = i(n(12)),
            C = i(n(123)),
            I = i(n(17)),
            u = i(n(174)),
            c = i(n(374)),
            l = i(n(176)),
            h = i(n(178)),
            d = n(11),
            f = function(t) {
                function e(t) {
                    var n, i = t.id,
                        r = t.config,
                        o = t.log,
                        s = t.userAgent,
                        I = t.authToken,
                        h = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;
                    return (0, g.default)(this, e), (n = (0, A.default)(this, (0, a.default)(e).call(this)))._id = i, n._config = r, n._log = o, n._userAgent = s, n._authToken = I, n._createChannelConnection = h || function(t) { return u.default.create(t, n._config, n._createConnectionErrorHandler(), n._log) }, n._connectionPool = new c.default({ create: n._createConnection.bind((0, C.default)(n)), destroy: n._destroyConnection.bind((0, C.default)(n)), validate: n._validateConnection.bind((0, C.default)(n)), installIdleObserver: e._installIdleObserverOnConnection.bind((0, C.default)(n)), removeIdleObserver: e._removeIdleObserverOnConnection.bind((0, C.default)(n)), config: l.default.fromDriverConfig(r), log: n._log }), n._openConnections = {}, n
                }
                var n;
                return (0, I.default)(e, t), (0, s.default)(e, [{ key: "_createConnectionErrorHandler", value: function() { return new h.default(d.SERVICE_UNAVAILABLE) } }, {
                    key: "_createConnection",
                    value: function(t, e) {
                        var n = this,
                            i = this._createChannelConnection(t);
                        return i._release = function() { return e(t, i) }, this._openConnections[i.id] = i, i.connect(this._userAgent, this._authToken).catch((function(t) { throw n._destroyConnection(i), t }))
                    }
                }, { key: "_validateConnection", value: function(t) { if (!t.isOpen()) return !1; var e = this._config.maxConnectionLifetime; return Date.now() - t.creationTimestamp <= e } }, { key: "_destroyConnection", value: function(t) { return delete this._openConnections[t.id], t.close() } }, {
                    key: "close",
                    value: (n = (0, o.default)(r.default.mark((function t() {
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.next = 2, this._connectionPool.close();
                                case 2:
                                    return t.next = 4, Promise.all(Object.values(this._openConnections).map((function(t) { return t.close() })));
                                case 4:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function() { return n.apply(this, arguments) })
                }], [{ key: "_installIdleObserverOnConnection", value: function(t, e) { t._queueObserver(e) } }, { key: "_removeIdleObserverOnConnection", value: function(t) { t._updateCurrentObserver() } }]), e
            }(i(n(173)).default);
        e.default = f
    }, function(t, e, n) {
        "use strict";
        var i = n(37),
            r = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var o = r(n(5)),
            g = r(n(6)),
            s = r(n(16)),
            A = r(n(12)),
            a = r(n(17)),
            C = r(n(126)),
            I = i(n(372)),
            u = n(39),
            c = function(t) {
                function e() { return (0, o.default)(this, e), (0, s.default)(this, (0, A.default)(e).apply(this, arguments)) }
                return (0, a.default)(e, t), (0, g.default)(e, [{ key: "_createPacker", value: function(t) { return new I.Packer(t) } }, { key: "_createUnpacker", value: function(t) { return new I.Unpacker(t) } }, { key: "version", get: function() { return u.BOLT_PROTOCOL_V2 } }]), e
            }(C.default);
        e.default = c
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.isPoint = function(t) { return !0 === (t && t.__isPoint__) }, e.Point = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(24),
            s = function() {
                function t(e, n, i, o) {
                    (0, r.default)(this, t), this.srid = (0, g.assertNumberOrInteger)(e, "SRID"), this.x = (0, g.assertNumber)(n, "X coordinate"), this.y = (0, g.assertNumber)(i, "Y coordinate"), this.z = null == o ? o : (0, g.assertNumber)(o, "Z coordinate"), Object.freeze(this)
                }
                return (0, o.default)(t, [{ key: "toString", value: function() { return this.z || 0 === this.z ? "Point{srid=".concat(A(this.srid), ", x=").concat(A(this.x), ", y=").concat(A(this.y), ", z=").concat(A(this.z), "}") : "Point{srid=".concat(A(this.srid), ", x=").concat(A(this.x), ", y=").concat(A(this.y), "}") } }]), t
            }();

        function A(t) { return Number.isInteger(t) ? t + ".0" : t.toString() }
        e.Point = s, Object.defineProperty(s.prototype, "__isPoint__", { value: !0, enumerable: !1, configurable: !1, writable: !1 })
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.normalizeSecondsForDuration = function(t, e) { return (0, g.int)(t).add(m(e, 1e9)) }, e.normalizeNanosecondsForDuration = function(t) { return w(t, 1e9) }, e.localTimeToNanoOfDay = function(t, e, n, i) { t = (0, g.int)(t), e = (0, g.int)(e), n = (0, g.int)(n), i = (0, g.int)(i); var r = t.multiply(36e11); return (r = (r = r.add(e.multiply(6e10))).add(n.multiply(1e9))).add(i) }, e.nanoOfDayToLocalTime = p, e.localDateTimeToEpochSecond = function(t, e, n, i, r, o, s) {
            var A = v(t, e, n),
                a = function(t, e, n) { t = (0, g.int)(t), e = (0, g.int)(e), n = (0, g.int)(n); var i = t.multiply(3600); return (i = i.add(e.multiply(60))).add(n) }(i, r, o);
            return A.multiply(86400).add(a)
        }, e.epochSecondAndNanoToLocalDateTime = function(t, e) {
            var n = m(t, 86400),
                i = w(t, 86400).multiply(1e9).add(e),
                r = y(n),
                o = p(i);
            return new s.LocalDateTime(r.year, r.month, r.day, o.hour, o.minute, o.second, o.nanosecond)
        }, e.dateToEpochDay = v, e.epochDayToDate = y, e.durationToIsoString = function(t, e, n, i) {
            var r = k(t),
                o = k(e),
                s = function(t, e) {
                    var n, i;
                    t = (0, g.int)(t), e = (0, g.int)(e);
                    var r = t.isNegative(),
                        o = e.greaterThan(0);
                    n = r && o ? t.equals(-1) ? "-0" : t.add(1).toString() : t.toString();
                    o && (i = _(r ? e.negate().add(2e9).modulo(1e9) : e.add(1e9).modulo(1e9)));
                    return i ? n + i : n
                }(n, i);
            return "P".concat(r, "M").concat(o, "DT").concat(s, "S")
        }, e.timeToIsoString = function(t, e, n, i) {
            var r = k(t, 2),
                o = k(e, 2),
                g = k(n, 2),
                s = _(i);
            return "".concat(r, ":").concat(o, ":").concat(g).concat(s)
        }, e.timeZoneOffsetToIsoString = function(t) {
            if ((t = (0, g.int)(t)).equals(0)) return "Z";
            var e = t.isNegative();
            e && (t = t.multiply(-1));
            var n = e ? "-" : "+",
                i = k(t.div(3600), 2),
                r = k(t.div(60).modulo(60), 2),
                o = t.modulo(60),
                s = o.equals(0) ? null : k(o, 2);
            return s ? "".concat(n).concat(i, ":").concat(r, ":").concat(s) : "".concat(n).concat(i, ":").concat(r)
        }, e.dateToIsoString = function(t, e, n) {
            var i = (t = (0, g.int)(t)).isNegative();
            i && (t = t.multiply(-1));
            var r = k(t, 4);
            i && (r = "-" + r);
            var o = k(e, 2),
                s = k(n, 2);
            return "".concat(r, "-").concat(o, "-").concat(s)
        }, e.totalNanoseconds = function(t, e) { e = e || 0; var n = 1e6 * t.getMilliseconds(); return (0, g.isInt)(e) ? e.add(n) : e + n }, e.timeZoneOffsetInSeconds = function(t) { var e = t.getTimezoneOffset(); if (0 === e) return 0; return -1 * e * 60 }, e.assertValidYear = function(t) { return b(t, I, "Year") }, e.assertValidMonth = function(t) { return b(t, u, "Month") }, e.assertValidDay = function(t) { return b(t, c, "Day") }, e.assertValidHour = function(t) { return b(t, l, "Hour") }, e.assertValidMinute = function(t) { return b(t, h, "Minute") }, e.assertValidSecond = function(t) { return b(t, d, "Second") }, e.assertValidNanosecond = function(t) { return b(t, f, "Nanosecond") };
        var r = i(n(5)),
            o = i(n(6)),
            g = n(38),
            s = n(175),
            A = n(24),
            a = n(11),
            C = function() {
                function t(e, n) {
                    (0, r.default)(this, t), this._minNumber = e, this._maxNumber = n, this._minInteger = (0, g.int)(e), this._maxInteger = (0, g.int)(n)
                }
                return (0, o.default)(t, [{ key: "contains", value: function(t) { return (0, g.isInt)(t) ? t.greaterThanOrEqual(this._minInteger) && t.lessThanOrEqual(this._maxInteger) : t >= this._minNumber && t <= this._maxNumber } }, { key: "toString", value: function() { return "[".concat(this._minNumber, ", ").concat(this._maxNumber, "]") } }]), t
            }(),
            I = new C(-999999999, 999999999),
            u = new C(1, 12),
            c = new C(1, 31),
            l = new C(0, 23),
            h = new C(0, 59),
            d = new C(0, 59),
            f = new C(0, 999999999);

        function p(t) {
            var e = (t = (0, g.int)(t)).div(36e11),
                n = (t = t.subtract(e.multiply(36e11))).div(6e10),
                i = (t = t.subtract(n.multiply(6e10))).div(1e9),
                r = t.subtract(i.multiply(1e9));
            return new s.LocalTime(e, n, i, r)
        }

        function v(t, e, n) { t = (0, g.int)(t), e = (0, g.int)(e), n = (0, g.int)(n); var i = t.multiply(365); return i = (i = (i = t.greaterThanOrEqual(0) ? i.add(t.add(3).div(4).subtract(t.add(99).div(100)).add(t.add(399).div(400))) : i.subtract(t.div(-4).subtract(t.div(-100)).add(t.div(-400)))).add(e.multiply(367).subtract(362).div(12))).add(n.subtract(1)), e.greaterThan(2) && (i = i.subtract(1), function(t) { return !!(t = (0, g.int)(t)).modulo(4).equals(0) && (!t.modulo(100).equals(0) || !!t.modulo(400).equals(0)) }(t) || (i = i.subtract(1))), i.subtract(719528) }

        function y(t) {
            var e = (t = (0, g.int)(t)).add(719528).subtract(60),
                n = (0, g.int)(0);
            if (e.lessThan(0)) {
                var i = e.add(1).div(146097).subtract(1);
                n = i.multiply(400), e = e.add(i.multiply(-146097))
            }
            var r = e.multiply(400).add(591).div(146097),
                o = e.subtract(r.multiply(365).add(r.div(4)).subtract(r.div(100)).add(r.div(400)));
            o.lessThan(0) && (r = r.subtract(1), o = e.subtract(r.multiply(365).add(r.div(4)).subtract(r.div(100)).add(r.div(400)))), r = r.add(n);
            var A = o,
                a = A.multiply(5).add(2).div(153),
                C = a.add(2).modulo(12).add(1),
                I = A.subtract(a.multiply(306).add(5).div(10)).add(1);
            return r = r.add(a.div(10)), new s.Date(r, C, I)
        }

        function b(t, e, n) { if ((0, A.assertNumberOrInteger)(t, n), !e.contains(t)) throw (0, a.newError)("".concat(n, " is expected to be in range ").concat(e, " but was: ").concat(t)); return t }

        function m(t, e) { t = (0, g.int)(t), e = (0, g.int)(e); var n = t.div(e); return t.isPositive() !== e.isPositive() && n.multiply(e).notEquals(t) && (n = n.subtract(1)), n }

        function w(t, e) { return t = (0, g.int)(t), e = (0, g.int)(e), t.subtract(m(t, e).multiply(e)) }

        function _(t) { return (t = (0, g.int)(t)).equals(0) ? "" : "." + k(t, 9) }

        function k(t) {
            var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0,
                n = (t = (0, g.int)(t)).isNegative();
            n && (t = t.negate());
            var i = t.toString();
            if (e)
                for (; i.length < e;) i = "0" + i;
            return n ? "-" + i : i
        }
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(16)),
            s = i(n(12)),
            A = i(n(17)),
            a = i(n(228)),
            C = i(n(80)),
            I = n(224),
            u = n(45),
            c = n(39),
            l = new u.StreamObserver,
            h = function(t) {
                function e() { return (0, r.default)(this, e), (0, g.default)(this, (0, s.default)(e).apply(this, arguments)) }
                return (0, A.default)(e, t), (0, o.default)(e, [{ key: "transformMetadata", value: function(t) { return "t_first" in t && (t.result_available_after = t.t_first, delete t.t_first), "t_last" in t && (t.result_consumed_after = t.t_last, delete t.t_last), t } }, {
                    key: "initialize",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.userAgent,
                            n = t.authToken,
                            i = t.onError,
                            r = t.onComplete,
                            o = new u.LoginObserver({ connection: this._connection, afterError: i, afterComplete: r });
                        return this._connection.write(C.default.hello(e, n), o, !0), o
                    }
                }, { key: "prepareToClose", value: function() { this._connection.write(C.default.goodbye(), l, !0) } }, {
                    key: "beginTransaction",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.bookmark,
                            n = t.txConfig,
                            i = t.database,
                            r = t.mode,
                            o = t.beforeError,
                            g = t.afterError,
                            s = t.beforeComplete,
                            A = t.afterComplete,
                            a = new u.ResultStreamObserver({ connection: this._connection, beforeError: o, afterError: g, beforeComplete: s, afterComplete: A });
                        return a.prepareToHandleSingleResponse(), (0, I.assertDatabaseIsEmpty)(i, this._connection, a), this._connection.write(C.default.begin({ bookmark: e, txConfig: n, mode: r }), a, !0), a
                    }
                }, {
                    key: "commitTransaction",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.beforeError,
                            n = t.afterError,
                            i = t.beforeComplete,
                            r = t.afterComplete,
                            o = new u.ResultStreamObserver({ connection: this._connection, beforeError: e, afterError: n, beforeComplete: i, afterComplete: r });
                        return o.prepareToHandleSingleResponse(), this._connection.write(C.default.commit(), o, !0), o
                    }
                }, {
                    key: "rollbackTransaction",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.beforeError,
                            n = t.afterError,
                            i = t.beforeComplete,
                            r = t.afterComplete,
                            o = new u.ResultStreamObserver({ connection: this._connection, beforeError: e, afterError: n, beforeComplete: i, afterComplete: r });
                        return o.prepareToHandleSingleResponse(), this._connection.write(C.default.rollback(), o, !0), o
                    }
                }, {
                    key: "run",
                    value: function(t, e) {
                        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                            i = n.bookmark,
                            r = n.txConfig,
                            o = n.database,
                            g = n.mode,
                            s = n.beforeKeys,
                            A = n.afterKeys,
                            a = n.beforeError,
                            c = n.afterError,
                            l = n.beforeComplete,
                            h = n.afterComplete,
                            d = n.flush,
                            f = void 0 === d || d,
                            p = new u.ResultStreamObserver({ connection: this._connection, beforeKeys: s, afterKeys: A, beforeError: a, afterError: c, beforeComplete: l, afterComplete: h });
                        return (0, I.assertDatabaseIsEmpty)(o, this._connection, p), this._connection.write(C.default.runWithMetadata(t, e, { bookmark: i, txConfig: r, mode: g }), p, !1), this._connection.write(C.default.pullAll(), p, f), p
                    }
                }, { key: "version", get: function() { return c.BOLT_PROTOCOL_V3 } }]), e
            }(a.default);
        e.default = h
    }, function(t, e, n) {
        "use strict";
        var i = n(37),
            r = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var o = r(n(5)),
            g = r(n(6)),
            s = r(n(16)),
            A = r(n(12)),
            a = r(n(17)),
            C = r(n(231)),
            I = i(n(80)),
            u = n(45),
            c = n(39),
            l = function(t) {
                function e() { return (0, o.default)(this, e), (0, s.default)(this, (0, A.default)(e).apply(this, arguments)) }
                return (0, a.default)(e, t), (0, g.default)(e, [{
                    key: "beginTransaction",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.bookmark,
                            n = t.txConfig,
                            i = t.database,
                            r = t.mode,
                            o = t.beforeError,
                            g = t.afterError,
                            s = t.beforeComplete,
                            A = t.afterComplete,
                            a = new u.ResultStreamObserver({ connection: this._connection, beforeError: o, afterError: g, beforeComplete: s, afterComplete: A });
                        return a.prepareToHandleSingleResponse(), this._connection.write(I.default.begin({ bookmark: e, txConfig: n, database: i, mode: r }), a, !0), a
                    }
                }, {
                    key: "run",
                    value: function(t, e) {
                        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                            i = n.bookmark,
                            r = n.txConfig,
                            o = n.database,
                            g = n.mode,
                            s = n.beforeKeys,
                            A = n.afterKeys,
                            a = n.beforeError,
                            C = n.afterError,
                            c = n.beforeComplete,
                            l = n.afterComplete,
                            h = n.flush,
                            d = void 0 === h || h,
                            f = n.reactive,
                            p = void 0 !== f && f,
                            v = n.fetchSize,
                            y = void 0 === v ? I.ALL : v,
                            b = new u.ResultStreamObserver({ connection: this._connection, reactive: p, fetchSize: y, moreFunction: this._requestMore, discardFunction: this._requestDiscard, beforeKeys: s, afterKeys: A, beforeError: a, afterError: C, beforeComplete: c, afterComplete: l }),
                            m = p;
                        return this._connection.write(I.default.runWithMetadata(t, e, { bookmark: i, txConfig: r, database: o, mode: g }), b, m && d), p || this._connection.write(I.default.pull({ n: y }), b, d), b
                    }
                }, { key: "_requestMore", value: function(t, e, n, i) { t.write(I.default.pull({ stmtId: e, n: n }), i, !0) } }, { key: "_requestDiscard", value: function(t, e, n) { t.write(I.default.discard({ stmtId: e }), n, !0) } }, { key: "_noOp", value: function() {} }, { key: "version", get: function() { return c.BOLT_PROTOCOL_V4_0 } }]), e
            }(C.default);
        e.default = l
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(16)),
            s = i(n(12)),
            A = i(n(17)),
            a = function(t) {
                function e(t, n) { var i; return (0, r.default)(this, e), i = (0, g.default)(this, (0, s.default)(e).call(this, n)), n && (i._originalErrorHandler = t._errorHandler, t._errorHandler = i._errorHandler), i._delegate = t, i }
                return (0, A.default)(e, t), (0, o.default)(e, [{ key: "isOpen", value: function() { return this._delegate.isOpen() } }, { key: "protocol", value: function() { return this._delegate.protocol() } }, { key: "connect", value: function(t, e) { return this._delegate.connect(t, e) } }, { key: "write", value: function(t, e, n) { return this._delegate.write(t, e, n) } }, { key: "resetAndFlush", value: function() { return this._delegate.resetAndFlush() } }, { key: "close", value: function() { return this._delegate.close() } }, { key: "_release", value: function() { return this._originalErrorHandler && (this._delegate._errorHandler = this._originalErrorHandler), this._delegate._release() } }, { key: "id", get: function() { return this._delegate.id } }, { key: "databaseId", get: function() { return this._delegate.databaseId }, set: function(t) { this._delegate.databaseId = t } }, { key: "server", get: function() { return this._delegate.server } }, { key: "address", get: function() { return this._delegate.address } }, { key: "version", get: function() { return this._delegate.version }, set: function(t) { this._delegate.version = t } }]), e
            }(i(n(125)).default);
        e.default = a
    }, function(t, e, n) {
        "use strict";
        var i = n(37),
            r = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var o = r(n(5)),
            g = r(n(6)),
            s = r(n(168)),
            A = n(24),
            a = i(n(124)),
            C = r(n(63)),
            I = r(n(103)),
            u = n(45),
            c = n(11),
            l = function() {
                function t(e) {
                    var n = e.connectionHolder,
                        i = e.onClose,
                        r = e.onBookmark,
                        g = e.onConnection,
                        s = e.reactive,
                        A = e.fetchSize;
                    (0, o.default)(this, t), this._connectionHolder = n, this._reactive = s, this._state = h.ACTIVE, this._onClose = i, this._onBookmark = r, this._onConnection = g, this._onError = this._onErrorCallback.bind(this), this._onComplete = this._onCompleteCallback.bind(this), this._fetchSize = A, this._results = []
                }
                return (0, g.default)(t, [{
                    key: "_begin",
                    value: function(t, e) {
                        var n = this;
                        this._connectionHolder.getConnection().then((function(i) { return n._onConnection(), i.protocol().beginTransaction({ bookmark: t, txConfig: e, mode: n._connectionHolder.mode(), database: n._connectionHolder.database(), beforeError: n._onError, afterComplete: n._onComplete }) })).catch((function(t) { return n._onError(t) }))
                    }
                }, {
                    key: "run",
                    value: function(t, e) {
                        var n = (0, A.validateQueryAndParameters)(t, e),
                            i = n.validatedQuery,
                            r = n.params,
                            o = this._state.run(i, r, { connectionHolder: this._connectionHolder, onError: this._onError, onComplete: this._onComplete, onConnection: this._onConnection, reactive: this._reactive, fetchSize: this._fetchSize });
                        return this._results.push(o), o
                    }
                }, { key: "commit", value: function() { var t = this._state.commit({ connectionHolder: this._connectionHolder, onError: this._onError, onComplete: this._onComplete, onConnection: this._onConnection, pendingResults: this._results }); return this._state = t.state, this._onClose(), new Promise((function(e, n) { t.result.subscribe({ onCompleted: function() { return e() }, onError: function(t) { return n(t) } }) })) } }, { key: "rollback", value: function() { var t = this._state.rollback({ connectionHolder: this._connectionHolder, onError: this._onError, onComplete: this._onComplete, onConnection: this._onConnection, pendingResults: this._results }); return this._state = t.state, this._onClose(), new Promise((function(e, n) { t.result.subscribe({ onCompleted: function() { return e() }, onError: function(t) { return n(t) } }) })) } }, { key: "isOpen", value: function() { return this._state === h.ACTIVE } }, { key: "_onErrorCallback", value: function(t) { return this._state = h.FAILED, this._onClose(), this._connectionHolder.releaseConnection() } }, { key: "_onCompleteCallback", value: function(t) { this._onBookmark(new C.default(t.bookmark)) } }]), t
            }(),
            h = {
                ACTIVE: {
                    commit: function(t) { return { result: d(!0, t.connectionHolder, t.onError, t.onComplete, t.onConnection, t.pendingResults), state: h.SUCCEEDED } },
                    rollback: function(t) { return { result: d(!1, t.connectionHolder, t.onError, t.onComplete, t.onConnection, t.pendingResults), state: h.ROLLED_BACK } },
                    run: function(t, e, n) {
                        var i = n.connectionHolder,
                            r = n.onError,
                            o = n.onComplete,
                            g = n.onConnection,
                            s = n.reactive,
                            A = n.fetchSize;
                        return f(i.getConnection().then((function(n) { return g(), n.protocol().run(t, e, { bookmark: C.default.empty(), txConfig: I.default.empty(), beforeError: r, afterComplete: o, reactive: s, fetchSize: A }) })).catch((function(t) { return new u.FailedObserver({ error: t, onError: r }) })), t, e)
                    }
                },
                FAILED: {
                    commit: function(t) {
                        t.connectionHolder;
                        var e = t.onError;
                        t.onComplete;
                        return { result: f(new u.FailedObserver({ error: (0, c.newError)("Cannot commit this transaction, because it has been rolled back either because of an error or explicit termination."), onError: e }), "COMMIT", {}), state: h.FAILED }
                    },
                    rollback: function(t) { t.connectionHolder, t.onError, t.onComplete; return { result: f(new u.CompletedObserver, "ROLLBACK", {}), state: h.FAILED } },
                    run: function(t, e, n) {
                        n.connectionHolder;
                        var i = n.onError;
                        n.onComplete;
                        return f(new u.FailedObserver({ error: (0, c.newError)("Cannot run query in this transaction, because it has been rolled back either because of an error or explicit termination."), onError: i }), t, e)
                    }
                },
                SUCCEEDED: {
                    commit: function(t) {
                        t.connectionHolder;
                        var e = t.onError;
                        t.onComplete;
                        return { result: f(new u.FailedObserver({ error: (0, c.newError)("Cannot commit this transaction, because it has already been committed."), onError: e }), "COMMIT", {}), state: h.SUCCEEDED }
                    },
                    rollback: function(t) {
                        t.connectionHolder;
                        var e = t.onError;
                        t.onComplete;
                        return { result: f(new u.FailedObserver({ error: (0, c.newError)("Cannot rollback this transaction, because it has already been committed."), onError: e }), "ROLLBACK", {}), state: h.SUCCEEDED }
                    },
                    run: function(t, e, n) {
                        n.connectionHolder;
                        var i = n.onError;
                        n.onComplete;
                        return f(new u.FailedObserver({ error: (0, c.newError)("Cannot run query in this transaction, because it has already been committed."), onError: i }), t, e)
                    }
                },
                ROLLED_BACK: {
                    commit: function(t) {
                        t.connectionHolder;
                        var e = t.onError;
                        t.onComplete;
                        return { result: f(new u.FailedObserver({ error: (0, c.newError)("Cannot commit this transaction, because it has already been rolled back."), onError: e }), "COMMIT", {}), state: h.ROLLED_BACK }
                    },
                    rollback: function(t) { t.connectionHolder, t.onError, t.onComplete; return { result: f(new u.FailedObserver({ error: (0, c.newError)("Cannot rollback this transaction, because it has already been rolled back.") }), "ROLLBACK", {}), state: h.ROLLED_BACK } },
                    run: function(t, e, n) {
                        n.connectionHolder;
                        var i = n.onError;
                        n.onComplete;
                        return f(new u.FailedObserver({ error: (0, c.newError)("Cannot run query in this transaction, because it has already been rolled back."), onError: i }), t, e)
                    }
                }
            };

        function d(t, e, n, i, r, o) { var g = e.getConnection().then((function(e) { return r(), o.forEach((function(t) { return t._cancel() })), Promise.all(o).then((function(r) { return t ? e.protocol().commitTransaction({ beforeError: n, afterComplete: i }) : e.protocol().rollbackTransaction({ beforeError: n, afterComplete: i }) })) })).catch((function(t) { return new u.FailedObserver({ error: t, onError: n }) })); return new s.default(g, t ? "COMMIT" : "ROLLBACK", {}, e) }

        function f(t, e, n) { return new s.default(Promise.resolve(t), e, n, a.EMPTY_CONNECTION_HOLDER) }
        var p = l;
        e.default = p
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(11),
            s = (i(n(169)), n(129)),
            A = n(180),
            a = (i(n(170)), 0),
            C = 1,
            I = 2,
            u = function() {
                function t(e) {
                    (0, r.default)(this, t);
                    var n = e.pipe((0, A.publishReplay)(1), (0, A.refCount)());
                    this._result = n, this._keys = n.pipe((0, A.flatMap)((function(t) { return (0, s.from)(t.keys()) })), (0, A.publishReplay)(1), (0, A.refCount)()), this._records = new s.Subject, this._summary = new s.ReplaySubject, this._state = a
                }
                return (0, o.default)(t, [{ key: "keys", value: function() { return this._keys } }, { key: "records", value: function() { var t = this; return this._result.pipe((0, A.flatMap)((function(e) { return new s.Observable((function(n) { return t._startStreaming({ result: e, recordsObserver: n }) })) }))) } }, { key: "consume", value: function() { var t = this; return this._result.pipe((0, A.flatMap)((function(e) { return new s.Observable((function(n) { return t._startStreaming({ result: e, summaryObserver: n }) })) }))) } }, {
                    key: "_startStreaming",
                    value: function() {
                        var t = this,
                            e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            n = e.result,
                            i = e.recordsObserver,
                            r = void 0 === i ? null : i,
                            o = e.summaryObserver,
                            s = void 0 === o ? null : o,
                            A = [];
                        return s && A.push(this._summary.subscribe(s)), this._state < C ? (this._state = C, r && A.push(this._records.subscribe(r)), A.push({ unsubscribe: function() { n._cancel && n._cancel() } }), 0 === this._records.observers.length && n._cancel(), n.subscribe({ onNext: function(e) { t._records.next(e) }, onCompleted: function(e) { t._records.complete(), t._summary.next(e), t._summary.complete(), t._state = I }, onError: function(e) { t._records.error(e), t._summary.error(e), t._state = I } })) : r && r.error((0, g.newError)("Streaming has already started/consumed with a previous records or summary subscription.")),
                            function() { A.forEach((function(t) { return t.unsubscribe() })) }
                    }
                }]), t
            }();
        e.default = u
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(382)),
            o = i(n(5)),
            g = i(n(6)),
            s = n(38),
            A = n(81),
            a = function() {
                function t() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                        n = e.database,
                        i = e.routers,
                        r = e.readers,
                        g = e.writers,
                        A = e.expirationTime;
                    (0, o.default)(this, t), this.database = n, this.databaseName = n || "default database", this.routers = i || [], this.readers = r || [], this.writers = g || [], this.expirationTime = A || (0, s.int)(0)
                }
                return (0, g.default)(t, [{ key: "forget", value: function(t) { this.readers = C(this.readers, t), this.writers = C(this.writers, t) } }, { key: "forgetRouter", value: function(t) { this.routers = C(this.routers, t) } }, { key: "forgetWriter", value: function(t) { this.writers = C(this.writers, t) } }, { key: "isStaleFor", value: function(t) { return this.expirationTime.lessThan(Date.now()) || this.routers.length < 1 || t === A.READ && 0 === this.readers.length || t === A.WRITE && 0 === this.writers.length } }, { key: "isExpiredFor", value: function(t) { return this.expirationTime.add(t).lessThan(Date.now()) } }, { key: "allServers", value: function() { return [].concat((0, r.default)(this.routers), (0, r.default)(this.readers), (0, r.default)(this.writers)) } }, { key: "toString", value: function() { return "RoutingTable[" + "database=".concat(this.databaseName, ", ") + "expirationTime=".concat(this.expirationTime, ", ") + "currentTime=".concat(Date.now(), ", ") + "routers=[".concat(this.routers, "], ") + "readers=[".concat(this.readers, "], ") + "writers=[".concat(this.writers, "]]") } }]), t
            }();

        function C(t, e) { return t.filter((function(t) { return t.asKey() !== e.asKey() })) }
        e.default = a
    }, function(t, e, n) {
        "use strict";
        var i = n(37),
            r = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var o = r(n(58)),
            g = r(n(64)),
            s = r(n(5)),
            A = r(n(6)),
            a = n(11),
            C = i(n(38)),
            I = (n(387), r(n(63)), r(n(127)), r(n(103))),
            u = r(n(179)),
            c = "CALL dbms.cluster.routing.getRoutingTable($".concat("context", ")"),
            l = "CALL dbms.routing.getRoutingTable($".concat("context", ", $").concat("database", ")"),
            h = function() {
                function t(e, n) {
                    (0, s.default)(this, t), this._routingContext = e, this._initialAddress = n
                }
                var e;
                return (0, A.default)(t, [{
                    key: "callRoutingProcedure",
                    value: (e = (0, g.default)(o.default.mark((function t(e, n, i) {
                        var r;
                        return o.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.prev = 0, t.next = 3, this._callAvailableRoutingProcedure(e, n);
                                case 3:
                                    return r = t.sent, t.next = 6, e.close();
                                case 6:
                                    return t.abrupt("return", r.records);
                                case 9:
                                    if (t.prev = 9, t.t0 = t.catch(0), "Neo.ClientError.Database.DatabaseNotFound" !== t.t0.code) { t.next = 15; break }
                                    throw t.t0;
                                case 15:
                                    if ("Neo.ClientError.Procedure.ProcedureNotFound" !== t.t0.code) { t.next = 19; break }
                                    throw (0, a.newError)("Server at ".concat(i.asHostPort(), " can't perform routing. Make sure you are connecting to a causal cluster"), a.SERVICE_UNAVAILABLE);
                                case 19:
                                    return t.abrupt("return", null);
                                case 20:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this, [
                            [0, 9]
                        ])
                    }))), function(t, n, i) { return e.apply(this, arguments) })
                }, {
                    key: "parseTtl",
                    value: function(t, e) {
                        try {
                            var n = (0, C.int)(Date.now()),
                                i = (0, C.int)(t.get("ttl")).multiply(1e3).add(n);
                            return i.lessThan(n) ? C.default.MAX_VALUE : i
                        } catch (n) { throw (0, a.newError)("Unable to parse TTL entry from router ".concat(e, " from record:\n").concat(JSON.stringify(t), "\nError message: ").concat(n.message), a.PROTOCOL_ERROR) }
                    }
                }, {
                    key: "parseServers",
                    value: function(t, e) {
                        try {
                            var n = t.get("servers"),
                                i = [],
                                r = [],
                                o = [];
                            return n.forEach((function(t) {
                                var e = t.role,
                                    n = t.addresses;
                                if ("ROUTE" === e) i = d(n).map((function(t) { return u.default.fromUrl(t) }));
                                else if ("WRITE" === e) o = d(n).map((function(t) { return u.default.fromUrl(t) }));
                                else {
                                    if ("READ" !== e) throw (0, a.newError)('Unknown server role "' + e + '"', a.PROTOCOL_ERROR);
                                    r = d(n).map((function(t) { return u.default.fromUrl(t) }))
                                }
                            })), { routers: i, readers: r, writers: o }
                        } catch (n) { throw (0, a.newError)("Unable to parse servers entry from router ".concat(e, " from record:\n").concat(JSON.stringify(t), "\nError message: ").concat(n.message), a.PROTOCOL_ERROR) }
                    }
                }, { key: "_callAvailableRoutingProcedure", value: function(t, e) { var n = this; return t._run(null, null, (function(i) { var r, o; return i.protocol().version >= 4 ? (r = l, (o = { context: n._routingContext || {}, database: e || null }).context.address = n._initialAddress) : (r = c, o = { context: n._routingContext }), i.protocol().run(r, o, { bookmark: t._lastBookmark, txConfig: I.default.empty(), mode: t._mode, database: t._database, afterComplete: t._onComplete }) })) } }]), t
            }();

        function d(t) { if (!Array.isArray(t)) throw new TypeError("Array expected but got: " + t); return Array.from(t) }
        e.default = h
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = n(388),
            g = n(24),
            s = function t(e, n, i, o, g) {
                (0, r.default)(this, t), this.scheme = e, this.host = n, this.port = i, this.hostAndPort = o, this.query = g
            };

        function A(t, e, n) { if (!(t = (t || "").trim())) throw new Error("Illegal empty ".concat(e, " in URL query '").concat(n, "'")); return t }

        function a(t) {
            var e = "[" === t.charAt(0),
                n = "]" === t.charAt(t.length - 1);
            if (e || n) { if (e && n) return t; throw new Error("Illegal IPv6 address ".concat(t)) }
            return "[".concat(t, "]")
        }

        function C(t) { return "http" === t ? 7474 : "https" === t ? 7473 : 7687 }
        var I = {
            parseDatabaseUrl: function(t) {
                (0, g.assertString)(t, "URL");
                var e = function(t) { if (-1 === (t = t.trim()).indexOf("://")) return { schemeMissing: !0, url: "none://".concat(t) }; return { schemeMissing: !1, url: t } }(t),
                    n = (0, o.parse)(e.url),
                    i = e.schemeMissing ? null : function(t) { if (t) return ":" === (t = t.trim()).charAt(t.length - 1) && (t = t.substring(0, t.length - 1)), t; return null }(n.scheme),
                    r = function(t, e) { if (!t) throw new Error("Unable to extract host from ".concat(e)); return t.trim() }(n.host),
                    I = function(t) { if (!t) throw new Error("Illegal host ".concat(t)); return t.indexOf(":") >= 0 ? a(t) : t }(r),
                    u = function(t, e) { var n = parseInt(t, 10); return 0 === n || n ? n : C(e) }(n.port, i),
                    c = "".concat(I, ":").concat(u),
                    l = function(t, e) {
                        var n = function(t) {
                                (t = (t || "").trim()) && "?" === t.charAt(0) && (t = t.substring(1, t.length));
                                return t
                            }(t),
                            i = {};
                        n && n.split("&").forEach((function(t) {
                            var n = t.split("=");
                            if (2 !== n.length) throw new Error("Invalid parameters: '".concat(n, "' in URL '").concat(e, "'."));
                            var r = A(n[0], "key", e),
                                o = A(n[1], "value", e);
                            if (i[r]) throw new Error("Duplicated query parameters with key '".concat(r, "' in URL '").concat(e, "'"));
                            i[r] = o
                        }));
                        return i
                    }(n.query, t);
                return new s(i, r, u, c, l)
            },
            defaultPortForScheme: C,
            formatIPv4Address: function(t, e) { return "".concat(t, ":").concat(e) },
            formatIPv6Address: function(t, e) { var n = a(t); return "".concat(n, ":").concat(e) }
        };
        e.default = I
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(16)),
            s = i(n(12)),
            A = i(n(17)),
            a = i(n(390)),
            C = function(t) {
                function e(t) { var n; return (0, r.default)(this, e), (n = (0, g.default)(this, (0, s.default)(e).call(this)))._readersIndex = new a.default, n._writersIndex = new a.default, n._connectionPool = t, n }
                return (0, A.default)(e, t), (0, o.default)(e, [{ key: "selectReader", value: function(t) { return this._select(t, this._readersIndex) } }, { key: "selectWriter", value: function(t) { return this._select(t, this._writersIndex) } }, {
                    key: "_select",
                    value: function(t, e) {
                        var n = t.length;
                        if (0 === n) return null;
                        var i = e.next(n),
                            r = i,
                            o = null,
                            g = Number.MAX_SAFE_INTEGER;
                        do {
                            var s = t[r],
                                A = this._connectionPool.activeResourceCount(s);
                            A < g && (o = s, g = A), r === n - 1 ? r = 0 : r++
                        } while (r !== i);
                        return o
                    }
                }]), e
            }(i(n(391)).default);
        e.default = C
    }, function(t, e, n) {
        "use strict";
        (function(t) {
            n.d(e, "a", (function() { return DC })), n.d(e, "b", (function() { return Yc }));
            /**
             * vis-network
             * https://visjs.github.io/vis-network/
             *
             * A dynamic, browser-based visualization library.
             *
             * @version 7.10.2
             * @date    2020-07-25T19:58:51.154Z
             *
             * @copyright (c) 2011-2017 Almende B.V, http://almende.com
             * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs
             *
             * @license
             * vis.js is dual licensed under both
             *
             *   1. The Apache 2.0 License
             *      http://www.apache.org/licenses/LICENSE-2.0
             *
             *   and
             *
             *   2. The MIT License
             *      http://opensource.org/licenses/MIT
             *
             * vis.js may be distributed under either license.
             */
            var i = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : void 0 !== t ? t : "undefined" != typeof self ? self : {};

            function r(t, e, n) { return t(n = { path: e, exports: {}, require: function(t, e) { return o(null == e && n.path) } }, n.exports), n.exports }

            function o() { throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs") }
            var g = function(t) { return t && t.Math == Math && t },
                s = g("object" == typeof globalThis && globalThis) || g("object" == typeof window && window) || g("object" == typeof self && self) || g("object" == typeof i && i) || Function("return this")(),
                A = function(t) { try { return !!t() } catch (t) { return !0 } },
                a = !A((function() { return 7 != Object.defineProperty({}, 1, { get: function() { return 7 } })[1] })),
                C = {}.propertyIsEnumerable,
                I = Object.getOwnPropertyDescriptor,
                u = { f: I && !C.call({ 1: 2 }, 1) ? function(t) { var e = I(this, t); return !!e && e.enumerable } : C },
                c = function(t, e) { return { enumerable: !(1 & t), configurable: !(2 & t), writable: !(4 & t), value: e } },
                l = {}.toString,
                h = function(t) { return l.call(t).slice(8, -1) },
                d = "".split,
                f = A((function() { return !Object("z").propertyIsEnumerable(0) })) ? function(t) { return "String" == h(t) ? d.call(t, "") : Object(t) } : Object,
                p = function(t) { if (null == t) throw TypeError("Can't call method on " + t); return t },
                v = function(t) { return f(p(t)) },
                y = function(t) { return "object" == typeof t ? null !== t : "function" == typeof t },
                b = function(t, e) { if (!y(t)) return t; var n, i; if (e && "function" == typeof(n = t.toString) && !y(i = n.call(t))) return i; if ("function" == typeof(n = t.valueOf) && !y(i = n.call(t))) return i; if (!e && "function" == typeof(n = t.toString) && !y(i = n.call(t))) return i; throw TypeError("Can't convert object to primitive value") },
                m = {}.hasOwnProperty,
                w = function(t, e) { return m.call(t, e) },
                _ = s.document,
                k = y(_) && y(_.createElement),
                x = function(t) { return k ? _.createElement(t) : {} },
                O = !a && !A((function() { return 7 != Object.defineProperty(x("div"), "a", { get: function() { return 7 } }).a })),
                E = Object.getOwnPropertyDescriptor,
                T = {
                    f: a ? E : function(t, e) {
                        if (t = v(t), e = b(e, !0), O) try { return E(t, e) } catch (t) {}
                        if (w(t, e)) return c(!u.f.call(t, e), t[e])
                    }
                },
                S = /#|\.prototype\./,
                D = function(t, e) { var n = R[N(t)]; return n == M || n != P && ("function" == typeof e ? A(e) : !!e) },
                N = D.normalize = function(t) { return String(t).replace(S, ".").toLowerCase() },
                R = D.data = {},
                P = D.NATIVE = "N",
                M = D.POLYFILL = "P",
                j = D,
                F = {},
                z = function(t) { if ("function" != typeof t) throw TypeError(String(t) + " is not a function"); return t },
                L = function(t, e, n) {
                    if (z(t), void 0 === e) return t;
                    switch (n) {
                        case 0:
                            return function() { return t.call(e) };
                        case 1:
                            return function(n) { return t.call(e, n) };
                        case 2:
                            return function(n, i) { return t.call(e, n, i) };
                        case 3:
                            return function(n, i, r) { return t.call(e, n, i, r) }
                    }
                    return function() { return t.apply(e, arguments) }
                },
                B = function(t) { if (!y(t)) throw TypeError(String(t) + " is not an object"); return t },
                Z = Object.defineProperty,
                V = {
                    f: a ? Z : function(t, e, n) {
                        if (B(t), e = b(e, !0), B(n), O) try { return Z(t, e, n) } catch (t) {}
                        if ("get" in n || "set" in n) throw TypeError("Accessors not supported");
                        return "value" in n && (t[e] = n.value), t
                    }
                },
                Y = a ? function(t, e, n) { return V.f(t, e, c(1, n)) } : function(t, e, n) { return t[e] = n, t },
                G = T.f,
                U = function(t) {
                    var e = function(e, n, i) {
                        if (this instanceof t) {
                            switch (arguments.length) {
                                case 0:
                                    return new t;
                                case 1:
                                    return new t(e);
                                case 2:
                                    return new t(e, n)
                            }
                            return new t(e, n, i)
                        }
                        return t.apply(this, arguments)
                    };
                    return e.prototype = t.prototype, e
                },
                W = function(t, e) {
                    var n, i, r, o, g, A, a, C, I = t.target,
                        u = t.global,
                        c = t.stat,
                        l = t.proto,
                        h = u ? s : c ? s[I] : (s[I] || {}).prototype,
                        d = u ? F : F[I] || (F[I] = {}),
                        f = d.prototype;
                    for (r in e) n = !j(u ? r : I + (c ? "." : "#") + r, t.forced) && h && w(h, r), g = d[r], n && (A = t.noTargetGet ? (C = G(h, r)) && C.value : h[r]), o = n && A ? A : e[r], n && typeof g == typeof o || (a = t.bind && n ? L(o, s) : t.wrap && n ? U(o) : l && "function" == typeof o ? L(Function.call, o) : o, (t.sham || o && o.sham || g && g.sham) && Y(a, "sham", !0), d[r] = a, l && (w(F, i = I + "Prototype") || Y(F, i, {}), F[i][r] = o, t.real && f && !f[r] && Y(f, r, o)))
                },
                H = [].slice,
                K = {},
                Q = function(t, e, n) {
                    if (!(e in K)) {
                        for (var i = [], r = 0; r < e; r++) i[r] = "a[" + r + "]";
                        K[e] = Function("C,a", "return new C(" + i.join(",") + ")")
                    }
                    return K[e](t, n)
                },
                X = Function.bind || function(t) {
                    var e = z(this),
                        n = H.call(arguments, 1),
                        i = function() { var r = n.concat(H.call(arguments)); return this instanceof i ? Q(e, r.length, r) : e.apply(t, r) };
                    return y(e.prototype) && (i.prototype = e.prototype), i
                };
            W({ target: "Function", proto: !0 }, { bind: X });
            var q = function(t) { return F[t + "Prototype"] },
                J = q("Function").bind,
                $ = Function.prototype,
                tt = function(t) { var e = t.bind; return t === $ || t instanceof Function && e === $.bind ? J : e },
                et = Math.ceil,
                nt = Math.floor,
                it = function(t) { return isNaN(t = +t) ? 0 : (t > 0 ? nt : et)(t) },
                rt = Math.min,
                ot = function(t) { return t > 0 ? rt(it(t), 9007199254740991) : 0 },
                gt = Math.max,
                st = Math.min,
                At = function(t, e) { var n = it(t); return n < 0 ? gt(n + e, 0) : st(n, e) },
                at = function(t) {
                    return function(e, n, i) {
                        var r, o = v(e),
                            g = ot(o.length),
                            s = At(i, g);
                        if (t && n != n) {
                            for (; g > s;)
                                if ((r = o[s++]) != r) return !0
                        } else
                            for (; g > s; s++)
                                if ((t || s in o) && o[s] === n) return t || s || 0; return !t && -1
                    }
                },
                Ct = { includes: at(!0), indexOf: at(!1) },
                It = {},
                ut = Ct.indexOf,
                ct = function(t, e) {
                    var n, i = v(t),
                        r = 0,
                        o = [];
                    for (n in i) !w(It, n) && w(i, n) && o.push(n);
                    for (; e.length > r;) w(i, n = e[r++]) && (~ut(o, n) || o.push(n));
                    return o
                },
                lt = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"],
                ht = Object.keys || function(t) { return ct(t, lt) },
                dt = { f: Object.getOwnPropertySymbols },
                ft = function(t) { return Object(p(t)) },
                pt = Object.assign,
                vt = Object.defineProperty,
                yt = !pt || A((function() {
                    if (a && 1 !== pt({ b: 1 }, pt(vt({}, "a", { enumerable: !0, get: function() { vt(this, "b", { value: 3, enumerable: !1 }) } }), { b: 2 })).b) return !0;
                    var t = {},
                        e = {},
                        n = Symbol();
                    return t[n] = 7, "abcdefghijklmnopqrst".split("").forEach((function(t) { e[t] = t })), 7 != pt({}, t)[n] || "abcdefghijklmnopqrst" != ht(pt({}, e)).join("")
                })) ? function(t, e) {
                    for (var n = ft(t), i = arguments.length, r = 1, o = dt.f, g = u.f; i > r;)
                        for (var s, A = f(arguments[r++]), C = o ? ht(A).concat(o(A)) : ht(A), I = C.length, c = 0; I > c;) s = C[c++], a && !g.call(A, s) || (n[s] = A[s]);
                    return n
                } : pt;
            W({ target: "Object", stat: !0, forced: Object.assign !== yt }, { assign: yt });
            var bt = F.Object.assign;

            function mt(t, e, n, i) { t.beginPath(), t.arc(e, n, i, 0, 2 * Math.PI, !1), t.closePath() }

            function wt(t, e, n, i, r, o) {
                var g = Math.PI / 180;
                i - 2 * o < 0 && (o = i / 2), r - 2 * o < 0 && (o = r / 2), t.beginPath(), t.moveTo(e + o, n), t.lineTo(e + i - o, n), t.arc(e + i - o, n + o, o, 270 * g, 360 * g, !1), t.lineTo(e + i, n + r - o), t.arc(e + i - o, n + r - o, o, 0, 90 * g, !1), t.lineTo(e + o, n + r), t.arc(e + o, n + r - o, o, 90 * g, 180 * g, !1), t.lineTo(e, n + o), t.arc(e + o, n + o, o, 180 * g, 270 * g, !1), t.closePath()
            }

            function _t(t, e, n, i, r) {
                var o = i / 2 * .5522848,
                    g = r / 2 * .5522848,
                    s = e + i,
                    A = n + r,
                    a = e + i / 2,
                    C = n + r / 2;
                t.beginPath(), t.moveTo(e, C), t.bezierCurveTo(e, C - g, a - o, n, a, n), t.bezierCurveTo(a + o, n, s, C - g, s, C), t.bezierCurveTo(s, C + g, a + o, A, a, A), t.bezierCurveTo(a - o, A, e, C + g, e, C), t.closePath()
            }

            function kt(t, e, n, i, r) {
                var o = r * (1 / 3),
                    g = i / 2 * .5522848,
                    s = o / 2 * .5522848,
                    A = e + i,
                    a = n + o,
                    C = e + i / 2,
                    I = n + o / 2,
                    u = n + (r - o / 2),
                    c = n + r;
                t.beginPath(), t.moveTo(A, I), t.bezierCurveTo(A, I + s, C + g, a, C, a), t.bezierCurveTo(C - g, a, e, I + s, e, I), t.bezierCurveTo(e, I - s, C - g, n, C, n), t.bezierCurveTo(C + g, n, A, I - s, A, I), t.lineTo(A, u), t.bezierCurveTo(A, u + s, C + g, c, C, c), t.bezierCurveTo(C - g, c, e, u + s, e, u), t.lineTo(e, I)
            }

            function xt(t, e, n, i, r, o) { t.beginPath(), t.moveTo(e, n); for (var g = o.length, s = i - e, A = r - n, a = A / s, C = Math.sqrt(s * s + A * A), I = 0, u = !0, c = 0, l = +o[0]; C >= .1;)(l = +o[I++ % g]) > C && (l = C), c = Math.sqrt(l * l / (1 + a * a)), e += c = s < 0 ? -c : c, n += a * c, !0 === u ? t.lineTo(e, n) : t.moveTo(e, n), C -= l, u = !u }
            var Ot = {
                circle: mt,
                dashedLine: xt,
                database: kt,
                diamond: function(t, e, n, i) { t.beginPath(), t.lineTo(e, n + i), t.lineTo(e + i, n), t.lineTo(e, n - i), t.lineTo(e - i, n), t.closePath() },
                ellipse: _t,
                ellipse_vis: _t,
                hexagon: function(t, e, n, i) {
                    t.beginPath();
                    var r = 2 * Math.PI / 6;
                    t.moveTo(e + i, n);
                    for (var o = 1; o < 6; o++) t.lineTo(e + i * Math.cos(r * o), n + i * Math.sin(r * o));
                    t.closePath()
                },
                roundRect: wt,
                square: function(t, e, n, i) { t.beginPath(), t.rect(e - i, n - i, 2 * i, 2 * i), t.closePath() },
                star: function(t, e, n, i) {
                    t.beginPath(), n += .1 * (i *= .82);
                    for (var r = 0; r < 10; r++) {
                        var o = r % 2 == 0 ? 1.3 * i : .5 * i;
                        t.lineTo(e + o * Math.sin(2 * r * Math.PI / 10), n - o * Math.cos(2 * r * Math.PI / 10))
                    }
                    t.closePath()
                },
                triangle: function(t, e, n, i) {
                    t.beginPath(), n += .275 * (i *= 1.15);
                    var r = 2 * i,
                        o = r / 2,
                        g = Math.sqrt(3) / 6 * r,
                        s = Math.sqrt(r * r - o * o);
                    t.moveTo(e, n - (s - g)), t.lineTo(e + o, n + g), t.lineTo(e - o, n + g), t.lineTo(e, n - (s - g)), t.closePath()
                },
                triangleDown: function(t, e, n, i) {
                    t.beginPath(), n -= .275 * (i *= 1.15);
                    var r = 2 * i,
                        o = r / 2,
                        g = Math.sqrt(3) / 6 * r,
                        s = Math.sqrt(r * r - o * o);
                    t.moveTo(e, n + (s - g)), t.lineTo(e + o, n - g), t.lineTo(e - o, n - g), t.lineTo(e, n + (s - g)), t.closePath()
                }
            };
            var Et = r((function(t) {
                function e(t) { if (t) return function(t) { for (var n in e.prototype) t[n] = e.prototype[n]; return t }(t) }
                t.exports = e, e.prototype.on = e.prototype.addEventListener = function(t, e) { return this._callbacks = this._callbacks || {}, (this._callbacks["$" + t] = this._callbacks["$" + t] || []).push(e), this }, e.prototype.once = function(t, e) {
                    function n() { this.off(t, n), e.apply(this, arguments) }
                    return n.fn = e, this.on(t, n), this
                }, e.prototype.off = e.prototype.removeListener = e.prototype.removeAllListeners = e.prototype.removeEventListener = function(t, e) {
                    if (this._callbacks = this._callbacks || {}, 0 == arguments.length) return this._callbacks = {}, this;
                    var n, i = this._callbacks["$" + t];
                    if (!i) return this;
                    if (1 == arguments.length) return delete this._callbacks["$" + t], this;
                    for (var r = 0; r < i.length; r++)
                        if ((n = i[r]) === e || n.fn === e) { i.splice(r, 1); break }
                    return 0 === i.length && delete this._callbacks["$" + t], this
                }, e.prototype.emit = function(t) { this._callbacks = this._callbacks || {}; for (var e = new Array(arguments.length - 1), n = this._callbacks["$" + t], i = 1; i < arguments.length; i++) e[i - 1] = arguments[i]; if (n) { i = 0; for (var r = (n = n.slice(0)).length; i < r; ++i) n[i].apply(this, e) } return this }, e.prototype.listeners = function(t) { return this._callbacks = this._callbacks || {}, this._callbacks["$" + t] || [] }, e.prototype.hasListeners = function(t) { return !!this.listeners(t).length }
            }));
            W({ target: "Object", stat: !0, forced: !a, sham: !a }, { defineProperty: V.f });
            var Tt = r((function(t) {
                    var e = F.Object,
                        n = t.exports = function(t, n, i) { return e.defineProperty(t, n, i) };
                    e.defineProperty.sham && (n.sham = !0)
                })),
                St = Tt,
                Dt = a ? Object.defineProperties : function(t, e) { B(t); for (var n, i = ht(e), r = i.length, o = 0; r > o;) V.f(t, n = i[o++], e[n]); return t };
            W({ target: "Object", stat: !0, forced: !a, sham: !a }, { defineProperties: Dt });
            var Nt = r((function(t) {
                    var e = F.Object,
                        n = t.exports = function(t, n) { return e.defineProperties(t, n) };
                    e.defineProperties.sham && (n.sham = !0)
                })),
                Rt = function(t) { return "function" == typeof t ? t : void 0 },
                Pt = function(t, e) { return arguments.length < 2 ? Rt(F[t]) || Rt(s[t]) : F[t] && F[t][e] || s[t] && s[t][e] },
                Mt = lt.concat("length", "prototype"),
                jt = { f: Object.getOwnPropertyNames || function(t) { return ct(t, Mt) } },
                Ft = Pt("Reflect", "ownKeys") || function(t) {
                    var e = jt.f(B(t)),
                        n = dt.f;
                    return n ? e.concat(n(t)) : e
                },
                zt = function(t, e, n) {
                    var i = b(e);
                    i in t ? V.f(t, i, c(0, n)) : t[i] = n
                };
            W({ target: "Object", stat: !0, sham: !a }, { getOwnPropertyDescriptors: function(t) { for (var e, n, i = v(t), r = T.f, o = Ft(i), g = {}, s = 0; o.length > s;) void 0 !== (n = r(i, e = o[s++])) && zt(g, e, n); return g } });
            var Lt = F.Object.getOwnPropertyDescriptors,
                Bt = T.f,
                Zt = A((function() { Bt(1) }));
            W({ target: "Object", stat: !0, forced: !a || Zt, sham: !a }, { getOwnPropertyDescriptor: function(t, e) { return Bt(v(t), e) } });
            var Vt, Yt = r((function(t) {
                    var e = F.Object,
                        n = t.exports = function(t, n) { return e.getOwnPropertyDescriptor(t, n) };
                    e.getOwnPropertyDescriptor.sham && (n.sham = !0)
                })),
                Gt = Yt,
                Ut = !!Object.getOwnPropertySymbols && !A((function() { return !String(Symbol()) })),
                Wt = Ut && !Symbol.sham && "symbol" == typeof Symbol.iterator,
                Ht = Array.isArray || function(t) { return "Array" == h(t) },
                Kt = Pt("document", "documentElement"),
                Qt = s["__core-js_shared__"] || function(t, e) { try { Y(s, t, e) } catch (n) { s[t] = e } return e }("__core-js_shared__", {}),
                Xt = r((function(t) {
                    (t.exports = function(t, e) { return Qt[t] || (Qt[t] = void 0 !== e ? e : {}) })("versions", []).push({ version: "3.6.4", mode: "pure", copyright: "© 2020 Denis Pushkarev (zloirock.ru)" })
                })),
                qt = 0,
                Jt = Math.random(),
                $t = function(t) { return "Symbol(" + String(void 0 === t ? "" : t) + ")_" + (++qt + Jt).toString(36) },
                te = Xt("keys"),
                ee = function(t) { return te[t] || (te[t] = $t(t)) },
                ne = ee("IE_PROTO"),
                ie = function() {},
                re = function(t) { return "<script>" + t + "<\/script>" },
                oe = function() {
                    try { Vt = document.domain && new ActiveXObject("htmlfile") } catch (t) {}
                    var t, e;
                    oe = Vt ? function(t) { t.write(re("")), t.close(); var e = t.parentWindow.Object; return t = null, e }(Vt) : ((e = x("iframe")).style.display = "none", Kt.appendChild(e), e.src = String("javascript:"), (t = e.contentWindow.document).open(), t.write(re("document.F=Object")), t.close(), t.F);
                    for (var n = lt.length; n--;) delete oe.prototype[lt[n]];
                    return oe()
                };
            It[ne] = !0;
            var ge = Object.create || function(t, e) { var n; return null !== t ? (ie.prototype = B(t), n = new ie, ie.prototype = null, n[ne] = t) : n = oe(), void 0 === e ? n : Dt(n, e) },
                se = jt.f,
                Ae = {}.toString,
                ae = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [],
                Ce = { f: function(t) { return ae && "[object Window]" == Ae.call(t) ? function(t) { try { return se(t) } catch (t) { return ae.slice() } }(t) : se(v(t)) } },
                Ie = function(t, e, n, i) { i && i.enumerable ? t[e] = n : Y(t, e, n) },
                ue = Xt("wks"),
                ce = s.Symbol,
                le = Wt ? ce : ce && ce.withoutSetter || $t,
                he = function(t) { return w(ue, t) || (Ut && w(ce, t) ? ue[t] = ce[t] : ue[t] = le("Symbol." + t)), ue[t] },
                de = { f: he },
                fe = V.f,
                pe = function(t) {
                    var e = F.Symbol || (F.Symbol = {});
                    w(e, t) || fe(e, t, { value: de.f(t) })
                },
                ve = {};
            ve[he("toStringTag")] = "z";
            var ye = "[object z]" === String(ve),
                be = he("toStringTag"),
                me = "Arguments" == h(function() { return arguments }()),
                we = ye ? h : function(t) { var e, n, i; return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof(n = function(t, e) { try { return t[e] } catch (t) {} }(e = Object(t), be)) ? n : me ? h(e) : "Object" == (i = h(e)) && "function" == typeof e.callee ? "Arguments" : i },
                _e = ye ? {}.toString : function() { return "[object " + we(this) + "]" },
                ke = V.f,
                xe = he("toStringTag"),
                Oe = function(t, e, n, i) {
                    if (t) {
                        var r = n ? t : t.prototype;
                        w(r, xe) || ke(r, xe, { configurable: !0, value: e }), i && !ye && Y(r, "toString", _e)
                    }
                },
                Ee = Function.toString;
            "function" != typeof Qt.inspectSource && (Qt.inspectSource = function(t) { return Ee.call(t) });
            var Te, Se, De, Ne = Qt.inspectSource,
                Re = s.WeakMap,
                Pe = "function" == typeof Re && /native code/.test(Ne(Re)),
                Me = s.WeakMap;
            if (Pe) {
                var je = new Me,
                    Fe = je.get,
                    ze = je.has,
                    Le = je.set;
                Te = function(t, e) { return Le.call(je, t, e), e }, Se = function(t) { return Fe.call(je, t) || {} }, De = function(t) { return ze.call(je, t) }
            } else {
                var Be = ee("state");
                It[Be] = !0, Te = function(t, e) { return Y(t, Be, e), e }, Se = function(t) { return w(t, Be) ? t[Be] : {} }, De = function(t) { return w(t, Be) }
            }
            var Ze = { set: Te, get: Se, has: De, enforce: function(t) { return De(t) ? Se(t) : Te(t, {}) }, getterFor: function(t) { return function(e) { var n; if (!y(e) || (n = Se(e)).type !== t) throw TypeError("Incompatible receiver, " + t + " required"); return n } } },
                Ve = he("species"),
                Ye = function(t, e) { var n; return Ht(t) && ("function" != typeof(n = t.constructor) || n !== Array && !Ht(n.prototype) ? y(n) && null === (n = n[Ve]) && (n = void 0) : n = void 0), new(void 0 === n ? Array : n)(0 === e ? 0 : e) },
                Ge = [].push,
                Ue = function(t) {
                    var e = 1 == t,
                        n = 2 == t,
                        i = 3 == t,
                        r = 4 == t,
                        o = 6 == t,
                        g = 5 == t || o;
                    return function(s, A, a, C) {
                        for (var I, u, c = ft(s), l = f(c), h = L(A, a, 3), d = ot(l.length), p = 0, v = C || Ye, y = e ? v(s, d) : n ? v(s, 0) : void 0; d > p; p++)
                            if ((g || p in l) && (u = h(I = l[p], p, c), t))
                                if (e) y[p] = u;
                                else if (u) switch (t) {
                                case 3:
                                    return !0;
                                case 5:
                                    return I;
                                case 6:
                                    return p;
                                case 2:
                                    Ge.call(y, I)
                            } else if (r) return !1;
                        return o ? -1 : i || r ? r : y
                    }
                },
                We = { forEach: Ue(0), map: Ue(1), filter: Ue(2), some: Ue(3), every: Ue(4), find: Ue(5), findIndex: Ue(6) },
                He = We.forEach,
                Ke = ee("hidden"),
                Qe = he("toPrimitive"),
                Xe = Ze.set,
                qe = Ze.getterFor("Symbol"),
                Je = Object.prototype,
                $e = s.Symbol,
                tn = Pt("JSON", "stringify"),
                en = T.f,
                nn = V.f,
                rn = Ce.f,
                on = u.f,
                gn = Xt("symbols"),
                sn = Xt("op-symbols"),
                An = Xt("string-to-symbol-registry"),
                an = Xt("symbol-to-string-registry"),
                Cn = Xt("wks"),
                In = s.QObject,
                un = !In || !In.prototype || !In.prototype.findChild,
                cn = a && A((function() { return 7 != ge(nn({}, "a", { get: function() { return nn(this, "a", { value: 7 }).a } })).a })) ? function(t, e, n) {
                    var i = en(Je, e);
                    i && delete Je[e], nn(t, e, n), i && t !== Je && nn(Je, e, i)
                } : nn,
                ln = function(t, e) { var n = gn[t] = ge($e.prototype); return Xe(n, { type: "Symbol", tag: t, description: e }), a || (n.description = e), n },
                hn = Wt ? function(t) { return "symbol" == typeof t } : function(t) { return Object(t) instanceof $e },
                dn = function(t, e, n) { t === Je && dn(sn, e, n), B(t); var i = b(e, !0); return B(n), w(gn, i) ? (n.enumerable ? (w(t, Ke) && t[Ke][i] && (t[Ke][i] = !1), n = ge(n, { enumerable: c(0, !1) })) : (w(t, Ke) || nn(t, Ke, c(1, {})), t[Ke][i] = !0), cn(t, i, n)) : nn(t, i, n) },
                fn = function(t, e) {
                    B(t);
                    var n = v(e),
                        i = ht(n).concat(bn(n));
                    return He(i, (function(e) { a && !pn.call(n, e) || dn(t, e, n[e]) })), t
                },
                pn = function(t) {
                    var e = b(t, !0),
                        n = on.call(this, e);
                    return !(this === Je && w(gn, e) && !w(sn, e)) && (!(n || !w(this, e) || !w(gn, e) || w(this, Ke) && this[Ke][e]) || n)
                },
                vn = function(t, e) {
                    var n = v(t),
                        i = b(e, !0);
                    if (n !== Je || !w(gn, i) || w(sn, i)) { var r = en(n, i); return !r || !w(gn, i) || w(n, Ke) && n[Ke][i] || (r.enumerable = !0), r }
                },
                yn = function(t) {
                    var e = rn(v(t)),
                        n = [];
                    return He(e, (function(t) { w(gn, t) || w(It, t) || n.push(t) })), n
                },
                bn = function(t) {
                    var e = t === Je,
                        n = rn(e ? sn : v(t)),
                        i = [];
                    return He(n, (function(t) {!w(gn, t) || e && !w(Je, t) || i.push(gn[t]) })), i
                };
            if (Ut || (Ie(($e = function() {
                    if (this instanceof $e) throw TypeError("Symbol is not a constructor");
                    var t = arguments.length && void 0 !== arguments[0] ? String(arguments[0]) : void 0,
                        e = $t(t),
                        n = function(t) { this === Je && n.call(sn, t), w(this, Ke) && w(this[Ke], e) && (this[Ke][e] = !1), cn(this, e, c(1, t)) };
                    return a && un && cn(Je, e, { configurable: !0, set: n }), ln(e, t)
                }).prototype, "toString", (function() { return qe(this).tag })), Ie($e, "withoutSetter", (function(t) { return ln($t(t), t) })), u.f = pn, V.f = dn, T.f = vn, jt.f = Ce.f = yn, dt.f = bn, de.f = function(t) { return ln(he(t), t) }, a && nn($e.prototype, "description", { configurable: !0, get: function() { return qe(this).description } })), W({ global: !0, wrap: !0, forced: !Ut, sham: !Ut }, { Symbol: $e }), He(ht(Cn), (function(t) { pe(t) })), W({ target: "Symbol", stat: !0, forced: !Ut }, { for: function(t) { var e = String(t); if (w(An, e)) return An[e]; var n = $e(e); return An[e] = n, an[n] = e, n }, keyFor: function(t) { if (!hn(t)) throw TypeError(t + " is not a symbol"); if (w(an, t)) return an[t] }, useSetter: function() { un = !0 }, useSimple: function() { un = !1 } }), W({ target: "Object", stat: !0, forced: !Ut, sham: !a }, { create: function(t, e) { return void 0 === e ? ge(t) : fn(ge(t), e) }, defineProperty: dn, defineProperties: fn, getOwnPropertyDescriptor: vn }), W({ target: "Object", stat: !0, forced: !Ut }, { getOwnPropertyNames: yn, getOwnPropertySymbols: bn }), W({ target: "Object", stat: !0, forced: A((function() { dt.f(1) })) }, { getOwnPropertySymbols: function(t) { return dt.f(ft(t)) } }), tn) {
                var mn = !Ut || A((function() { var t = $e(); return "[null]" != tn([t]) || "{}" != tn({ a: t }) || "{}" != tn(Object(t)) }));
                W({ target: "JSON", stat: !0, forced: mn }, { stringify: function(t, e, n) { for (var i, r = [t], o = 1; arguments.length > o;) r.push(arguments[o++]); if (i = e, (y(e) || void 0 !== t) && !hn(t)) return Ht(e) || (e = function(t, e) { if ("function" == typeof i && (e = i.call(this, t, e)), !hn(e)) return e }), r[1] = e, tn.apply(null, r) } })
            }
            $e.prototype[Qe] || Y($e.prototype, Qe, $e.prototype.valueOf), Oe($e, "Symbol"), It[Ke] = !0;
            var wn, _n, kn, xn = F.Object.getOwnPropertySymbols,
                On = {},
                En = !A((function() {
                    function t() {}
                    return t.prototype.constructor = null, Object.getPrototypeOf(new t) !== t.prototype
                })),
                Tn = ee("IE_PROTO"),
                Sn = Object.prototype,
                Dn = En ? Object.getPrototypeOf : function(t) { return t = ft(t), w(t, Tn) ? t[Tn] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? Sn : null },
                Nn = (he("iterator"), !1);
            [].keys && ("next" in (kn = [].keys()) ? (_n = Dn(Dn(kn))) !== Object.prototype && (wn = _n) : Nn = !0), null == wn && (wn = {});
            var Rn = { IteratorPrototype: wn, BUGGY_SAFARI_ITERATORS: Nn },
                Pn = Rn.IteratorPrototype,
                Mn = function() { return this },
                jn = Object.setPrototypeOf || ("__proto__" in {} ? function() {
                    var t, e = !1,
                        n = {};
                    try {
                        (t = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(n, []), e = n instanceof Array
                    } catch (t) {}
                    return function(n, i) {
                        return B(n),
                            function(t) { if (!y(t) && null !== t) throw TypeError("Can't set " + String(t) + " as a prototype") }(i), e ? t.call(n, i) : n.__proto__ = i, n
                    }
                }() : void 0),
                Fn = Rn.IteratorPrototype,
                zn = Rn.BUGGY_SAFARI_ITERATORS,
                Ln = he("iterator"),
                Bn = function() { return this },
                Zn = function(t, e, n, i, r, o, g) {
                    ! function(t, e, n) {
                        var i = e + " Iterator";
                        t.prototype = ge(Pn, { next: c(1, n) }), Oe(t, i, !1, !0), On[i] = Mn
                    }(n, e, i);
                    var s, A, a, C = function(t) {
                            if (t === r && d) return d;
                            if (!zn && t in l) return l[t];
                            switch (t) {
                                case "keys":
                                case "values":
                                case "entries":
                                    return function() { return new n(this, t) }
                            }
                            return function() { return new n(this) }
                        },
                        I = e + " Iterator",
                        u = !1,
                        l = t.prototype,
                        h = l[Ln] || l["@@iterator"] || r && l[r],
                        d = !zn && h || C(r),
                        f = "Array" == e && l.entries || h;
                    if (f && (s = Dn(f.call(new t)), Fn !== Object.prototype && s.next && (Oe(s, I, !0, !0), On[I] = Bn)), "values" == r && h && "values" !== h.name && (u = !0, d = function() { return h.call(this) }), g && l[Ln] !== d && Y(l, Ln, d), On[e] = d, r)
                        if (A = { values: C("values"), keys: o ? d : C("keys"), entries: C("entries") }, g)
                            for (a in A)(zn || u || !(a in l)) && Ie(l, a, A[a]);
                        else W({ target: e, proto: !0, forced: zn || u }, A);
                    return A
                },
                Vn = Ze.set,
                Yn = Ze.getterFor("Array Iterator");
            Zn(Array, "Array", (function(t, e) { Vn(this, { type: "Array Iterator", target: v(t), index: 0, kind: e }) }), (function() {
                var t = Yn(this),
                    e = t.target,
                    n = t.kind,
                    i = t.index++;
                return !e || i >= e.length ? (t.target = void 0, { value: void 0, done: !0 }) : "keys" == n ? { value: i, done: !1 } : "values" == n ? { value: e[i], done: !1 } : { value: [i, e[i]], done: !1 }
            }), "values");
            On.Arguments = On.Array;
            var Gn = he("toStringTag");
            for (var Un in { CSSRuleList: 0, CSSStyleDeclaration: 0, CSSValueList: 0, ClientRectList: 0, DOMRectList: 0, DOMStringList: 0, DOMTokenList: 1, DataTransferItemList: 0, FileList: 0, HTMLAllCollection: 0, HTMLCollection: 0, HTMLFormElement: 0, HTMLSelectElement: 0, MediaList: 0, MimeTypeArray: 0, NamedNodeMap: 0, NodeList: 1, PaintRequestList: 0, Plugin: 0, PluginArray: 0, SVGLengthList: 0, SVGNumberList: 0, SVGPathSegList: 0, SVGPointList: 0, SVGStringList: 0, SVGTransformList: 0, SourceBufferList: 0, StyleSheetList: 0, TextTrackCueList: 0, TextTrackList: 0, TouchList: 0 }) {
                var Wn = s[Un],
                    Hn = Wn && Wn.prototype;
                Hn && we(Hn) !== Gn && Y(Hn, Gn, Un), On[Un] = On.Array
            }
            var Kn = function(t) {
                    return function(e, n) {
                        var i, r, o = String(p(e)),
                            g = it(n),
                            s = o.length;
                        return g < 0 || g >= s ? t ? "" : void 0 : (i = o.charCodeAt(g)) < 55296 || i > 56319 || g + 1 === s || (r = o.charCodeAt(g + 1)) < 56320 || r > 57343 ? t ? o.charAt(g) : i : t ? o.slice(g, g + 2) : r - 56320 + (i - 55296 << 10) + 65536
                    }
                },
                Qn = { codeAt: Kn(!1), charAt: Kn(!0) }.charAt,
                Xn = Ze.set,
                qn = Ze.getterFor("String Iterator");
            Zn(String, "String", (function(t) { Xn(this, { type: "String Iterator", string: String(t), index: 0 }) }), (function() {
                var t, e = qn(this),
                    n = e.string,
                    i = e.index;
                return i >= n.length ? { value: void 0, done: !0 } : (t = Qn(n, i), e.index += t.length, { value: t, done: !1 })
            }));
            var Jn = he("iterator"),
                $n = function(t) { if (null != t) return t[Jn] || t["@@iterator"] || On[we(t)] },
                ti = function(t) { var e = $n(t); if ("function" != typeof e) throw TypeError(String(t) + " is not iterable"); return B(e.call(t)) },
                ei = $n,
                ni = function(t, e, n, i) { try { return i ? e(B(n)[0], n[1]) : e(n) } catch (e) { var r = t.return; throw void 0 !== r && B(r.call(t)), e } },
                ii = he("iterator"),
                ri = Array.prototype,
                oi = function(t) { return void 0 !== t && (On.Array === t || ri[ii] === t) },
                gi = he("iterator"),
                si = !1;
            try {
                var Ai = 0,
                    ai = { next: function() { return { done: !!Ai++ } }, return: function() { si = !0 } };
                ai[gi] = function() { return this }, Array.from(ai, (function() { throw 2 }))
            } catch (t) {}
            var Ci = ! function(t, e) {
                if (!e && !si) return !1;
                var n = !1;
                try {
                    var i = {};
                    i[gi] = function() { return { next: function() { return { done: n = !0 } } } }, t(i)
                } catch (t) {}
                return n
            }((function(t) { Array.from(t) }));
            W({ target: "Array", stat: !0, forced: Ci }, {
                from: function(t) {
                    var e, n, i, r, o, g, s = ft(t),
                        A = "function" == typeof this ? this : Array,
                        a = arguments.length,
                        C = a > 1 ? arguments[1] : void 0,
                        I = void 0 !== C,
                        u = $n(s),
                        c = 0;
                    if (I && (C = L(C, a > 2 ? arguments[2] : void 0, 2)), null == u || A == Array && oi(u))
                        for (n = new A(e = ot(s.length)); e > c; c++) g = I ? C(s[c], c) : s[c], zt(n, c, g);
                    else
                        for (o = (r = u.call(s)).next, n = new A; !(i = o.call(r)).done; c++) g = I ? ni(r, C, [i.value, c], !0) : i.value, zt(n, c, g);
                    return n.length = c, n
                }
            });
            var Ii = F.Array.from,
                ui = Ii;
            W({ target: "Object", stat: !0, sham: !a }, { create: ge });
            var ci = F.Object,
                li = function(t, e) { return ci.create(t, e) },
                hi = li,
                di = Tt;
            var fi, pi = function(t, e, n) { return e in t ? di(t, e, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : t[e] = n, t },
                vi = "\t\n\v\f\r                　\u2028\u2029\ufeff",
                yi = "[" + vi + "]",
                bi = RegExp("^" + yi + yi + "*"),
                mi = RegExp(yi + yi + "*$"),
                wi = function(t) { return function(e) { var n = String(p(e)); return 1 & t && (n = n.replace(bi, "")), 2 & t && (n = n.replace(mi, "")), n } },
                _i = { start: wi(1), end: wi(2), trim: wi(3) },
                ki = _i.trim;
            W({ target: "String", proto: !0, forced: (fi = "trim", A((function() { return !!vi[fi]() || "​᠎" != "​᠎" [fi]() || vi[fi].name !== fi }))) }, { trim: function() { return ki(this) } });
            q("String").trim;
            var xi = function(t, e) { var n = [][t]; return !!n && A((function() { n.call(null, e || function() { throw 1 }, 1) })) },
                Oi = Object.defineProperty,
                Ei = {},
                Ti = function(t) { throw t },
                Si = function(t, e) {
                    if (w(Ei, t)) return Ei[t];
                    e || (e = {});
                    var n = [][t],
                        i = !!w(e, "ACCESSORS") && e.ACCESSORS,
                        r = w(e, 0) ? e[0] : Ti,
                        o = w(e, 1) ? e[1] : void 0;
                    return Ei[t] = !!n && !A((function() {
                        if (i && !a) return !0;
                        var t = { length: -1 };
                        i ? Oi(t, 1, { enumerable: !0, get: Ti }) : t[1] = 1, n.call(t, r, o)
                    }))
                },
                Di = We.forEach,
                Ni = xi("forEach"),
                Ri = Si("forEach"),
                Pi = Ni && Ri ? [].forEach : function(t) { return Di(this, t, arguments.length > 1 ? arguments[1] : void 0) };
            W({ target: "Array", proto: !0, forced: [].forEach != Pi }, { forEach: Pi });
            var Mi = q("Array").forEach,
                ji = Array.prototype,
                Fi = { DOMTokenList: !0, NodeList: !0 },
                zi = function(t) { var e = t.forEach; return t === ji || t instanceof Array && e === ji.forEach || Fi.hasOwnProperty(we(t)) ? Mi : e },
                Li = _i.trim,
                Bi = s.parseInt,
                Zi = /^[+-]?0[Xx]/,
                Vi = 8 !== Bi(vi + "08") || 22 !== Bi(vi + "0x16") ? function(t, e) { var n = Li(String(t)); return Bi(n, e >>> 0 || (Zi.test(n) ? 16 : 10)) } : Bi;
            W({ global: !0, forced: parseInt != Vi }, { parseInt: Vi });
            var Yi = F.parseInt,
                Gi = u.f,
                Ui = function(t) { return function(e) { for (var n, i = v(e), r = ht(i), o = r.length, g = 0, s = []; o > g;) n = r[g++], a && !Gi.call(i, n) || s.push(t ? [n, i[n]] : i[n]); return s } },
                Wi = { entries: Ui(!0), values: Ui(!1) }.values;
            W({ target: "Object", stat: !0 }, { values: function(t) { return Wi(t) } });
            F.Object.values;
            var Hi, Ki, Qi = Pt("navigator", "userAgent") || "",
                Xi = s.process,
                qi = Xi && Xi.versions,
                Ji = qi && qi.v8;
            Ji ? Ki = (Hi = Ji.split("."))[0] + Hi[1] : Qi && (!(Hi = Qi.match(/Edge\/(\d+)/)) || Hi[1] >= 74) && (Hi = Qi.match(/Chrome\/(\d+)/)) && (Ki = Hi[1]);
            var $i = Ki && +Ki,
                tr = he("species"),
                er = function(t) { return $i >= 51 || !A((function() { var e = []; return (e.constructor = {})[tr] = function() { return { foo: 1 } }, 1 !== e[t](Boolean).foo })) },
                nr = We.filter,
                ir = er("filter"),
                rr = Si("filter");
            W({ target: "Array", proto: !0, forced: !ir || !rr }, { filter: function(t) { return nr(this, t, arguments.length > 1 ? arguments[1] : void 0) } });
            var or = q("Array").filter,
                gr = Array.prototype,
                sr = function(t) { var e = t.filter; return t === gr || t instanceof Array && e === gr.filter ? or : e },
                Ar = A((function() { Dn(1) }));
            W({ target: "Object", stat: !0, forced: Ar, sham: !En }, { getPrototypeOf: function(t) { return Dn(ft(t)) } });
            var ar = F.Object.getPrototypeOf,
                Cr = ar,
                Ir = Ct.indexOf,
                ur = [].indexOf,
                cr = !!ur && 1 / [1].indexOf(1, -0) < 0,
                lr = xi("indexOf"),
                hr = Si("indexOf", { ACCESSORS: !0, 1: 0 });
            W({ target: "Array", proto: !0, forced: cr || !lr || !hr }, { indexOf: function(t) { return cr ? ur.apply(this, arguments) || 0 : Ir(this, t, arguments.length > 1 ? arguments[1] : void 0) } });
            var dr = q("Array").indexOf,
                fr = Array.prototype,
                pr = function(t) { var e = t.indexOf; return t === fr || t instanceof Array && e === fr.indexOf ? dr : e };
            W({ target: "Array", stat: !0 }, { isArray: Ht });
            var vr = F.Array.isArray,
                yr = vr;
            var br = function(t) { if (yr(t)) return t },
                mr = he("iterator"),
                wr = function(t) { var e = Object(t); return void 0 !== e[mr] || "@@iterator" in e || On.hasOwnProperty(we(e)) },
                _r = he("isConcatSpreadable"),
                kr = $i >= 51 || !A((function() { var t = []; return t[_r] = !1, t.concat()[0] !== t })),
                xr = er("concat"),
                Or = function(t) { if (!y(t)) return !1; var e = t[_r]; return void 0 !== e ? !!e : Ht(t) };
            W({ target: "Array", proto: !0, forced: !kr || !xr }, {
                concat: function(t) {
                    var e, n, i, r, o, g = ft(this),
                        s = Ye(g, 0),
                        A = 0;
                    for (e = -1, i = arguments.length; e < i; e++)
                        if (Or(o = -1 === e ? g : arguments[e])) { if (A + (r = ot(o.length)) > 9007199254740991) throw TypeError("Maximum allowed index exceeded"); for (n = 0; n < r; n++, A++) n in o && zt(s, A, o[n]) } else {
                            if (A >= 9007199254740991) throw TypeError("Maximum allowed index exceeded");
                            zt(s, A++, o)
                        }
                    return s.length = A, s
                }
            }), pe("asyncIterator"), pe("hasInstance"), pe("isConcatSpreadable"), pe("iterator"), pe("match"), pe("matchAll"), pe("replace"), pe("search"), pe("species"), pe("split"), pe("toPrimitive"), pe("toStringTag"), pe("unscopables"), Oe(Math, "Math", !0), Oe(s.JSON, "JSON", !0);
            var Er = F.Symbol;
            pe("asyncDispose"), pe("dispose"), pe("observable"), pe("patternMatch"), pe("replaceAll");
            var Tr = Er;
            var Sr = function(t, e) {
                    if (void 0 !== Tr && wr(Object(t))) {
                        var n = [],
                            i = !0,
                            r = !1,
                            o = void 0;
                        try { for (var g, s = ti(t); !(i = (g = s.next()).done) && (n.push(g.value), !e || n.length !== e); i = !0); } catch (t) { r = !0, o = t } finally { try { i || null == s.return || s.return() } finally { if (r) throw o } }
                        return n
                    }
                },
                Dr = Ii,
                Nr = er("slice"),
                Rr = Si("slice", { ACCESSORS: !0, 0: 0, 1: 2 }),
                Pr = he("species"),
                Mr = [].slice,
                jr = Math.max;
            W({ target: "Array", proto: !0, forced: !Nr || !Rr }, {
                slice: function(t, e) {
                    var n, i, r, o = v(this),
                        g = ot(o.length),
                        s = At(t, g),
                        A = At(void 0 === e ? g : e, g);
                    if (Ht(o) && ("function" != typeof(n = o.constructor) || n !== Array && !Ht(n.prototype) ? y(n) && null === (n = n[Pr]) && (n = void 0) : n = void 0, n === Array || void 0 === n)) return Mr.call(o, s, A);
                    for (i = new(void 0 === n ? Array : n)(jr(A - s, 0)), r = 0; s < A; s++, r++) s in o && zt(i, r, o[s]);
                    return i.length = r, i
                }
            });
            var Fr = q("Array").slice,
                zr = Array.prototype,
                Lr = function(t) { var e = t.slice; return t === zr || t instanceof Array && e === zr.slice ? Fr : e },
                Br = Lr;
            var Zr = function(t, e) {
                (null == e || e > t.length) && (e = t.length);
                for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];
                return i
            };
            var Vr = function(t, e) { var n; if (t) { if ("string" == typeof t) return Zr(t, e); var i = Br(n = Object.prototype.toString.call(t)).call(n, 8, -1); return "Object" === i && t.constructor && (i = t.constructor.name), "Map" === i || "Set" === i ? Dr(t) : "Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? Zr(t, e) : void 0 } };
            var Yr = function() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") };
            var Gr = function(t, e) { return br(t) || Sr(t, e) || Vr(t, e) || Yr() };
            W({ target: "Date", stat: !0 }, { now: function() { return (new Date).getTime() } });
            var Ur = F.Date.now,
                Wr = A((function() { ht(1) }));
            W({ target: "Object", stat: !0, forced: Wr }, { keys: function(t) { return ht(ft(t)) } });
            var Hr = F.Object.keys,
                Kr = We.map,
                Qr = er("map"),
                Xr = Si("map");
            W({ target: "Array", proto: !0, forced: !Qr || !Xr }, { map: function(t) { return Kr(this, t, arguments.length > 1 ? arguments[1] : void 0) } });
            var qr = q("Array").map,
                Jr = Array.prototype,
                $r = function(t) { var e = t.map; return t === Jr || t instanceof Array && e === Jr.map ? qr : e },
                to = vr,
                eo = de.f("iterator"),
                no = eo,
                io = r((function(t) {
                    function e(n) { return t.exports = e = "function" == typeof Tr && "symbol" == typeof no ? function(t) { return typeof t } : function(t) { return t && "function" == typeof Tr && t.constructor === Tr && t !== Tr.prototype ? "symbol" : typeof t }, e(n) }
                    t.exports = e
                }));
            W({ target: "Reflect", stat: !0 }, { ownKeys: Ft });
            var ro = F.Reflect.ownKeys,
                oo = Lr;
            var go = function(t) { if (yr(t)) return Zr(t) };
            var so = function(t) { if (void 0 !== Tr && wr(Object(t))) return Dr(t) };
            var Ao = function() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") };
            var ao = function(t) { return go(t) || so(t) || Vr(t) || Ao() },
                Co = q("Array").concat,
                Io = Array.prototype,
                uo = function(t) { var e = t.concat; return t === Io || t instanceof Array && e === Io.concat ? Co : e },
                co = Er;

            function lo(t, e) {
                var n;
                if (void 0 === co || null == ei(t)) {
                    if (to(t) || (n = function(t, e) { var n; if (!t) return; if ("string" == typeof t) return ho(t, e); var i = oo(n = Object.prototype.toString.call(t)).call(n, 8, -1); "Object" === i && t.constructor && (i = t.constructor.name); if ("Map" === i || "Set" === i) return ui(t); if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return ho(t, e) }(t)) || e && t && "number" == typeof t.length) {
                        n && (t = n);
                        var i = 0,
                            r = function() {};
                        return { s: r, n: function() { return i >= t.length ? { done: !0 } : { done: !1, value: t[i++] } }, e: function(t) { throw t }, f: r }
                    }
                    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                }
                var o, g = !0,
                    s = !1;
                return { s: function() { n = ti(t) }, n: function() { var t = n.next(); return g = t.done, t }, e: function(t) { s = !0, o = t }, f: function() { try { g || null == n.return || n.return() } finally { if (s) throw o } } }
            }

            function ho(t, e) {
                (null == e || e > t.length) && (e = t.length);
                for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];
                return i
            }
            /**
             * vis-util
             * https://github.com/visjs/vis-util
             *
             * utilitie collection for visjs
             *
             * @version 4.3.3
             * @date    2020-07-18T16:20:10.745Z
             *
             * @copyright (c) 2011-2017 Almende B.V, http://almende.com
             * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs
             *
             * @license
             * vis.js is dual licensed under both
             *
             *   1. The Apache 2.0 License
             *      http://www.apache.org/licenses/LICENSE-2.0
             *
             *   and
             *
             *   2. The MIT License
             *      http://opensource.org/licenses/MIT
             *
             * vis.js may be distributed under either license.
             */
            var fo = co("DELETE");

            function po() { var t = vo.apply(void 0, arguments); return bo(t), t }

            function vo() {
                for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n];
                if (e.length < 2) return e[0];
                var i;
                if (e.length > 2) return vo.apply(void 0, uo(i = [po(e[0], e[1])]).call(i, ao(oo(e).call(e, 2))));
                var r, o = e[0],
                    g = e[1],
                    s = lo(ro(g));
                try {
                    for (s.s(); !(r = s.n()).done;) {
                        var A = r.value;
                        Object.prototype.propertyIsEnumerable.call(g, g[A]) || (g[A] === fo ? delete o[A] : null === o[A] || null === g[A] || "object" !== io(o[A]) || "object" !== io(g[A]) || to(o[A]) || to(g[A]) ? o[A] = yo(g[A]) : o[A] = vo(o[A], g[A]))
                    }
                } catch (t) { s.e(t) } finally { s.f() }
                return o
            }

            function yo(t) { return to(t) ? $r(t).call(t, (function(t) { return yo(t) })) : "object" === io(t) && null !== t ? vo({}, t) : t }

            function bo(t) {
                for (var e = 0, n = Hr(t); e < n.length; e++) {
                    var i = n[e];
                    t[i] === fo ? delete t[i] : "object" === io(t[i]) && null !== t[i] && bo(t[i])
                }
            }

            function mo() { for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n]; return wo(e.length ? e : [Ur()]) }

            function wo(t) {
                var e = function() { for (var t = _o(), e = t(" "), n = t(" "), i = t(" "), r = 0; r < arguments.length; r++)(e -= t(r < 0 || arguments.length <= r ? void 0 : arguments[r])) < 0 && (e += 1), (n -= t(r < 0 || arguments.length <= r ? void 0 : arguments[r])) < 0 && (n += 1), (i -= t(r < 0 || arguments.length <= r ? void 0 : arguments[r])) < 0 && (i += 1); return [e, n, i] }(t),
                    n = Gr(e, 3),
                    i = n[0],
                    r = n[1],
                    o = n[2],
                    g = 1,
                    s = function() { var t = 2091639 * i + 2.3283064365386963e-10 * g; return i = r, r = o, o = t - (g = 0 | t) };
                return s.uint32 = function() { return 4294967296 * s() }, s.fract53 = function() { return s() + 11102230246251565e-32 * (2097152 * s() | 0) }, s.algorithm = "Alea", s.seed = t, s.version = "0.9", s
            }

            function _o() {
                var t = 4022871197;
                return function(e) {
                    for (var n = e.toString(), i = 0; i < n.length; i++) {
                        var r = .02519603282416938 * (t += n.charCodeAt(i));
                        r -= t = r >>> 0, t = (r *= t) >>> 0, t += 4294967296 * (r -= t)
                    }
                    return 2.3283064365386963e-10 * (t >>> 0)
                }
            }
            var ko = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,
                xo = /^#?([a-f\d])([a-f\d])([a-f\d])$/i,
                Oo = /^rgb\( *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *\)$/i,
                Eo = /^rgba\( *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *(1?\d{1,2}|2[0-4]\d|25[0-5]) *, *([01]|0?\.\d+) *\)$/i;

            function To(t) { return t instanceof Number || "number" == typeof t }

            function So(t) {
                if (t)
                    for (; !0 === t.hasChildNodes();) {
                        var e = t.firstChild;
                        e && (So(e), t.removeChild(e))
                    }
            }

            function Do(t) { return t instanceof String || "string" == typeof t }

            function No(t) { return "object" === io(t) && null !== t }

            function Ro(t, e, n, i) { var r = !1;!0 === i && (r = null === e[n] && void 0 !== t[n]), r ? delete t[n] : t[n] = e[n] }

            function Po(t, e) {
                var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
                for (var i in t)
                    if (void 0 !== e[i])
                        if (null === e[i] || "object" !== io(e[i])) Ro(t, e, i, n);
                        else {
                            var r = t[i],
                                o = e[i];
                            No(r) && No(o) && Po(r, o, n)
                        }
            }

            function Mo(t, e, n) {
                var i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
                if (to(n)) throw new TypeError("Arrays are not supported by deepExtend");
                for (var r = 0; r < t.length; r++) {
                    var o = t[r];
                    if (Object.prototype.hasOwnProperty.call(n, o))
                        if (n[o] && n[o].constructor === Object) void 0 === e[o] && (e[o] = {}), e[o].constructor === Object ? Fo(e[o], n[o], !1, i) : Ro(e, n, o, i);
                        else {
                            if (to(n[o])) throw new TypeError("Arrays are not supported by deepExtend");
                            Ro(e, n, o, i)
                        }
                }
                return e
            }

            function jo(t, e, n) {
                var i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
                if (to(n)) throw new TypeError("Arrays are not supported by deepExtend");
                for (var r in n)
                    if (Object.prototype.hasOwnProperty.call(n, r) && -1 === pr(t).call(t, r))
                        if (n[r] && n[r].constructor === Object) void 0 === e[r] && (e[r] = {}), e[r].constructor === Object ? Fo(e[r], n[r]) : Ro(e, n, r, i);
                        else if (to(n[r])) { e[r] = []; for (var o = 0; o < n[r].length; o++) e[r].push(n[r][o]) } else Ro(e, n, r, i);
                return e
            }

            function Fo(t, e) {
                var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
                    i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
                for (var r in e)
                    if (Object.prototype.hasOwnProperty.call(e, r) || !0 === n)
                        if ("object" === io(e[r]) && null !== e[r] && Cr(e[r]) === Object.prototype) void 0 === t[r] ? t[r] = Fo({}, e[r], n) : "object" === io(t[r]) && null !== t[r] && Cr(t[r]) === Object.prototype ? Fo(t[r], e[r], n) : Ro(t, e, r, i);
                        else if (to(e[r])) {
                    var o;
                    t[r] = oo(o = e[r]).call(o)
                } else Ro(t, e, r, i);
                return t
            }

            function zo(t) { var e = io(t); return "object" === e ? null === t ? "null" : t instanceof Boolean ? "Boolean" : t instanceof Number ? "Number" : t instanceof String ? "String" : to(t) ? "Array" : t instanceof Date ? "Date" : "Object" : "number" === e ? "Number" : "boolean" === e ? "Boolean" : "string" === e ? "String" : void 0 === e ? "undefined" : e }

            function Lo(t, e) { var n; return uo(n = []).call(n, ao(t), [e]) }

            function Bo(t) { return oo(t).call(t) }

            function Zo(t) { return t.getBoundingClientRect().top }

            function Vo(t, e) {
                if (to(t))
                    for (var n = t.length, i = 0; i < n; i++) e(t[i], i, t);
                else
                    for (var r in t) Object.prototype.hasOwnProperty.call(t, r) && e(t[r], r, t)
            }

            function Yo(t) {
                var e;
                switch (t.length) {
                    case 3:
                    case 4:
                        return (e = xo.exec(t)) ? { r: Yi(e[1] + e[1], 16), g: Yi(e[2] + e[2], 16), b: Yi(e[3] + e[3], 16) } : null;
                    case 6:
                    case 7:
                        return (e = ko.exec(t)) ? { r: Yi(e[1], 16), g: Yi(e[2], 16), b: Yi(e[3], 16) } : null;
                    default:
                        return null
                }
            }

            function Go(t, e) { if (-1 !== pr(t).call(t, "rgba")) return t; if (-1 !== pr(t).call(t, "rgb")) { var n = t.substr(pr(t).call(t, "(") + 1).replace(")", "").split(","); return "rgba(" + n[0] + "," + n[1] + "," + n[2] + "," + e + ")" } var i = Yo(t); return null == i ? t : "rgba(" + i.r + "," + i.g + "," + i.b + "," + e + ")" }

            function Uo(t, e, n) { var i; return "#" + oo(i = ((1 << 24) + (t << 16) + (e << 8) + n).toString(16)).call(i, 1) }

            function Wo(t, e) {
                if (Do(t)) {
                    var n = t;
                    if (qo(n)) {
                        var i, r = $r(i = n.substr(4).substr(0, n.length - 5).split(",")).call(i, (function(t) { return Yi(t) }));
                        n = Uo(r[0], r[1], r[2])
                    }
                    if (!0 === Xo(n)) {
                        var o = function(t) { var e = Yo(t); if (!e) throw new TypeError("'".concat(t, "' is not a valid color.")); return Ho(e.r, e.g, e.b) }(n),
                            g = { h: o.h, s: .8 * o.s, v: Math.min(1, 1.02 * o.v) },
                            s = { h: o.h, s: Math.min(1, 1.25 * o.s), v: .8 * o.v },
                            A = Qo(s.h, s.s, s.v),
                            a = Qo(g.h, g.s, g.v);
                        return { background: n, border: A, highlight: { background: a, border: A }, hover: { background: a, border: A } }
                    }
                    return { background: n, border: n, highlight: { background: n, border: n }, hover: { background: n, border: n } }
                }
                return e ? { background: t.background || e.background, border: t.border || e.border, highlight: Do(t.highlight) ? { border: t.highlight, background: t.highlight } : { background: t.highlight && t.highlight.background || e.highlight.background, border: t.highlight && t.highlight.border || e.highlight.border }, hover: Do(t.hover) ? { border: t.hover, background: t.hover } : { border: t.hover && t.hover.border || e.hover.border, background: t.hover && t.hover.background || e.hover.background } } : { background: t.background || void 0, border: t.border || void 0, highlight: Do(t.highlight) ? { border: t.highlight, background: t.highlight } : { background: t.highlight && t.highlight.background || void 0, border: t.highlight && t.highlight.border || void 0 }, hover: Do(t.hover) ? { border: t.hover, background: t.hover } : { border: t.hover && t.hover.border || void 0, background: t.hover && t.hover.background || void 0 } }
            }

            function Ho(t, e, n) {
                t /= 255, e /= 255, n /= 255;
                var i = Math.min(t, Math.min(e, n)),
                    r = Math.max(t, Math.max(e, n));
                return i === r ? { h: 0, s: 0, v: i } : { h: 60 * ((t === i ? 3 : n === i ? 1 : 5) - (t === i ? e - n : n === i ? t - e : n - t) / (r - i)) / 360, s: (r - i) / r, v: r }
            }

            function Ko(t, e, n) {
                var i, r, o, g = Math.floor(6 * t),
                    s = 6 * t - g,
                    A = n * (1 - e),
                    a = n * (1 - s * e),
                    C = n * (1 - (1 - s) * e);
                switch (g % 6) {
                    case 0:
                        i = n, r = C, o = A;
                        break;
                    case 1:
                        i = a, r = n, o = A;
                        break;
                    case 2:
                        i = A, r = n, o = C;
                        break;
                    case 3:
                        i = A, r = a, o = n;
                        break;
                    case 4:
                        i = C, r = A, o = n;
                        break;
                    case 5:
                        i = n, r = A, o = a
                }
                return { r: Math.floor(255 * i), g: Math.floor(255 * r), b: Math.floor(255 * o) }
            }

            function Qo(t, e, n) { var i = Ko(t, e, n); return Uo(i.r, i.g, i.b) }

            function Xo(t) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t) }

            function qo(t) { return Oo.test(t) }

            function Jo(t) { return Eo.test(t) }

            function $o(t) { if (null === t || "object" !== io(t)) return null; if (t instanceof Element) return t; var e = hi(t); for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && "object" == io(t[n]) && (e[n] = $o(t[n])); return e }

            function tg(t, e, n) {
                var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},
                    r = function(t) { return null != t },
                    o = function(t) { return null !== t && "object" === io(t) },
                    g = function(t) {
                        for (var e in t)
                            if (Object.prototype.hasOwnProperty.call(t, e)) return !1;
                        return !0
                    };
                if (!o(t)) throw new Error("Parameter mergeTarget must be an object");
                if (!o(e)) throw new Error("Parameter options must be an object");
                if (!r(n)) throw new Error("Parameter option must have a value");
                if (!o(i)) throw new Error("Parameter globalOptions must be an object");
                var s = function(t, e, n) {
                        o(t[n]) || (t[n] = {});
                        var i = e[n],
                            r = t[n];
                        for (var g in i) Object.prototype.hasOwnProperty.call(i, g) && (r[g] = i[g])
                    },
                    A = e[n],
                    a = o(i) && !g(i),
                    C = a ? i[n] : void 0,
                    I = C ? C.enabled : void 0;
                if (void 0 !== A) {
                    if ("boolean" == typeof A) return o(t[n]) || (t[n] = {}), void(t[n].enabled = A);
                    if (null === A && !o(t[n])) {
                        if (!r(C)) return;
                        t[n] = hi(C)
                    }
                    if (o(A)) {
                        var u = !0;
                        void 0 !== A.enabled ? u = A.enabled : void 0 !== I && (u = C.enabled), s(t, e, n), t[n].enabled = u
                    }
                }
            }
            var eg = { linear: function(t) { return t }, easeInQuad: function(t) { return t * t }, easeOutQuad: function(t) { return t * (2 - t) }, easeInOutQuad: function(t) { return t < .5 ? 2 * t * t : (4 - 2 * t) * t - 1 }, easeInCubic: function(t) { return t * t * t }, easeOutCubic: function(t) { return --t * t * t + 1 }, easeInOutCubic: function(t) { return t < .5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1 }, easeInQuart: function(t) { return t * t * t * t }, easeOutQuart: function(t) { return 1 - --t * t * t * t }, easeInOutQuart: function(t) { return t < .5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t }, easeInQuint: function(t) { return t * t * t * t * t }, easeOutQuint: function(t) { return 1 + --t * t * t * t * t }, easeInOutQuint: function(t) { return t < .5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t } };

            function ng(t, e) {
                var n;
                to(e) || (e = [e]);
                var i, r = lo(t);
                try { for (r.s(); !(i = r.n()).done;) { var o = i.value; if (o) { n = o[e[0]]; for (var g = 1; g < e.length; g++) n && (n = n[e[g]]); if (void 0 !== n) break } } } catch (t) { r.e(t) } finally { r.f() }
                return n
            }
            var ig = er("splice"),
                rg = Si("splice", { ACCESSORS: !0, 0: 0, 1: 2 }),
                og = Math.max,
                gg = Math.min;
            W({ target: "Array", proto: !0, forced: !ig || !rg }, {
                splice: function(t, e) {
                    var n, i, r, o, g, s, A = ft(this),
                        a = ot(A.length),
                        C = At(t, a),
                        I = arguments.length;
                    if (0 === I ? n = i = 0 : 1 === I ? (n = 0, i = a - C) : (n = I - 2, i = gg(og(it(e), 0), a - C)), a + n - i > 9007199254740991) throw TypeError("Maximum allowed length exceeded");
                    for (r = Ye(A, i), o = 0; o < i; o++)(g = C + o) in A && zt(r, o, A[g]);
                    if (r.length = i, n < i) { for (o = C; o < a - i; o++) s = o + n, (g = o + i) in A ? A[s] = A[g] : delete A[s]; for (o = a; o > a - i + n; o--) delete A[o - 1] } else if (n > i)
                        for (o = a - i; o > C; o--) s = o + n - 1, (g = o + i - 1) in A ? A[s] = A[g] : delete A[s];
                    for (o = 0; o < n; o++) A[o + C] = arguments[o + 2];
                    return A.length = a - i + n, r
                }
            });
            var sg = q("Array").splice,
                Ag = Array.prototype,
                ag = function(t) { var e = t.splice; return t === Ag || t instanceof Array && e === Ag.splice ? sg : e },
                Cg = Ct.includes,
                Ig = Si("indexOf", { ACCESSORS: !0, 1: 0 });
            W({ target: "Array", proto: !0, forced: !Ig }, { includes: function(t) { return Cg(this, t, arguments.length > 1 ? arguments[1] : void 0) } });
            var ug = q("Array").includes,
                cg = he("match"),
                lg = function(t) { if (function(t) { var e; return y(t) && (void 0 !== (e = t[cg]) ? !!e : "RegExp" == h(t)) }(t)) throw TypeError("The method doesn't accept regular expressions"); return t },
                hg = he("match");
            W({ target: "String", proto: !0, forced: ! function(t) { var e = /./; try { "/./" [t](e) } catch (n) { try { return e[hg] = !1, "/./" [t](e) } catch (t) {} } return !1 }("includes") }, { includes: function(t) { return !!~String(p(this)).indexOf(lg(t), arguments.length > 1 ? arguments[1] : void 0) } });
            var dg = q("String").includes,
                fg = Array.prototype,
                pg = String.prototype,
                vg = function(t) { var e = t.includes; return t === fg || t instanceof Array && e === fg.includes ? ug : "string" == typeof t || t === pg || t instanceof String && e === pg.includes ? dg : e };

            function yg(t) {
                return Eg = t,
                    function() {
                        var t = {};
                        Tg = 0, void(Sg = Eg.charAt(0)), Vg(), "strict" === Dg && (t.strict = !0, Vg());
                        "graph" !== Dg && "digraph" !== Dg || (t.type = Dg, Vg());
                        Ng === kg && (t.id = Dg, Vg());
                        if ("{" != Dg) throw Kg("Angle bracket { expected");
                        if (Vg(), Yg(t), "}" != Dg) throw Kg("Angle bracket } expected");
                        if (Vg(), "" !== Dg) throw Kg("End of file expected");
                        return Vg(), delete t.node, delete t.edge, delete t.graph, t
                    }()
            }
            var bg = { fontsize: "font.size", fontcolor: "font.color", labelfontcolor: "font.color", fontname: "font.face", color: ["color.border", "color.background"], fillcolor: "color.background", tooltip: "title", labeltooltip: "title" },
                mg = hi(bg);
            mg.color = "color.color", mg.style = "dashes";
            var wg = 0,
                _g = 1,
                kg = 2,
                xg = 3,
                Og = { "{": !0, "}": !0, "[": !0, "]": !0, ";": !0, "=": !0, ",": !0, "->": !0, "--": !0 },
                Eg = "",
                Tg = 0,
                Sg = "",
                Dg = "",
                Ng = wg;

            function Rg() { Tg++, Sg = Eg.charAt(Tg) }

            function Pg() { return Eg.charAt(Tg + 1) }
            var Mg = /[a-zA-Z_0-9.:#]/;

            function jg(t) { return Mg.test(t) }

            function Fg(t, e) {
                if (t || (t = {}), e)
                    for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n]);
                return t
            }

            function zg(t, e, n) {
                for (var i = e.split("."), r = t; i.length;) {
                    var o = i.shift();
                    i.length ? (r[o] || (r[o] = {}), r = r[o]) : r[o] = n
                }
            }

            function Lg(t, e) {
                for (var n, i, r = null, o = [t], g = t; g.parent;) o.push(g.parent), g = g.parent;
                if (g.nodes)
                    for (n = 0, i = g.nodes.length; n < i; n++)
                        if (e.id === g.nodes[n].id) { r = g.nodes[n]; break }
                for (r || (r = { id: e.id }, t.node && (r.attr = Fg(r.attr, t.node))), n = o.length - 1; n >= 0; n--) {
                    var s, A = o[n];
                    A.nodes || (A.nodes = []), -1 === pr(s = A.nodes).call(s, r) && A.nodes.push(r)
                }
                e.attr && (r.attr = Fg(r.attr, e.attr))
            }

            function Bg(t, e) {
                if (t.edges || (t.edges = []), t.edges.push(e), t.edge) {
                    var n = Fg({}, t.edge);
                    e.attr = Fg(n, e.attr)
                }
            }

            function Zg(t, e, n, i, r) { var o = { from: e, to: n, type: i }; return t.edge && (o.attr = Fg({}, t.edge)), o.attr = Fg(o.attr || {}, r), null != r && r.hasOwnProperty("arrows") && null != r.arrows && (o.arrows = { to: { enabled: !0, type: r.arrows.type } }, r.arrows = null), o }

            function Vg() {
                for (Ng = wg, Dg = "";
                    " " === Sg || "\t" === Sg || "\n" === Sg || "\r" === Sg;) Rg();
                do {
                    var t = !1;
                    if ("#" === Sg) {
                        for (var e = Tg - 1;
                            " " === Eg.charAt(e) || "\t" === Eg.charAt(e);) e--;
                        if ("\n" === Eg.charAt(e) || "" === Eg.charAt(e)) {
                            for (;
                                "" != Sg && "\n" != Sg;) Rg();
                            t = !0
                        }
                    }
                    if ("/" === Sg && "/" === Pg()) {
                        for (;
                            "" != Sg && "\n" != Sg;) Rg();
                        t = !0
                    }
                    if ("/" === Sg && "*" === Pg()) {
                        for (;
                            "" != Sg;) {
                            if ("*" === Sg && "/" === Pg()) { Rg(), Rg(); break }
                            Rg()
                        }
                        t = !0
                    }
                    for (;
                        " " === Sg || "\t" === Sg || "\n" === Sg || "\r" === Sg;) Rg()
                } while (t);
                if ("" !== Sg) {
                    var n = Sg + Pg();
                    if (Og[n]) return Ng = _g, Dg = n, Rg(), void Rg();
                    if (Og[Sg]) return Ng = _g, Dg = Sg, void Rg();
                    if (jg(Sg) || "-" === Sg) { for (Dg += Sg, Rg(); jg(Sg);) Dg += Sg, Rg(); return "false" === Dg ? Dg = !1 : "true" === Dg ? Dg = !0 : isNaN(Number(Dg)) || (Dg = Number(Dg)), void(Ng = kg) }
                    if ('"' === Sg) {
                        for (Rg();
                            "" != Sg && ('"' != Sg || '"' === Sg && '"' === Pg());) '"' === Sg ? (Dg += Sg, Rg()) : "\\" === Sg && "n" === Pg() ? (Dg += "\n", Rg()) : Dg += Sg, Rg();
                        if ('"' != Sg) throw Kg('End of string " expected');
                        return Rg(), void(Ng = kg)
                    }
                    for (Ng = xg;
                        "" != Sg;) Dg += Sg, Rg();
                    throw new SyntaxError('Syntax error in part "' + Qg(Dg, 30) + '"')
                }
                Ng = _g
            }

            function Yg(t) {
                for (;
                    "" !== Dg && "}" != Dg;) Gg(t), ";" === Dg && Vg()
            }

            function Gg(t) {
                var e = Ug(t);
                if (e) Wg(t, e);
                else if (! function(t) { if ("node" === Dg) return Vg(), t.node = Hg(), "node"; if ("edge" === Dg) return Vg(), t.edge = Hg(), "edge"; if ("graph" === Dg) return Vg(), t.graph = Hg(), "graph"; return null }(t)) {
                    if (Ng != kg) throw Kg("Identifier expected");
                    var n = Dg;
                    if (Vg(), "=" === Dg) {
                        if (Vg(), Ng != kg) throw Kg("Identifier expected");
                        t[n] = Dg, Vg()
                    } else ! function(t, e) {
                        var n = { id: e },
                            i = Hg();
                        i && (n.attr = i);
                        Lg(t, n), Wg(t, e)
                    }(t, n)
                }
            }

            function Ug(t) {
                var e = null;
                if ("subgraph" === Dg && ((e = {}).type = "subgraph", Vg(), Ng === kg && (e.id = Dg, Vg())), "{" === Dg) {
                    if (Vg(), e || (e = {}), e.parent = t, e.node = t.node, e.edge = t.edge, e.graph = t.graph, Yg(e), "}" != Dg) throw Kg("Angle bracket } expected");
                    Vg(), delete e.node, delete e.edge, delete e.graph, delete e.parent, t.subgraphs || (t.subgraphs = []), t.subgraphs.push(e)
                }
                return e
            }

            function Wg(t, e) {
                for (;
                    "->" === Dg || "--" === Dg;) {
                    var n, i = Dg;
                    Vg();
                    var r = Ug(t);
                    if (r) n = r;
                    else {
                        if (Ng != kg) throw Kg("Identifier or subgraph expected");
                        Lg(t, { id: n = Dg }), Vg()
                    }
                    Bg(t, Zg(t, e, n, i, Hg())), e = n
                }
            }

            function Hg() {
                for (var t, e, n = null, i = { dashed: !0, solid: !1, dotted: [1, 5] }, r = { dot: "circle", box: "box", crow: "crow", curve: "curve", icurve: "inv_curve", normal: "triangle", inv: "inv_triangle", diamond: "diamond", tee: "bar", vee: "vee" }, o = new Array, g = new Array;
                    "[" === Dg;) {
                    for (Vg(), n = {};
                        "" !== Dg && "]" != Dg;) { if (Ng != kg) throw Kg("Attribute name expected"); var s = Dg; if (Vg(), "=" != Dg) throw Kg("Equal sign = expected"); if (Vg(), Ng != kg) throw Kg("Attribute value expected"); var A = Dg; "style" === s && (A = i[A]), "arrowhead" === s && (s = "arrows", A = { to: { enabled: !0, type: r[A] } }), "arrowtail" === s && (s = "arrows", A = { from: { enabled: !0, type: r[A] } }), o.push({ attr: n, name: s, value: A }), g.push(s), Vg(), "," == Dg && Vg() }
                    if ("]" != Dg) throw Kg("Bracket ] expected");
                    Vg()
                }
                if (vg(g).call(g, "dir")) {
                    var a = { arrows: {} };
                    for (t = 0; t < o.length; t++)
                        if ("arrows" === o[t].name)
                            if (null != o[t].value.to) a.arrows.to = t;
                            else {
                                if (null == o[t].value.from) throw Kg("Invalid value of arrows");
                                a.arrows.from = t
                            }
                    else "dir" === o[t].name && (a.dir = t);
                    var C, I, u = o[a.dir].value;
                    if (!vg(g).call(g, "arrows"))
                        if ("both" === u) o.push({ attr: o[a.dir].attr, name: "arrows", value: { to: { enabled: !0 } } }), a.arrows.to = o.length - 1, o.push({ attr: o[a.dir].attr, name: "arrows", value: { from: { enabled: !0 } } }), a.arrows.from = o.length - 1;
                        else if ("forward" === u) o.push({ attr: o[a.dir].attr, name: "arrows", value: { to: { enabled: !0 } } }), a.arrows.to = o.length - 1;
                    else if ("back" === u) o.push({ attr: o[a.dir].attr, name: "arrows", value: { from: { enabled: !0 } } }), a.arrows.from = o.length - 1;
                    else {
                        if ("none" !== u) throw Kg('Invalid dir type "' + u + '"');
                        o.push({ attr: o[a.dir].attr, name: "arrows", value: "" }), a.arrows.to = o.length - 1
                    }
                    if ("both" === u) a.arrows.to && a.arrows.from ? (I = o[a.arrows.to].value.to.type, C = o[a.arrows.from].value.from.type, o[a.arrows.to] = { attr: o[a.arrows.to].attr, name: o[a.arrows.to].name, value: { to: { enabled: !0, type: I }, from: { enabled: !0, type: C } } }, ag(o).call(o, a.arrows.from, 1)) : a.arrows.to ? (I = o[a.arrows.to].value.to.type, C = "arrow", o[a.arrows.to] = { attr: o[a.arrows.to].attr, name: o[a.arrows.to].name, value: { to: { enabled: !0, type: I }, from: { enabled: !0, type: C } } }) : a.arrows.from && (I = "arrow", C = o[a.arrows.from].value.from.type, o[a.arrows.from] = { attr: o[a.arrows.from].attr, name: o[a.arrows.from].name, value: { to: { enabled: !0, type: I }, from: { enabled: !0, type: C } } });
                    else if ("back" === u) a.arrows.to && a.arrows.from ? (I = "", C = o[a.arrows.from].value.from.type, o[a.arrows.from] = { attr: o[a.arrows.from].attr, name: o[a.arrows.from].name, value: { to: { enabled: !0, type: I }, from: { enabled: !0, type: C } } }) : a.arrows.to ? (I = "", C = "arrow", a.arrows.from = a.arrows.to, o[a.arrows.from] = { attr: o[a.arrows.from].attr, name: o[a.arrows.from].name, value: { to: { enabled: !0, type: I }, from: { enabled: !0, type: C } } }) : a.arrows.from && (I = "", C = o[a.arrows.from].value.from.type, o[a.arrows.to] = { attr: o[a.arrows.from].attr, name: o[a.arrows.from].name, value: { to: { enabled: !0, type: I }, from: { enabled: !0, type: C } } }), o[a.arrows.from] = { attr: o[a.arrows.from].attr, name: o[a.arrows.from].name, value: { from: { enabled: !0, type: o[a.arrows.from].value.from.type } } };
                    else if ("none" === u) {
                        var c;
                        o[c = a.arrows.to ? a.arrows.to : a.arrows.from] = { attr: o[c].attr, name: o[c].name, value: "" }
                    } else {
                        if ("forward" !== u) throw Kg('Invalid dir type "' + u + '"');
                        a.arrows.to && a.arrows.from || a.arrows.to ? (I = o[a.arrows.to].value.to.type, C = "", o[a.arrows.to] = { attr: o[a.arrows.to].attr, name: o[a.arrows.to].name, value: { to: { enabled: !0, type: I }, from: { enabled: !0, type: C } } }) : a.arrows.from && (I = "arrow", C = "", a.arrows.to = a.arrows.from, o[a.arrows.to] = { attr: o[a.arrows.to].attr, name: o[a.arrows.to].name, value: { to: { enabled: !0, type: I }, from: { enabled: !0, type: C } } }), o[a.arrows.to] = { attr: o[a.arrows.to].attr, name: o[a.arrows.to].name, value: { to: { enabled: !0, type: o[a.arrows.to].value.to.type } } }
                    }
                    ag(o).call(o, a.dir, 1)
                }
                if (vg(g).call(g, "penwidth")) {
                    var l = [];
                    for (e = o.length, t = 0; t < e; t++) "width" !== o[t].name && ("penwidth" === o[t].name && (o[t].name = "width"), l.push(o[t]));
                    o = l
                }
                for (e = o.length, t = 0; t < e; t++) zg(o[t].attr, o[t].name, o[t].value);
                return n
            }

            function Kg(t) { return new SyntaxError(t + ', got "' + Qg(Dg, 30) + '" (char ' + Tg + ")") }

            function Qg(t, e) { return t.length <= e ? t : t.substr(0, 27) + "..." }

            function Xg(t, e, n) {
                for (var i = e.split("."), r = i.pop(), o = t, g = 0; g < i.length; g++) {
                    var s = i[g];
                    s in o || (o[s] = {}), o = o[s]
                }
                return o[r] = n, t
            }

            function qg(t, e) {
                var n = {};
                for (var i in t)
                    if (t.hasOwnProperty(i)) {
                        var r = e[i];
                        to(r) ? zi(r).call(r, (function(e) { Xg(n, e, t[i]) })) : Xg(n, "string" == typeof r ? r : i, t[i])
                    }
                return n
            }

            function Jg(t) {
                var e, n = yg(t),
                    i = { nodes: [], edges: [], options: {} };
                n.nodes && zi(e = n.nodes).call(e, (function(t) {
                    var e = { id: t.id, label: String(t.label || t.id) };
                    Fg(e, qg(t.attr, bg)), e.image && (e.shape = "image"), i.nodes.push(e)
                }));
                if (n.edges) {
                    var r, o = function(t) { var e = { from: t.from, to: t.to }; return Fg(e, qg(t.attr, mg)), null == e.arrows && "->" === t.type && (e.arrows = "to"), e };
                    zi(r = n.edges).call(r, (function(t) {
                        var e, n, r, g, s, A, a;
                        (e = t.from instanceof Object ? t.from.nodes : { id: t.from }, n = t.to instanceof Object ? t.to.nodes : { id: t.to }, t.from instanceof Object && t.from.edges) && zi(r = t.from.edges).call(r, (function(t) {
                            var e = o(t);
                            i.edges.push(e)
                        }));
                        (s = n, A = function(e, n) {
                            var r = Zg(i, e.id, n.id, t.type, t.attr),
                                g = o(r);
                            i.edges.push(g)
                        }, to(g = e) ? zi(g).call(g, (function(t) { to(s) ? zi(s).call(s, (function(e) { A(t, e) })) : A(t, s) })) : to(s) ? zi(s).call(s, (function(t) { A(g, t) })) : A(g, s), t.to instanceof Object && t.to.edges) && zi(a = t.to.edges).call(a, (function(t) {
                            var e = o(t);
                            i.edges.push(e)
                        }))
                    }))
                }
                return n.attr && (i.options = n.attr), i
            }

            function $g(t, e) {
                var n, i = { edges: { inheritColor: !1 }, nodes: { fixed: !1, parseColor: !1 } };
                null != e && (null != e.fixed && (i.nodes.fixed = e.fixed), null != e.parseColor && (i.nodes.parseColor = e.parseColor), null != e.inheritColor && (i.edges.inheritColor = e.inheritColor));
                var r = t.edges,
                    o = $r(r).call(r, (function(t) { var e = { from: t.source, id: t.id, to: t.target }; return null != t.attributes && (e.attributes = t.attributes), null != t.label && (e.label = t.label), null != t.attributes && null != t.attributes.title && (e.title = t.attributes.title), "Directed" === t.type && (e.arrows = "to"), t.color && !1 === i.edges.inheritColor && (e.color = t.color), e }));
                return { nodes: $r(n = t.nodes).call(n, (function(t) { var e = { id: t.id, fixed: i.nodes.fixed && null != t.x && null != t.y }; return null != t.attributes && (e.attributes = t.attributes), null != t.label && (e.label = t.label), null != t.size && (e.size = t.size), null != t.attributes && null != t.attributes.title && (e.title = t.attributes.title), null != t.title && (e.title = t.title), null != t.x && (e.x = t.x), null != t.y && (e.y = t.y), null != t.color && (!0 === i.nodes.parseColor ? e.color = t.color : e.color = { background: t.color, border: t.color, highlight: { background: t.color, border: t.color }, hover: { background: t.color, border: t.color } }), e })), edges: o }
            }

            function ts(t, e) {
                void 0 === e && (e = {});
                var n = e.insertAt;
                if (t && "undefined" != typeof document) {
                    var i = document.head || document.getElementsByTagName("head")[0],
                        r = document.createElement("style");
                    r.type = "text/css", "top" === n && i.firstChild ? i.insertBefore(r, i.firstChild) : i.appendChild(r), r.styleSheet ? r.styleSheet.cssText = t : r.appendChild(document.createTextNode(t))
                }
            }
            ts(".vis-overlay {\n  position: absolute;\n  top: 0px;\n  right: 0px;\n  bottom: 0px;\n  left: 0px;\n\n  /* Must be displayed above for example selected Timeline items */\n  z-index: 10;\n}\n\n.vis-active {\n  box-shadow: 0 0 10px #86d5f8;\n}\n");
            var es = r((function(t, e) {
                t.exports = function(t) {
                    var e, n = t && t.preventDefault || !1,
                        i = t && t.container || window,
                        r = {},
                        o = { keydown: {}, keyup: {} },
                        g = {};
                    for (e = 97; e <= 122; e++) g[String.fromCharCode(e)] = { code: e - 97 + 65, shift: !1 };
                    for (e = 65; e <= 90; e++) g[String.fromCharCode(e)] = { code: e, shift: !0 };
                    for (e = 0; e <= 9; e++) g["" + e] = { code: 48 + e, shift: !1 };
                    for (e = 1; e <= 12; e++) g["F" + e] = { code: 111 + e, shift: !1 };
                    for (e = 0; e <= 9; e++) g["num" + e] = { code: 96 + e, shift: !1 };
                    g["num*"] = { code: 106, shift: !1 }, g["num+"] = { code: 107, shift: !1 }, g["num-"] = { code: 109, shift: !1 }, g["num/"] = { code: 111, shift: !1 }, g["num."] = { code: 110, shift: !1 }, g.left = { code: 37, shift: !1 }, g.up = { code: 38, shift: !1 }, g.right = { code: 39, shift: !1 }, g.down = { code: 40, shift: !1 }, g.space = { code: 32, shift: !1 }, g.enter = { code: 13, shift: !1 }, g.shift = { code: 16, shift: void 0 }, g.esc = { code: 27, shift: !1 }, g.backspace = { code: 8, shift: !1 }, g.tab = { code: 9, shift: !1 }, g.ctrl = { code: 17, shift: !1 }, g.alt = { code: 18, shift: !1 }, g.delete = { code: 46, shift: !1 }, g.pageup = { code: 33, shift: !1 }, g.pagedown = { code: 34, shift: !1 }, g["="] = { code: 187, shift: !1 }, g["-"] = { code: 189, shift: !1 }, g["]"] = { code: 221, shift: !1 }, g["["] = { code: 219, shift: !1 };
                    var s = function(t) { a(t, "keydown") },
                        A = function(t) { a(t, "keyup") },
                        a = function(t, e) {
                            if (void 0 !== o[e][t.keyCode]) {
                                for (var i = o[e][t.keyCode], r = 0; r < i.length; r++)(void 0 === i[r].shift || 1 == i[r].shift && 1 == t.shiftKey || 0 == i[r].shift && 0 == t.shiftKey) && i[r].fn(t);
                                1 == n && t.preventDefault()
                            }
                        };
                    return r.bind = function(t, e, n) {
                        if (void 0 === n && (n = "keydown"), void 0 === g[t]) throw new Error("unsupported key: " + t);
                        void 0 === o[n][g[t].code] && (o[n][g[t].code] = []), o[n][g[t].code].push({ fn: e, shift: g[t].shift })
                    }, r.bindAll = function(t, e) { for (var n in void 0 === e && (e = "keydown"), g) g.hasOwnProperty(n) && r.bind(n, t, e) }, r.getKey = function(t) {
                        for (var e in g)
                            if (g.hasOwnProperty(e)) { if (1 == t.shiftKey && 1 == g[e].shift && t.keyCode == g[e].code) return e; if (0 == t.shiftKey && 0 == g[e].shift && t.keyCode == g[e].code) return e; if (t.keyCode == g[e].code && "shift" == e) return e }
                        return "unknown key, currently not supported"
                    }, r.unbind = function(t, e, n) {
                        if (void 0 === n && (n = "keydown"), void 0 === g[t]) throw new Error("unsupported key: " + t);
                        if (void 0 !== e) {
                            var i = [],
                                r = o[n][g[t].code];
                            if (void 0 !== r)
                                for (var s = 0; s < r.length; s++) r[s].fn == e && r[s].shift == g[t].shift || i.push(o[n][g[t].code][s]);
                            o[n][g[t].code] = i
                        } else o[n][g[t].code] = []
                    }, r.reset = function() { o = { keydown: {}, keyup: {} } }, r.destroy = function() { o = { keydown: {}, keyup: {} }, i.removeEventListener("keydown", s, !0), i.removeEventListener("keyup", A, !0) }, i.addEventListener("keydown", s, !0), i.addEventListener("keyup", A, !0), r
                }
            }));
            /*! Hammer.JS - v2.0.17-rc - 2019-12-16
             * http://naver.github.io/egjs
             *
             * Forked By Naver egjs
             * Copyright (c) hammerjs
             * Licensed under the MIT license */
            function ns() { return (ns = Object.assign || function(t) { for (var e = 1; e < arguments.length; e++) { var n = arguments[e]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (t[i] = n[i]) } return t }).apply(this, arguments) }

            function is(t, e) { t.prototype = Object.create(e.prototype), t.prototype.constructor = t, t.__proto__ = e }

            function rs(t) { if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return t }
            var os, gs = "function" != typeof Object.assign ? function(t) {
                    if (null == t) throw new TypeError("Cannot convert undefined or null to object");
                    for (var e = Object(t), n = 1; n < arguments.length; n++) {
                        var i = arguments[n];
                        if (null != i)
                            for (var r in i) i.hasOwnProperty(r) && (e[r] = i[r])
                    }
                    return e
                } : Object.assign,
                ss = ["", "webkit", "Moz", "MS", "ms", "o"],
                As = "undefined" == typeof document ? { style: {} } : document.createElement("div"),
                as = Math.round,
                Cs = Math.abs,
                Is = Date.now;

            function us(t, e) {
                for (var n, i, r = e[0].toUpperCase() + e.slice(1), o = 0; o < ss.length;) {
                    if ((i = (n = ss[o]) ? n + r : e) in t) return i;
                    o++
                }
            }
            os = "undefined" == typeof window ? {} : window;
            var cs = us(As.style, "touchAction"),
                ls = void 0 !== cs;
            var hs = function() {
                    if (!ls) return !1;
                    var t = {},
                        e = os.CSS && os.CSS.supports;
                    return ["auto", "manipulation", "pan-y", "pan-x", "pan-x pan-y", "none"].forEach((function(n) { return t[n] = !e || os.CSS.supports("touch-action", n) })), t
                }(),
                ds = "ontouchstart" in os,
                fs = void 0 !== us(os, "PointerEvent"),
                ps = ds && /mobile|tablet|ip(ad|hone|od)|android/i.test(navigator.userAgent),
                vs = ["x", "y"],
                ys = ["clientX", "clientY"];

            function bs(t, e, n) {
                var i;
                if (t)
                    if (t.forEach) t.forEach(e, n);
                    else if (void 0 !== t.length)
                    for (i = 0; i < t.length;) e.call(n, t[i], i, t), i++;
                else
                    for (i in t) t.hasOwnProperty(i) && e.call(n, t[i], i, t)
            }

            function ms(t, e) { return "function" == typeof t ? t.apply(e && e[0] || void 0, e) : t }

            function ws(t, e) { return t.indexOf(e) > -1 }
            var _s = function() {
                function t(t, e) { this.manager = t, this.set(e) }
                var e = t.prototype;
                return e.set = function(t) { "compute" === t && (t = this.compute()), ls && this.manager.element.style && hs[t] && (this.manager.element.style[cs] = t), this.actions = t.toLowerCase().trim() }, e.update = function() { this.set(this.manager.options.touchAction) }, e.compute = function() {
                    var t = [];
                    return bs(this.manager.recognizers, (function(e) { ms(e.options.enable, [e]) && (t = t.concat(e.getTouchAction())) })),
                        function(t) {
                            if (ws(t, "none")) return "none";
                            var e = ws(t, "pan-x"),
                                n = ws(t, "pan-y");
                            return e && n ? "none" : e || n ? e ? "pan-x" : "pan-y" : ws(t, "manipulation") ? "manipulation" : "auto"
                        }(t.join(" "))
                }, e.preventDefaults = function(t) {
                    var e = t.srcEvent,
                        n = t.offsetDirection;
                    if (this.manager.session.prevented) e.preventDefault();
                    else {
                        var i = this.actions,
                            r = ws(i, "none") && !hs.none,
                            o = ws(i, "pan-y") && !hs["pan-y"],
                            g = ws(i, "pan-x") && !hs["pan-x"];
                        if (r) {
                            var s = 1 === t.pointers.length,
                                A = t.distance < 2,
                                a = t.deltaTime < 250;
                            if (s && A && a) return
                        }
                        if (!g || !o) return r || o && 6 & n || g && 24 & n ? this.preventSrc(e) : void 0
                    }
                }, e.preventSrc = function(t) { this.manager.session.prevented = !0, t.preventDefault() }, t
            }();

            function ks(t, e) {
                for (; t;) {
                    if (t === e) return !0;
                    t = t.parentNode
                }
                return !1
            }

            function xs(t) { var e = t.length; if (1 === e) return { x: as(t[0].clientX), y: as(t[0].clientY) }; for (var n = 0, i = 0, r = 0; r < e;) n += t[r].clientX, i += t[r].clientY, r++; return { x: as(n / e), y: as(i / e) } }

            function Os(t) { for (var e = [], n = 0; n < t.pointers.length;) e[n] = { clientX: as(t.pointers[n].clientX), clientY: as(t.pointers[n].clientY) }, n++; return { timeStamp: Is(), pointers: e, center: xs(e), deltaX: t.deltaX, deltaY: t.deltaY } }

            function Es(t, e, n) {
                n || (n = vs);
                var i = e[n[0]] - t[n[0]],
                    r = e[n[1]] - t[n[1]];
                return Math.sqrt(i * i + r * r)
            }

            function Ts(t, e, n) {
                n || (n = vs);
                var i = e[n[0]] - t[n[0]],
                    r = e[n[1]] - t[n[1]];
                return 180 * Math.atan2(r, i) / Math.PI
            }

            function Ss(t, e) { return t === e ? 1 : Cs(t) >= Cs(e) ? t < 0 ? 2 : 4 : e < 0 ? 8 : 16 }

            function Ds(t, e, n) { return { x: e / t || 0, y: n / t || 0 } }

            function Ns(t, e) {
                var n = t.session,
                    i = e.pointers,
                    r = i.length;
                n.firstInput || (n.firstInput = Os(e)), r > 1 && !n.firstMultiple ? n.firstMultiple = Os(e) : 1 === r && (n.firstMultiple = !1);
                var o = n.firstInput,
                    g = n.firstMultiple,
                    s = g ? g.center : o.center,
                    A = e.center = xs(i);
                e.timeStamp = Is(), e.deltaTime = e.timeStamp - o.timeStamp, e.angle = Ts(s, A), e.distance = Es(s, A),
                    function(t, e) {
                        var n = e.center,
                            i = t.offsetDelta || {},
                            r = t.prevDelta || {},
                            o = t.prevInput || {};
                        1 !== e.eventType && 4 !== o.eventType || (r = t.prevDelta = { x: o.deltaX || 0, y: o.deltaY || 0 }, i = t.offsetDelta = { x: n.x, y: n.y }), e.deltaX = r.x + (n.x - i.x), e.deltaY = r.y + (n.y - i.y)
                    }(n, e), e.offsetDirection = Ss(e.deltaX, e.deltaY);
                var a, C, I = Ds(e.deltaTime, e.deltaX, e.deltaY);
                e.overallVelocityX = I.x, e.overallVelocityY = I.y, e.overallVelocity = Cs(I.x) > Cs(I.y) ? I.x : I.y, e.scale = g ? (a = g.pointers, Es((C = i)[0], C[1], ys) / Es(a[0], a[1], ys)) : 1, e.rotation = g ? function(t, e) { return Ts(e[1], e[0], ys) + Ts(t[1], t[0], ys) }(g.pointers, i) : 0, e.maxPointers = n.prevInput ? e.pointers.length > n.prevInput.maxPointers ? e.pointers.length : n.prevInput.maxPointers : e.pointers.length,
                    function(t, e) {
                        var n, i, r, o, g = t.lastInterval || e,
                            s = e.timeStamp - g.timeStamp;
                        if (8 !== e.eventType && (s > 25 || void 0 === g.velocity)) {
                            var A = e.deltaX - g.deltaX,
                                a = e.deltaY - g.deltaY,
                                C = Ds(s, A, a);
                            i = C.x, r = C.y, n = Cs(C.x) > Cs(C.y) ? C.x : C.y, o = Ss(A, a), t.lastInterval = e
                        } else n = g.velocity, i = g.velocityX, r = g.velocityY, o = g.direction;
                        e.velocity = n, e.velocityX = i, e.velocityY = r, e.direction = o
                    }(n, e);
                var u, c = t.element,
                    l = e.srcEvent;
                ks(u = l.composedPath ? l.composedPath()[0] : l.path ? l.path[0] : l.target, c) && (c = u), e.target = c
            }

            function Rs(t, e, n) {
                var i = n.pointers.length,
                    r = n.changedPointers.length,
                    o = 1 & e && i - r == 0,
                    g = 12 & e && i - r == 0;
                n.isFirst = !!o, n.isFinal = !!g, o && (t.session = {}), n.eventType = e, Ns(t, n), t.emit("hammer.input", n), t.recognize(n), t.session.prevInput = n
            }

            function Ps(t) { return t.trim().split(/\s+/g) }

            function Ms(t, e, n) { bs(Ps(e), (function(e) { t.addEventListener(e, n, !1) })) }

            function js(t, e, n) { bs(Ps(e), (function(e) { t.removeEventListener(e, n, !1) })) }

            function Fs(t) { var e = t.ownerDocument || t; return e.defaultView || e.parentWindow || window }
            var zs = function() {
                function t(t, e) {
                    var n = this;
                    this.manager = t, this.callback = e, this.element = t.element, this.target = t.options.inputTarget, this.domHandler = function(e) { ms(t.options.enable, [t]) && n.handler(e) }, this.init()
                }
                var e = t.prototype;
                return e.handler = function() {}, e.init = function() { this.evEl && Ms(this.element, this.evEl, this.domHandler), this.evTarget && Ms(this.target, this.evTarget, this.domHandler), this.evWin && Ms(Fs(this.element), this.evWin, this.domHandler) }, e.destroy = function() { this.evEl && js(this.element, this.evEl, this.domHandler), this.evTarget && js(this.target, this.evTarget, this.domHandler), this.evWin && js(Fs(this.element), this.evWin, this.domHandler) }, t
            }();

            function Ls(t, e, n) {
                if (t.indexOf && !n) return t.indexOf(e);
                for (var i = 0; i < t.length;) {
                    if (n && t[i][n] == e || !n && t[i] === e) return i;
                    i++
                }
                return -1
            }
            var Bs = { pointerdown: 1, pointermove: 2, pointerup: 4, pointercancel: 8, pointerout: 8 },
                Zs = { 2: "touch", 3: "pen", 4: "mouse", 5: "kinect" },
                Vs = "pointerdown",
                Ys = "pointermove pointerup pointercancel";
            os.MSPointerEvent && !os.PointerEvent && (Vs = "MSPointerDown", Ys = "MSPointerMove MSPointerUp MSPointerCancel");
            var Gs = function(t) {
                function e() { var n, i = e.prototype; return i.evEl = Vs, i.evWin = Ys, (n = t.apply(this, arguments) || this).store = n.manager.session.pointerEvents = [], n }
                return is(e, t), e.prototype.handler = function(t) {
                    var e = this.store,
                        n = !1,
                        i = t.type.toLowerCase().replace("ms", ""),
                        r = Bs[i],
                        o = Zs[t.pointerType] || t.pointerType,
                        g = "touch" === o,
                        s = Ls(e, t.pointerId, "pointerId");
                    1 & r && (0 === t.button || g) ? s < 0 && (e.push(t), s = e.length - 1) : 12 & r && (n = !0), s < 0 || (e[s] = t, this.callback(this.manager, r, { pointers: e, changedPointers: [t], pointerType: o, srcEvent: t }), n && e.splice(s, 1))
                }, e
            }(zs);

            function Us(t) { return Array.prototype.slice.call(t, 0) }

            function Ws(t, e, n) {
                for (var i = [], r = [], o = 0; o < t.length;) {
                    var g = e ? t[o][e] : t[o];
                    Ls(r, g) < 0 && i.push(t[o]), r[o] = g, o++
                }
                return n && (i = e ? i.sort((function(t, n) { return t[e] > n[e] })) : i.sort()), i
            }
            var Hs = { touchstart: 1, touchmove: 2, touchend: 4, touchcancel: 8 },
                Ks = function(t) {
                    function e() { var n; return e.prototype.evTarget = "touchstart touchmove touchend touchcancel", (n = t.apply(this, arguments) || this).targetIds = {}, n }
                    return is(e, t), e.prototype.handler = function(t) {
                        var e = Hs[t.type],
                            n = Qs.call(this, t, e);
                        n && this.callback(this.manager, e, { pointers: n[0], changedPointers: n[1], pointerType: "touch", srcEvent: t })
                    }, e
                }(zs);

            function Qs(t, e) {
                var n, i, r = Us(t.touches),
                    o = this.targetIds;
                if (3 & e && 1 === r.length) return o[r[0].identifier] = !0, [r, r];
                var g = Us(t.changedTouches),
                    s = [],
                    A = this.target;
                if (i = r.filter((function(t) { return ks(t.target, A) })), 1 === e)
                    for (n = 0; n < i.length;) o[i[n].identifier] = !0, n++;
                for (n = 0; n < g.length;) o[g[n].identifier] && s.push(g[n]), 12 & e && delete o[g[n].identifier], n++;
                return s.length ? [Ws(i.concat(s), "identifier", !0), s] : void 0
            }
            var Xs = { mousedown: 1, mousemove: 2, mouseup: 4 },
                qs = function(t) {
                    function e() { var n, i = e.prototype; return i.evEl = "mousedown", i.evWin = "mousemove mouseup", (n = t.apply(this, arguments) || this).pressed = !1, n }
                    return is(e, t), e.prototype.handler = function(t) {
                        var e = Xs[t.type];
                        1 & e && 0 === t.button && (this.pressed = !0), 2 & e && 1 !== t.which && (e = 4), this.pressed && (4 & e && (this.pressed = !1), this.callback(this.manager, e, { pointers: [t], changedPointers: [t], pointerType: "mouse", srcEvent: t }))
                    }, e
                }(zs);

            function Js(t) {
                var e = t.changedPointers[0];
                if (e.identifier === this.primaryTouch) {
                    var n = { x: e.clientX, y: e.clientY },
                        i = this.lastTouches;
                    this.lastTouches.push(n);
                    setTimeout((function() {
                        var t = i.indexOf(n);
                        t > -1 && i.splice(t, 1)
                    }), 2500)
                }
            }

            function $s(t, e) { 1 & t ? (this.primaryTouch = e.changedPointers[0].identifier, Js.call(this, e)) : 12 & t && Js.call(this, e) }

            function tA(t) {
                for (var e = t.srcEvent.clientX, n = t.srcEvent.clientY, i = 0; i < this.lastTouches.length; i++) {
                    var r = this.lastTouches[i],
                        o = Math.abs(e - r.x),
                        g = Math.abs(n - r.y);
                    if (o <= 25 && g <= 25) return !0
                }
                return !1
            }
            var eA = function() {
                return function(t) {
                    function e(e, n) {
                        var i;
                        return (i = t.call(this, e, n) || this).handler = function(t, e, n) {
                            var r = "touch" === n.pointerType,
                                o = "mouse" === n.pointerType;
                            if (!(o && n.sourceCapabilities && n.sourceCapabilities.firesTouchEvents)) {
                                if (r) $s.call(rs(rs(i)), e, n);
                                else if (o && tA.call(rs(rs(i)), n)) return;
                                i.callback(t, e, n)
                            }
                        }, i.touch = new Ks(i.manager, i.handler), i.mouse = new qs(i.manager, i.handler), i.primaryTouch = null, i.lastTouches = [], i
                    }
                    return is(e, t), e.prototype.destroy = function() { this.touch.destroy(), this.mouse.destroy() }, e
                }(zs)
            }();

            function nA(t, e, n) { return !!Array.isArray(t) && (bs(t, n[e], n), !0) }
            var iA = 1;

            function rA(t, e) { var n = e.manager; return n ? n.get(t) : t }

            function oA(t) { return 16 & t ? "cancel" : 8 & t ? "end" : 4 & t ? "move" : 2 & t ? "start" : "" }
            var gA = function() {
                    function t(t) { void 0 === t && (t = {}), this.options = ns({ enable: !0 }, t), this.id = iA++, this.manager = null, this.state = 1, this.simultaneous = {}, this.requireFail = [] }
                    var e = t.prototype;
                    return e.set = function(t) { return gs(this.options, t), this.manager && this.manager.touchAction.update(), this }, e.recognizeWith = function(t) { if (nA(t, "recognizeWith", this)) return this; var e = this.simultaneous; return e[(t = rA(t, this)).id] || (e[t.id] = t, t.recognizeWith(this)), this }, e.dropRecognizeWith = function(t) { return nA(t, "dropRecognizeWith", this) || (t = rA(t, this), delete this.simultaneous[t.id]), this }, e.requireFailure = function(t) { if (nA(t, "requireFailure", this)) return this; var e = this.requireFail; return -1 === Ls(e, t = rA(t, this)) && (e.push(t), t.requireFailure(this)), this }, e.dropRequireFailure = function(t) {
                        if (nA(t, "dropRequireFailure", this)) return this;
                        t = rA(t, this);
                        var e = Ls(this.requireFail, t);
                        return e > -1 && this.requireFail.splice(e, 1), this
                    }, e.hasRequireFailures = function() { return this.requireFail.length > 0 }, e.canRecognizeWith = function(t) { return !!this.simultaneous[t.id] }, e.emit = function(t) {
                        var e = this,
                            n = this.state;

                        function i(n) { e.manager.emit(n, t) }
                        n < 8 && i(e.options.event + oA(n)), i(e.options.event), t.additionalEvent && i(t.additionalEvent), n >= 8 && i(e.options.event + oA(n))
                    }, e.tryEmit = function(t) {
                        if (this.canEmit()) return this.emit(t);
                        this.state = 32
                    }, e.canEmit = function() {
                        for (var t = 0; t < this.requireFail.length;) {
                            if (!(33 & this.requireFail[t].state)) return !1;
                            t++
                        }
                        return !0
                    }, e.recognize = function(t) {
                        var e = gs({}, t);
                        if (!ms(this.options.enable, [this, e])) return this.reset(), void(this.state = 32);
                        56 & this.state && (this.state = 1), this.state = this.process(e), 30 & this.state && this.tryEmit(e)
                    }, e.process = function(t) {}, e.getTouchAction = function() {}, e.reset = function() {}, t
                }(),
                sA = function(t) {
                    function e(e) { var n; return void 0 === e && (e = {}), (n = t.call(this, ns({ event: "tap", pointers: 1, taps: 1, interval: 300, time: 250, threshold: 9, posThreshold: 10 }, e)) || this).pTime = !1, n.pCenter = !1, n._timer = null, n._input = null, n.count = 0, n }
                    is(e, t);
                    var n = e.prototype;
                    return n.getTouchAction = function() { return ["manipulation"] }, n.process = function(t) {
                        var e = this,
                            n = this.options,
                            i = t.pointers.length === n.pointers,
                            r = t.distance < n.threshold,
                            o = t.deltaTime < n.time;
                        if (this.reset(), 1 & t.eventType && 0 === this.count) return this.failTimeout();
                        if (r && o && i) {
                            if (4 !== t.eventType) return this.failTimeout();
                            var g = !this.pTime || t.timeStamp - this.pTime < n.interval,
                                s = !this.pCenter || Es(this.pCenter, t.center) < n.posThreshold;
                            if (this.pTime = t.timeStamp, this.pCenter = t.center, s && g ? this.count += 1 : this.count = 1, this._input = t, 0 === this.count % n.taps) return this.hasRequireFailures() ? (this._timer = setTimeout((function() { e.state = 8, e.tryEmit() }), n.interval), 2) : 8
                        }
                        return 32
                    }, n.failTimeout = function() { var t = this; return this._timer = setTimeout((function() { t.state = 32 }), this.options.interval), 32 }, n.reset = function() { clearTimeout(this._timer) }, n.emit = function() { 8 === this.state && (this._input.tapCount = this.count, this.manager.emit(this.options.event, this._input)) }, e
                }(gA),
                AA = function(t) {
                    function e(e) { return void 0 === e && (e = {}), t.call(this, ns({ pointers: 1 }, e)) || this }
                    is(e, t);
                    var n = e.prototype;
                    return n.attrTest = function(t) { var e = this.options.pointers; return 0 === e || t.pointers.length === e }, n.process = function(t) {
                        var e = this.state,
                            n = t.eventType,
                            i = 6 & e,
                            r = this.attrTest(t);
                        return i && (8 & n || !r) ? 16 | e : i || r ? 4 & n ? 8 | e : 2 & e ? 4 | e : 2 : 32
                    }, e
                }(gA);

            function aA(t) { return 16 === t ? "down" : 8 === t ? "up" : 2 === t ? "left" : 4 === t ? "right" : "" }
            var CA = function(t) {
                    function e(e) { var n; return void 0 === e && (e = {}), (n = t.call(this, ns({ event: "pan", threshold: 10, pointers: 1, direction: 30 }, e)) || this).pX = null, n.pY = null, n }
                    is(e, t);
                    var n = e.prototype;
                    return n.getTouchAction = function() {
                        var t = this.options.direction,
                            e = [];
                        return 6 & t && e.push("pan-y"), 24 & t && e.push("pan-x"), e
                    }, n.directionTest = function(t) {
                        var e = this.options,
                            n = !0,
                            i = t.distance,
                            r = t.direction,
                            o = t.deltaX,
                            g = t.deltaY;
                        return r & e.direction || (6 & e.direction ? (r = 0 === o ? 1 : o < 0 ? 2 : 4, n = o !== this.pX, i = Math.abs(t.deltaX)) : (r = 0 === g ? 1 : g < 0 ? 8 : 16, n = g !== this.pY, i = Math.abs(t.deltaY))), t.direction = r, n && i > e.threshold && r & e.direction
                    }, n.attrTest = function(t) { return AA.prototype.attrTest.call(this, t) && (2 & this.state || !(2 & this.state) && this.directionTest(t)) }, n.emit = function(e) {
                        this.pX = e.deltaX, this.pY = e.deltaY;
                        var n = aA(e.direction);
                        n && (e.additionalEvent = this.options.event + n), t.prototype.emit.call(this, e)
                    }, e
                }(AA),
                IA = function(t) {
                    function e(e) { return void 0 === e && (e = {}), t.call(this, ns({ event: "swipe", threshold: 10, velocity: .3, direction: 30, pointers: 1 }, e)) || this }
                    is(e, t);
                    var n = e.prototype;
                    return n.getTouchAction = function() { return CA.prototype.getTouchAction.call(this) }, n.attrTest = function(e) { var n, i = this.options.direction; return 30 & i ? n = e.overallVelocity : 6 & i ? n = e.overallVelocityX : 24 & i && (n = e.overallVelocityY), t.prototype.attrTest.call(this, e) && i & e.offsetDirection && e.distance > this.options.threshold && e.maxPointers === this.options.pointers && Cs(n) > this.options.velocity && 4 & e.eventType }, n.emit = function(t) {
                        var e = aA(t.offsetDirection);
                        e && this.manager.emit(this.options.event + e, t), this.manager.emit(this.options.event, t)
                    }, e
                }(AA),
                uA = function(t) {
                    function e(e) { return void 0 === e && (e = {}), t.call(this, ns({ event: "pinch", threshold: 0, pointers: 2 }, e)) || this }
                    is(e, t);
                    var n = e.prototype;
                    return n.getTouchAction = function() { return ["none"] }, n.attrTest = function(e) { return t.prototype.attrTest.call(this, e) && (Math.abs(e.scale - 1) > this.options.threshold || 2 & this.state) }, n.emit = function(e) {
                        if (1 !== e.scale) {
                            var n = e.scale < 1 ? "in" : "out";
                            e.additionalEvent = this.options.event + n
                        }
                        t.prototype.emit.call(this, e)
                    }, e
                }(AA),
                cA = function(t) {
                    function e(e) { return void 0 === e && (e = {}), t.call(this, ns({ event: "rotate", threshold: 0, pointers: 2 }, e)) || this }
                    is(e, t);
                    var n = e.prototype;
                    return n.getTouchAction = function() { return ["none"] }, n.attrTest = function(e) { return t.prototype.attrTest.call(this, e) && (Math.abs(e.rotation) > this.options.threshold || 2 & this.state) }, e
                }(AA),
                lA = function(t) {
                    function e(e) { var n; return void 0 === e && (e = {}), (n = t.call(this, ns({ event: "press", pointers: 1, time: 251, threshold: 9 }, e)) || this)._timer = null, n._input = null, n }
                    is(e, t);
                    var n = e.prototype;
                    return n.getTouchAction = function() { return ["auto"] }, n.process = function(t) {
                        var e = this,
                            n = this.options,
                            i = t.pointers.length === n.pointers,
                            r = t.distance < n.threshold,
                            o = t.deltaTime > n.time;
                        if (this._input = t, !r || !i || 12 & t.eventType && !o) this.reset();
                        else if (1 & t.eventType) this.reset(), this._timer = setTimeout((function() { e.state = 8, e.tryEmit() }), n.time);
                        else if (4 & t.eventType) return 8;
                        return 32
                    }, n.reset = function() { clearTimeout(this._timer) }, n.emit = function(t) { 8 === this.state && (t && 4 & t.eventType ? this.manager.emit(this.options.event + "up", t) : (this._input.timeStamp = Is(), this.manager.emit(this.options.event, this._input))) }, e
                }(gA),
                hA = { domEvents: !1, touchAction: "compute", enable: !0, inputTarget: null, inputClass: null, cssProps: { userSelect: "none", touchSelect: "none", touchCallout: "none", contentZooming: "none", userDrag: "none", tapHighlightColor: "rgba(0,0,0,0)" } },
                dA = [
                    [cA, { enable: !1 }],
                    [uA, { enable: !1 },
                        ["rotate"]
                    ],
                    [IA, { direction: 6 }],
                    [CA, { direction: 6 },
                        ["swipe"]
                    ],
                    [sA],
                    [sA, { event: "doubletap", taps: 2 },
                        ["tap"]
                    ],
                    [lA]
                ];

            function fA(t, e) {
                var n, i = t.element;
                i.style && (bs(t.options.cssProps, (function(r, o) { n = us(i.style, o), e ? (t.oldCssProps[n] = i.style[n], i.style[n] = r) : i.style[n] = t.oldCssProps[n] || "" })), e || (t.oldCssProps = {}))
            }
            var pA = function() {
                    function t(t, e) {
                        var n, i = this;
                        this.options = gs({}, hA, e || {}), this.options.inputTarget = this.options.inputTarget || t, this.handlers = {}, this.session = {}, this.recognizers = [], this.oldCssProps = {}, this.element = t, this.input = new((n = this).options.inputClass || (fs ? Gs : ps ? Ks : ds ? eA : qs))(n, Rs), this.touchAction = new _s(this, this.options.touchAction), fA(this, !0), bs(this.options.recognizers, (function(t) {
                            var e = i.add(new t[0](t[1]));
                            t[2] && e.recognizeWith(t[2]), t[3] && e.requireFailure(t[3])
                        }), this)
                    }
                    var e = t.prototype;
                    return e.set = function(t) { return gs(this.options, t), t.touchAction && this.touchAction.update(), t.inputTarget && (this.input.destroy(), this.input.target = t.inputTarget, this.input.init()), this }, e.stop = function(t) { this.session.stopped = t ? 2 : 1 }, e.recognize = function(t) {
                        var e = this.session;
                        if (!e.stopped) {
                            var n;
                            this.touchAction.preventDefaults(t);
                            var i = this.recognizers,
                                r = e.curRecognizer;
                            (!r || r && 8 & r.state) && (e.curRecognizer = null, r = null);
                            for (var o = 0; o < i.length;) n = i[o], 2 === e.stopped || r && n !== r && !n.canRecognizeWith(r) ? n.reset() : n.recognize(t), !r && 14 & n.state && (e.curRecognizer = n, r = n), o++
                        }
                    }, e.get = function(t) {
                        if (t instanceof gA) return t;
                        for (var e = this.recognizers, n = 0; n < e.length; n++)
                            if (e[n].options.event === t) return e[n];
                        return null
                    }, e.add = function(t) { if (nA(t, "add", this)) return this; var e = this.get(t.options.event); return e && this.remove(e), this.recognizers.push(t), t.manager = this, this.touchAction.update(), t }, e.remove = function(t) {
                        if (nA(t, "remove", this)) return this;
                        var e = this.get(t);
                        if (t) {
                            var n = this.recognizers,
                                i = Ls(n, e); - 1 !== i && (n.splice(i, 1), this.touchAction.update())
                        }
                        return this
                    }, e.on = function(t, e) { if (void 0 === t || void 0 === e) return this; var n = this.handlers; return bs(Ps(t), (function(t) { n[t] = n[t] || [], n[t].push(e) })), this }, e.off = function(t, e) { if (void 0 === t) return this; var n = this.handlers; return bs(Ps(t), (function(t) { e ? n[t] && n[t].splice(Ls(n[t], e), 1) : delete n[t] })), this }, e.emit = function(t, e) {
                        this.options.domEvents && function(t, e) {
                            var n = document.createEvent("Event");
                            n.initEvent(t, !0, !0), n.gesture = e, e.target.dispatchEvent(n)
                        }(t, e);
                        var n = this.handlers[t] && this.handlers[t].slice();
                        if (n && n.length) { e.type = t, e.preventDefault = function() { e.srcEvent.preventDefault() }; for (var i = 0; i < n.length;) n[i](e), i++ }
                    }, e.destroy = function() { this.element && fA(this, !1), this.handlers = {}, this.session = {}, this.input.destroy(), this.element = null }, t
                }(),
                vA = { touchstart: 1, touchmove: 2, touchend: 4, touchcancel: 8 },
                yA = function(t) {
                    function e() { var n, i = e.prototype; return i.evTarget = "touchstart", i.evWin = "touchstart touchmove touchend touchcancel", (n = t.apply(this, arguments) || this).started = !1, n }
                    return is(e, t), e.prototype.handler = function(t) {
                        var e = vA[t.type];
                        if (1 === e && (this.started = !0), this.started) {
                            var n = bA.call(this, t, e);
                            12 & e && n[0].length - n[1].length == 0 && (this.started = !1), this.callback(this.manager, e, { pointers: n[0], changedPointers: n[1], pointerType: "touch", srcEvent: t })
                        }
                    }, e
                }(zs);

            function bA(t, e) {
                var n = Us(t.touches),
                    i = Us(t.changedTouches);
                return 12 & e && (n = Ws(n.concat(i), "identifier", !0)), [n, i]
            }

            function mA(t, e, n) {
                var i = "DEPRECATED METHOD: " + e + "\n" + n + " AT \n";
                return function() {
                    var e = new Error("get-stack-trace"),
                        n = e && e.stack ? e.stack.replace(/^[^\(]+?[\n$]/gm, "").replace(/^\s+at\s+/gm, "").replace(/^Object.<anonymous>\s*\(/gm, "{anonymous}()@") : "Unknown Stack Trace",
                        r = window.console && (window.console.warn || window.console.log);
                    return r && r.call(window.console, i, n), t.apply(this, arguments)
                }
            }
            var wA = mA((function(t, e, n) { for (var i = Object.keys(e), r = 0; r < i.length;)(!n || n && void 0 === t[i[r]]) && (t[i[r]] = e[i[r]]), r++; return t }), "extend", "Use `assign`."),
                _A = mA((function(t, e) { return wA(t, e, !0) }), "merge", "Use `assign`.");

            function kA(t, e, n) {
                var i, r = e.prototype;
                (i = t.prototype = Object.create(r)).constructor = t, i._super = r, n && gs(i, n)
            }

            function xA(t, e) { return function() { return t.apply(e, arguments) } }
            var OA = function() { var t = function(t, e) { return void 0 === e && (e = {}), new pA(t, ns({ recognizers: dA.concat() }, e)) }; return t.VERSION = "2.0.17-rc", t.DIRECTION_ALL = 30, t.DIRECTION_DOWN = 16, t.DIRECTION_LEFT = 2, t.DIRECTION_RIGHT = 4, t.DIRECTION_UP = 8, t.DIRECTION_HORIZONTAL = 6, t.DIRECTION_VERTICAL = 24, t.DIRECTION_NONE = 1, t.DIRECTION_DOWN = 16, t.INPUT_START = 1, t.INPUT_MOVE = 2, t.INPUT_END = 4, t.INPUT_CANCEL = 8, t.STATE_POSSIBLE = 1, t.STATE_BEGAN = 2, t.STATE_CHANGED = 4, t.STATE_ENDED = 8, t.STATE_RECOGNIZED = 8, t.STATE_CANCELLED = 16, t.STATE_FAILED = 32, t.Manager = pA, t.Input = zs, t.TouchAction = _s, t.TouchInput = Ks, t.MouseInput = qs, t.PointerEventInput = Gs, t.TouchMouseInput = eA, t.SingleTouchInput = yA, t.Recognizer = gA, t.AttrRecognizer = AA, t.Tap = sA, t.Pan = CA, t.Swipe = IA, t.Pinch = uA, t.Rotate = cA, t.Press = lA, t.on = Ms, t.off = js, t.each = bs, t.merge = _A, t.extend = wA, t.bindFn = xA, t.assign = gs, t.inherit = kA, t.bindFn = xA, t.prefixed = us, t.toArray = Us, t.inArray = Ls, t.uniqueArray = Ws, t.splitStr = Ps, t.boolOrFn = ms, t.hasParent = ks, t.addEventListeners = Ms, t.removeEventListeners = js, t.defaults = gs({}, hA, { preset: dA }), t }(),
                EA = r((function(t) {
                    if ("undefined" != typeof window) {
                        var e = window.Hammer || OA;
                        t.exports = e
                    } else t.exports = function() { return { on: t = function() {}, off: t, destroy: t, emit: t, get: function(e) { return { set: t } } }; var t }
                }));

            function TA(t) {
                var e, n, i = this;
                this.active = !1, this.dom = { container: t }, this.dom.overlay = document.createElement("div"), this.dom.overlay.className = "vis-overlay", this.dom.container.appendChild(this.dom.overlay), this.hammer = EA(this.dom.overlay), this.hammer.on("tap", tt(e = this._onTapOverlay).call(e, this));
                var r = ["tap", "doubletap", "press", "pinch", "pan", "panstart", "panmove", "panend"];
                zi(r).call(r, (function(t) { i.hammer.on(t, (function(t) { t.srcEvent.stopPropagation() })) })), document && document.body && (this.onClick = function(e) {
                    (function(t, e) {
                        for (; t;) {
                            if (t === e) return !0;
                            t = t.parentNode
                        }
                        return !1
                    })(e.target, t) || i.deactivate()
                }, document.body.addEventListener("click", this.onClick)), void 0 !== this.keycharm && this.keycharm.destroy(), this.keycharm = es(), this.escListener = tt(n = this.deactivate).call(n, this)
            }
            Et(TA.prototype), TA.current = null, TA.prototype.destroy = function() { this.deactivate(), this.dom.overlay.parentNode.removeChild(this.dom.overlay), this.onClick && document.body.removeEventListener("click", this.onClick), void 0 !== this.keycharm && this.keycharm.destroy(), this.keycharm = null, this.hammer.destroy(), this.hammer = null }, TA.prototype.activate = function() {
                var t, e, n, i, r;
                TA.current && TA.current.deactivate(), TA.current = this, this.active = !0, this.dom.overlay.style.display = "none", e = this.dom.container, n = "vis-active", i = e.className.split(" "), r = n.split(" "), i = uo(i).call(i, sr(r).call(r, (function(t) { return pr(i).call(i, t) < 0 }))), e.className = i.join(" "), this.emit("change"), this.emit("activate"), tt(t = this.keycharm).call(t, "esc", this.escListener)
            }, TA.prototype.deactivate = function() {
                var t, e, n, i;
                this.active = !1, this.dom.overlay.style.display = "block", t = this.dom.container, e = "vis-active", n = t.className.split(" "), i = e.split(" "), n = sr(n).call(n, (function(t) { return pr(i).call(i, t) < 0 })), t.className = n.join(" "), this.keycharm.unbind("esc", this.escListener), this.emit("change"), this.emit("deactivate")
            }, TA.prototype._onTapOverlay = function(t) { this.activate(), t.srcEvent.stopPropagation() };
            var SA = Object.freeze({ __proto__: null, en: { addDescription: "Click in an empty space to place a new node.", addEdge: "Add Edge", addNode: "Add Node", back: "Back", createEdgeError: "Cannot link edges to a cluster.", del: "Delete selected", deleteClusterError: "Clusters cannot be deleted.", edgeDescription: "Click on a node and drag the edge to another node to connect them.", edit: "Edit", editClusterError: "Clusters cannot be edited.", editEdge: "Edit Edge", editEdgeDescription: "Click on the control points and drag them to a node to connect to it.", editNode: "Edit Node" }, de: { addDescription: "Klicke auf eine freie Stelle, um einen neuen Knoten zu plazieren.", addEdge: "Kante hinzufügen", addNode: "Knoten hinzufügen", back: "Zurück", createEdgeError: "Es ist nicht möglich, Kanten mit Clustern zu verbinden.", del: "Lösche Auswahl", deleteClusterError: "Cluster können nicht gelöscht werden.", edgeDescription: "Klicke auf einen Knoten und ziehe die Kante zu einem anderen Knoten, um diese zu verbinden.", edit: "Editieren", editClusterError: "Cluster können nicht editiert werden.", editEdge: "Kante editieren", editEdgeDescription: "Klicke auf die Verbindungspunkte und ziehe diese auf einen Knoten, um sie zu verbinden.", editNode: "Knoten editieren" }, es: { addDescription: "Haga clic en un lugar vacío para colocar un nuevo nodo.", addEdge: "Añadir arista", addNode: "Añadir nodo", back: "Atrás", createEdgeError: "No se puede conectar una arista a un grupo.", del: "Eliminar selección", deleteClusterError: "No es posible eliminar grupos.", edgeDescription: "Haga clic en un nodo y arrastre la arista hacia otro nodo para conectarlos.", edit: "Editar", editClusterError: "No es posible editar grupos.", editEdge: "Editar arista", editEdgeDescription: "Haga clic en un punto de control y arrastrelo a un nodo para conectarlo.", editNode: "Editar nodo" }, it: { addDescription: "Clicca per aggiungere un nuovo nodo", addEdge: "Aggiungi un vertice", addNode: "Aggiungi un nodo", back: "Indietro", createEdgeError: "Non si possono collegare vertici ad un cluster", del: "Cancella la selezione", deleteClusterError: "I cluster non possono essere cancellati", edgeDescription: "Clicca su un nodo e trascinalo ad un altro nodo per connetterli.", edit: "Modifica", editClusterError: "I clusters non possono essere modificati.", editEdge: "Modifica il vertice", editEdgeDescription: "Clicca sui Punti di controllo e trascinali ad un nodo per connetterli.", editNode: "Modifica il nodo" }, nl: { addDescription: "Klik op een leeg gebied om een nieuwe node te maken.", addEdge: "Link toevoegen", addNode: "Node toevoegen", back: "Terug", createEdgeError: "Kan geen link maken naar een cluster.", del: "Selectie verwijderen", deleteClusterError: "Clusters kunnen niet worden verwijderd.", edgeDescription: "Klik op een node en sleep de link naar een andere node om ze te verbinden.", edit: "Wijzigen", editClusterError: "Clusters kunnen niet worden aangepast.", editEdge: "Link wijzigen", editEdgeDescription: "Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.", editNode: "Node wijzigen" }, pt: { addDescription: "Clique em um espaço em branco para adicionar um novo nó", addEdge: "Adicionar aresta", addNode: "Adicionar nó", back: "Voltar", createEdgeError: "Não foi possível linkar arestas a um cluster.", del: "Remover selecionado", deleteClusterError: "Clusters não puderam ser removidos.", edgeDescription: "Clique em um nó e arraste a aresta até outro nó para conectá-los", edit: "Editar", editClusterError: "Clusters não puderam ser editados.", editEdge: "Editar aresta", editEdgeDescription: "Clique nos pontos de controle e os arraste para um nó para conectá-los", editNode: "Editar nó" }, ru: { addDescription: "Кликните в свободное место, чтобы добавить новый узел.", addEdge: "Добавить ребро", addNode: "Добавить узел", back: "Назад", createEdgeError: "Невозможно соединить ребра в кластер.", del: "Удалить выбранное", deleteClusterError: "Кластеры не могут быть удалены", edgeDescription: "Кликните на узел и протяните ребро к другому узлу, чтобы соединить их.", edit: "Редактировать", editClusterError: "Кластеры недоступны для редактирования.", editEdge: "Редактировать ребро", editEdgeDescription: "Кликните на контрольные точки и перетащите их в узел, чтобы подключиться к нему.", editNode: "Редактировать узел" }, cn: { addDescription: "单击空白处放置新节点。", addEdge: "添加连接线", addNode: "添加节点", back: "返回", createEdgeError: "无法将连接线连接到群集。", del: "删除选定", deleteClusterError: "无法删除群集。", edgeDescription: "单击某个节点并将该连接线拖动到另一个节点以连接它们。", edit: "编辑", editClusterError: "无法编辑群集。", editEdge: "编辑连接线", editEdgeDescription: "单击控制节点并将它们拖到节点上连接。", editNode: "编辑节点" }, uk: { addDescription: "Kлікніть на вільне місце, щоб додати новий вузол.", addEdge: "Додати край", addNode: "Додати вузол", back: "Назад", createEdgeError: "Не можливо об'єднати краї в групу.", del: "Видалити обране", deleteClusterError: "Групи не можуть бути видалені.", edgeDescription: "Клікніть на вузол і перетягніть край до іншого вузла, щоб їх з'єднати.", edit: "Редагувати", editClusterError: "Групи недоступні для редагування.", editEdge: "Редагувати край", editEdgeDescription: "Клікніть на контрольні точки і перетягніть їх у вузол, щоб підключитися до нього.", editNode: "Редагувати вузол" }, fr: { addDescription: "Cliquez dans un endroit vide pour placer un nœud.", addEdge: "Ajouter un lien", addNode: "Ajouter un nœud", back: "Retour", createEdgeError: "Impossible de créer un lien vers un cluster.", del: "Effacer la sélection", deleteClusterError: "Les clusters ne peuvent pas être effacés.", edgeDescription: "Cliquez sur un nœud et glissez le lien vers un autre nœud pour les connecter.", edit: "Éditer", editClusterError: "Les clusters ne peuvent pas être édités.", editEdge: "Éditer le lien", editEdgeDescription: "Cliquez sur les points de contrôle et glissez-les pour connecter un nœud.", editNode: "Éditer le nœud" }, cs: { addDescription: "Kluknutím do prázdného prostoru můžete přidat nový vrchol.", addEdge: "Přidat hranu", addNode: "Přidat vrchol", back: "Zpět", createEdgeError: "Nelze připojit hranu ke shluku.", del: "Smazat výběr", deleteClusterError: "Nelze mazat shluky.", edgeDescription: "Přetažením z jednoho vrcholu do druhého můžete spojit tyto vrcholy novou hranou.", edit: "Upravit", editClusterError: "Nelze upravovat shluky.", editEdge: "Upravit hranu", editEdgeDescription: "Přetažením kontrolního vrcholu hrany ji můžete připojit k jinému vrcholu.", editNode: "Upravit vrchol" } });
            var DA = function(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") };

            function NA(t, e) {
                for (var n = 0; n < e.length; n++) {
                    var i = e[n];
                    i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), di(t, i.key, i)
                }
            }
            var RA = function(t, e, n) { return e && NA(t.prototype, e), n && NA(t, n), t },
                PA = function() {
                    function t() { DA(this, t), this.NUM_ITERATIONS = 4, this.image = new Image, this.canvas = document.createElement("canvas") }
                    return RA(t, [{
                        key: "init",
                        value: function() {
                            if (!this.initialized()) {
                                this.src = this.image.src;
                                var t = this.image.width,
                                    e = this.image.height;
                                this.width = t, this.height = e;
                                var n = Math.floor(e / 2),
                                    i = Math.floor(e / 4),
                                    r = Math.floor(e / 8),
                                    o = Math.floor(e / 16),
                                    g = Math.floor(t / 2),
                                    s = Math.floor(t / 4),
                                    A = Math.floor(t / 8),
                                    a = Math.floor(t / 16);
                                this.canvas.width = 3 * s, this.canvas.height = n, this.coordinates = [
                                    [0, 0, g, n],
                                    [g, 0, s, i],
                                    [g, i, A, r],
                                    [5 * A, i, a, o]
                                ], this._fillMipMap()
                            }
                        }
                    }, { key: "initialized", value: function() { return void 0 !== this.coordinates } }, {
                        key: "_fillMipMap",
                        value: function() {
                            var t = this.canvas.getContext("2d"),
                                e = this.coordinates[0];
                            t.drawImage(this.image, e[0], e[1], e[2], e[3]);
                            for (var n = 1; n < this.NUM_ITERATIONS; n++) {
                                var i = this.coordinates[n - 1],
                                    r = this.coordinates[n];
                                t.drawImage(this.canvas, i[0], i[1], i[2], i[3], r[0], r[1], r[2], r[3])
                            }
                        }
                    }, {
                        key: "drawImageAtPosition",
                        value: function(t, e, n, i, r, o) {
                            if (this.initialized())
                                if (e > 2) {
                                    e *= .5;
                                    for (var g = 0; e > 2 && g < this.NUM_ITERATIONS;) e *= .5, g += 1;
                                    g >= this.NUM_ITERATIONS && (g = this.NUM_ITERATIONS - 1);
                                    var s = this.coordinates[g];
                                    t.drawImage(this.canvas, s[0], s[1], s[2], s[3], n, i, r, o)
                                } else t.drawImage(this.image, n, i, r, o)
                        }
                    }]), t
                }(),
                MA = function() {
                    function t(e) { DA(this, t), this.images = {}, this.imageBroken = {}, this.callback = e }
                    return RA(t, [{ key: "_tryloadBrokenUrl", value: function(t, e, n) { void 0 !== t && void 0 !== n && (void 0 !== e ? (n.image.onerror = function() { console.error("Could not load brokenImage:", e) }, n.image.src = e) : console.warn("No broken url image defined")) } }, { key: "_redrawWithImage", value: function(t) { this.callback && this.callback(t) } }, {
                        key: "load",
                        value: function(t, e) {
                            var n = this,
                                i = this.images[t];
                            if (i) return i;
                            var r = new PA;
                            return this.images[t] = r, r.image.onload = function() { n._fixImageCoordinates(r.image), r.init(), n._redrawWithImage(r) }, r.image.onerror = function() { console.error("Could not load image:", t), n._tryloadBrokenUrl(t, e, r) }, r.image.src = t, r
                        }
                    }, { key: "_fixImageCoordinates", value: function(t) { 0 === t.width && (document.body.appendChild(t), t.width = t.offsetWidth, t.height = t.offsetHeight, document.body.removeChild(t)) } }]), t
                }(),
                jA = function() {
                    function t() { DA(this, t), this.clear(), this.defaultIndex = 0, this.groupsArray = [], this.groupIndex = 0, this.defaultGroups = [{ border: "#2B7CE9", background: "#97C2FC", highlight: { border: "#2B7CE9", background: "#D2E5FF" }, hover: { border: "#2B7CE9", background: "#D2E5FF" } }, { border: "#FFA500", background: "#FFFF00", highlight: { border: "#FFA500", background: "#FFFFA3" }, hover: { border: "#FFA500", background: "#FFFFA3" } }, { border: "#FA0A10", background: "#FB7E81", highlight: { border: "#FA0A10", background: "#FFAFB1" }, hover: { border: "#FA0A10", background: "#FFAFB1" } }, { border: "#41A906", background: "#7BE141", highlight: { border: "#41A906", background: "#A1EC76" }, hover: { border: "#41A906", background: "#A1EC76" } }, { border: "#E129F0", background: "#EB7DF4", highlight: { border: "#E129F0", background: "#F0B3F5" }, hover: { border: "#E129F0", background: "#F0B3F5" } }, { border: "#7C29F0", background: "#AD85E4", highlight: { border: "#7C29F0", background: "#D3BDF0" }, hover: { border: "#7C29F0", background: "#D3BDF0" } }, { border: "#C37F00", background: "#FFA807", highlight: { border: "#C37F00", background: "#FFCA66" }, hover: { border: "#C37F00", background: "#FFCA66" } }, { border: "#4220FB", background: "#6E6EFD", highlight: { border: "#4220FB", background: "#9B9BFD" }, hover: { border: "#4220FB", background: "#9B9BFD" } }, { border: "#FD5A77", background: "#FFC0CB", highlight: { border: "#FD5A77", background: "#FFD1D9" }, hover: { border: "#FD5A77", background: "#FFD1D9" } }, { border: "#4AD63A", background: "#C2FABC", highlight: { border: "#4AD63A", background: "#E6FFE3" }, hover: { border: "#4AD63A", background: "#E6FFE3" } }, { border: "#990000", background: "#EE0000", highlight: { border: "#BB0000", background: "#FF3333" }, hover: { border: "#BB0000", background: "#FF3333" } }, { border: "#FF6000", background: "#FF6000", highlight: { border: "#FF6000", background: "#FF6000" }, hover: { border: "#FF6000", background: "#FF6000" } }, { border: "#97C2FC", background: "#2B7CE9", highlight: { border: "#D2E5FF", background: "#2B7CE9" }, hover: { border: "#D2E5FF", background: "#2B7CE9" } }, { border: "#399605", background: "#255C03", highlight: { border: "#399605", background: "#255C03" }, hover: { border: "#399605", background: "#255C03" } }, { border: "#B70054", background: "#FF007E", highlight: { border: "#B70054", background: "#FF007E" }, hover: { border: "#B70054", background: "#FF007E" } }, { border: "#AD85E4", background: "#7C29F0", highlight: { border: "#D3BDF0", background: "#7C29F0" }, hover: { border: "#D3BDF0", background: "#7C29F0" } }, { border: "#4557FA", background: "#000EA1", highlight: { border: "#6E6EFD", background: "#000EA1" }, hover: { border: "#6E6EFD", background: "#000EA1" } }, { border: "#FFC0CB", background: "#FD5A77", highlight: { border: "#FFD1D9", background: "#FD5A77" }, hover: { border: "#FFD1D9", background: "#FD5A77" } }, { border: "#C2FABC", background: "#74D66A", highlight: { border: "#E6FFE3", background: "#74D66A" }, hover: { border: "#E6FFE3", background: "#74D66A" } }, { border: "#EE0000", background: "#990000", highlight: { border: "#FF3333", background: "#BB0000" }, hover: { border: "#FF3333", background: "#BB0000" } }], this.options = {}, this.defaultOptions = { useDefaultGroups: !0 }, bt(this.options, this.defaultOptions) }
                    return RA(t, [{
                        key: "setOptions",
                        value: function(t) {
                            var e = ["useDefaultGroups"];
                            if (void 0 !== t)
                                for (var n in t)
                                    if (Object.prototype.hasOwnProperty.call(t, n) && -1 === pr(e).call(e, n)) {
                                        var i = t[n];
                                        this.add(n, i)
                                    }
                        }
                    }, { key: "clear", value: function() { this.groups = {}, this.groupsArray = [] } }, {
                        key: "get",
                        value: function(t) {
                            var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1],
                                n = this.groups[t];
                            if (void 0 === n && e)
                                if (!1 === this.options.useDefaultGroups && this.groupsArray.length > 0) {
                                    var i = this.groupIndex % this.groupsArray.length;
                                    this.groupIndex++, (n = {}).color = this.groups[this.groupsArray[i]], this.groups[t] = n
                                } else {
                                    var r = this.defaultIndex % this.defaultGroups.length;
                                    this.defaultIndex++, (n = {}).color = this.defaultGroups[r], this.groups[t] = n
                                }
                            return n
                        }
                    }, { key: "add", value: function(t, e) { return this.groups[t] = e, this.groupsArray.push(t), e } }]), t
                }(),
                FA = [].slice,
                zA = /MSIE .\./.test(Qi),
                LA = function(t) {
                    return function(e, n) {
                        var i = arguments.length > 2,
                            r = i ? FA.call(arguments, 2) : void 0;
                        return t(i ? function() {
                            ("function" == typeof e ? e : Function(e)).apply(this, r)
                        } : e, n)
                    }
                };
            W({ global: !0, bind: !0, forced: zA }, { setTimeout: LA(s.setTimeout), setInterval: LA(s.setInterval) });
            var BA = F.setTimeout,
                ZA = We.some,
                VA = xi("some"),
                YA = Si("some");
            W({ target: "Array", proto: !0, forced: !VA || !YA }, { some: function(t) { return ZA(this, t, arguments.length > 1 ? arguments[1] : void 0) } });
            var GA = q("Array").some,
                UA = Array.prototype,
                WA = function(t) { var e = t.some; return t === UA || t instanceof Array && e === UA.some ? GA : e },
                HA = s.isFinite,
                KA = Number.isFinite || function(t) { return "number" == typeof t && HA(t) };
            W({ target: "Number", stat: !0 }, { isFinite: KA });
            var QA = F.Number.isFinite;
            W({ target: "Number", stat: !0 }, { isNaN: function(t) { return t != t } });
            var XA = F.Number.isNaN;
            var qA = function(t) { if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return t },
                JA = Pt("Reflect", "construct"),
                $A = A((function() {
                    function t() {}
                    return !(JA((function() {}), [], t) instanceof t)
                })),
                ta = !A((function() { JA((function() {})) })),
                ea = $A || ta;
            W({ target: "Reflect", stat: !0, forced: ea, sham: ea }, {
                construct: function(t, e) {
                    z(t), B(e);
                    var n = arguments.length < 3 ? t : z(arguments[2]);
                    if (ta && !$A) return JA(t, e, n);
                    if (t == n) {
                        switch (e.length) {
                            case 0:
                                return new t;
                            case 1:
                                return new t(e[0]);
                            case 2:
                                return new t(e[0], e[1]);
                            case 3:
                                return new t(e[0], e[1], e[2]);
                            case 4:
                                return new t(e[0], e[1], e[2], e[3])
                        }
                        var i = [null];
                        return i.push.apply(i, e), new(X.apply(t, i))
                    }
                    var r = n.prototype,
                        o = ge(y(r) ? r : Object.prototype),
                        g = Function.apply.call(t, o, e);
                    return y(g) ? g : o
                }
            });
            var na = F.Reflect.construct,
                ia = q("Array").entries,
                ra = Array.prototype,
                oa = { DOMTokenList: !0, NodeList: !0 },
                ga = function(t) { var e = t.entries; return t === ra || t instanceof Array && e === ra.entries || oa.hasOwnProperty(we(t)) ? ia : e },
                sa = Pt("JSON", "stringify"),
                Aa = /[\uD800-\uDFFF]/g,
                aa = /^[\uD800-\uDBFF]$/,
                Ca = /^[\uDC00-\uDFFF]$/,
                Ia = function(t, e, n) {
                    var i = n.charAt(e - 1),
                        r = n.charAt(e + 1);
                    return aa.test(t) && !Ca.test(r) || Ca.test(t) && !aa.test(i) ? "\\u" + t.charCodeAt(0).toString(16) : t
                },
                ua = A((function() { return '"\\udf06\\ud834"' !== sa("\udf06\ud834") || '"\\udead"' !== sa("\udead") }));
            sa && W({ target: "JSON", stat: !0, forced: ua }, { stringify: function(t, e, n) { var i = sa.apply(null, arguments); return "string" == typeof i ? i.replace(Aa, Ia) : i } }), F.JSON || (F.JSON = { stringify: JSON.stringify });
            var ca = function(t, e, n) { return F.JSON.stringify.apply(null, arguments) },
                la = q("Array").values,
                ha = Array.prototype,
                da = { DOMTokenList: !0, NodeList: !0 },
                fa = function(t) { var e = t.values; return t === ha || t instanceof Array && e === ha.values || da.hasOwnProperty(we(t)) ? la : e },
                pa = q("Array").keys,
                va = Array.prototype,
                ya = { DOMTokenList: !0, NodeList: !0 },
                ba = function(t) { var e = t.keys; return t === va || t instanceof Array && e === va.keys || ya.hasOwnProperty(we(t)) ? pa : e },
                ma = li;
            W({ target: "Object", stat: !0 }, { setPrototypeOf: jn });
            var wa = F.Object.setPrototypeOf,
                _a = r((function(t) {
                    function e(n, i) { return t.exports = e = wa || function(t, e) { return t.__proto__ = e, t }, e(n, i) }
                    t.exports = e
                }));
            var ka = function(t, e) {
                if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
                t.prototype = ma(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), e && _a(t, e)
            };
            var xa = function(t, e) { return !e || "object" !== io(e) && "function" != typeof e ? qA(t) : e },
                Oa = ar,
                Ea = r((function(t) {
                    function e(n) { return t.exports = e = wa ? Oa : function(t) { return t.__proto__ || Oa(t) }, e(n) }
                    t.exports = e
                })),
                Ta = [],
                Sa = Ta.sort,
                Da = A((function() { Ta.sort(void 0) })),
                Na = A((function() { Ta.sort(null) })),
                Ra = xi("sort");
            W({ target: "Array", proto: !0, forced: Da || !Na || !Ra }, { sort: function(t) { return void 0 === t ? Sa.call(ft(this)) : Sa.call(ft(this), z(t)) } });
            var Pa = q("Array").sort,
                Ma = Array.prototype,
                ja = function(t) { var e = t.sort; return t === Ma || t instanceof Array && e === Ma.sort ? Pa : e },
                Fa = !A((function() { return Object.isExtensible(Object.preventExtensions({})) })),
                za = r((function(t) {
                    var e = V.f,
                        n = $t("meta"),
                        i = 0,
                        r = Object.isExtensible || function() { return !0 },
                        o = function(t) { e(t, n, { value: { objectID: "O" + ++i, weakData: {} } }) },
                        g = t.exports = {
                            REQUIRED: !1,
                            fastKey: function(t, e) {
                                if (!y(t)) return "symbol" == typeof t ? t : ("string" == typeof t ? "S" : "P") + t;
                                if (!w(t, n)) {
                                    if (!r(t)) return "F";
                                    if (!e) return "E";
                                    o(t)
                                }
                                return t[n].objectID
                            },
                            getWeakData: function(t, e) {
                                if (!w(t, n)) {
                                    if (!r(t)) return !0;
                                    if (!e) return !1;
                                    o(t)
                                }
                                return t[n].weakData
                            },
                            onFreeze: function(t) { return Fa && g.REQUIRED && r(t) && !w(t, n) && o(t), t }
                        };
                    It[n] = !0
                })),
                La = r((function(t) {
                    var e = function(t, e) { this.stopped = t, this.result = e };
                    (t.exports = function(t, n, i, r, o) {
                        var g, s, A, a, C, I, u, c = L(n, i, r ? 2 : 1);
                        if (o) g = t;
                        else {
                            if ("function" != typeof(s = $n(t))) throw TypeError("Target is not iterable");
                            if (oi(s)) {
                                for (A = 0, a = ot(t.length); a > A; A++)
                                    if ((C = r ? c(B(u = t[A])[0], u[1]) : c(t[A])) && C instanceof e) return C;
                                return new e(!1)
                            }
                            g = s.call(t)
                        }
                        for (I = g.next; !(u = I.call(g)).done;)
                            if ("object" == typeof(C = ni(g, c, u.value, r)) && C && C instanceof e) return C;
                        return new e(!1)
                    }).stop = function(t) { return new e(!0, t) }
                })),
                Ba = function(t, e, n) { if (!(t instanceof e)) throw TypeError("Incorrect " + (n ? n + " " : "") + "invocation"); return t },
                Za = V.f,
                Va = We.forEach,
                Ya = Ze.set,
                Ga = Ze.getterFor,
                Ua = function(t, e, n) {
                    var i, r = -1 !== t.indexOf("Map"),
                        o = -1 !== t.indexOf("Weak"),
                        g = r ? "set" : "add",
                        C = s[t],
                        I = C && C.prototype,
                        u = {};
                    if (a && "function" == typeof C && (o || I.forEach && !A((function() {
                            (new C).entries().next()
                        })))) {
                        i = e((function(e, n) { Ya(Ba(e, i, t), { type: t, collection: new C }), null != n && La(n, e[g], e, r) }));
                        var c = Ga(t);
                        Va(["add", "clear", "delete", "forEach", "get", "has", "set", "keys", "values", "entries"], (function(t) { var e = "add" == t || "set" == t;!(t in I) || o && "clear" == t || Y(i.prototype, t, (function(n, i) { var r = c(this).collection; if (!e && o && !y(n)) return "get" == t && void 0; var g = r[t](0 === n ? 0 : n, i); return e ? this : g })) })), o || Za(i.prototype, "size", { configurable: !0, get: function() { return c(this).collection.size } })
                    } else i = n.getConstructor(e, t, r, g), za.REQUIRED = !0;
                    return Oe(i, t, !1, !0), u[t] = i, W({ global: !0, forced: !0 }, u), o || n.setStrong(i, t, r), i
                },
                Wa = function(t, e, n) { for (var i in e) n && n.unsafe && t[i] ? t[i] = e[i] : Ie(t, i, e[i], n); return t },
                Ha = he("species"),
                Ka = V.f,
                Qa = za.fastKey,
                Xa = Ze.set,
                qa = Ze.getterFor,
                Ja = {
                    getConstructor: function(t, e, n, i) {
                        var r = t((function(t, o) { Ba(t, r, e), Xa(t, { type: e, index: ge(null), first: void 0, last: void 0, size: 0 }), a || (t.size = 0), null != o && La(o, t[i], t, n) })),
                            o = qa(e),
                            g = function(t, e, n) {
                                var i, r, g = o(t),
                                    A = s(t, e);
                                return A ? A.value = n : (g.last = A = { index: r = Qa(e, !0), key: e, value: n, previous: i = g.last, next: void 0, removed: !1 }, g.first || (g.first = A), i && (i.next = A), a ? g.size++ : t.size++, "F" !== r && (g.index[r] = A)), t
                            },
                            s = function(t, e) {
                                var n, i = o(t),
                                    r = Qa(e);
                                if ("F" !== r) return i.index[r];
                                for (n = i.first; n; n = n.next)
                                    if (n.key == e) return n
                            };
                        return Wa(r.prototype, {
                            clear: function() {
                                for (var t = o(this), e = t.index, n = t.first; n;) n.removed = !0, n.previous && (n.previous = n.previous.next = void 0), delete e[n.index], n = n.next;
                                t.first = t.last = void 0, a ? t.size = 0 : this.size = 0
                            },
                            delete: function(t) {
                                var e = o(this),
                                    n = s(this, t);
                                if (n) {
                                    var i = n.next,
                                        r = n.previous;
                                    delete e.index[n.index], n.removed = !0, r && (r.next = i), i && (i.previous = r), e.first == n && (e.first = i), e.last == n && (e.last = r), a ? e.size-- : this.size--
                                }
                                return !!n
                            },
                            forEach: function(t) {
                                for (var e, n = o(this), i = L(t, arguments.length > 1 ? arguments[1] : void 0, 3); e = e ? e.next : n.first;)
                                    for (i(e.value, e.key, this); e && e.removed;) e = e.previous
                            },
                            has: function(t) { return !!s(this, t) }
                        }), Wa(r.prototype, n ? { get: function(t) { var e = s(this, t); return e && e.value }, set: function(t, e) { return g(this, 0 === t ? 0 : t, e) } } : { add: function(t) { return g(this, t = 0 === t ? 0 : t, t) } }), a && Ka(r.prototype, "size", { get: function() { return o(this).size } }), r
                    },
                    setStrong: function(t, e, n) {
                        var i = e + " Iterator",
                            r = qa(e),
                            o = qa(i);
                        Zn(t, e, (function(t, e) { Xa(this, { type: i, target: t, state: r(t), kind: e, last: void 0 }) }), (function() { for (var t = o(this), e = t.kind, n = t.last; n && n.removed;) n = n.previous; return t.target && (t.last = n = n ? n.next : t.state.first) ? "keys" == e ? { value: n.key, done: !1 } : "values" == e ? { value: n.value, done: !1 } : { value: [n.key, n.value], done: !1 } : (t.target = void 0, { value: void 0, done: !0 }) }), n ? "entries" : "values", !n, !0),
                            function(t) {
                                var e = Pt(t),
                                    n = V.f;
                                a && e && !e[Ha] && n(e, Ha, { configurable: !0, get: function() { return this } })
                            }(e)
                    }
                },
                $a = (Ua("Set", (function(t) { return function() { return t(this, arguments.length ? arguments[0] : void 0) } }), Ja), F.Set),
                tC = (Ua("Map", (function(t) { return function() { return t(this, arguments.length ? arguments[0] : void 0) } }), Ja), F.Map),
                eC = r((function(t) {
                    var e = function(t) {
                        var e = Object.prototype,
                            n = e.hasOwnProperty,
                            i = "function" == typeof Symbol ? Symbol : {},
                            r = i.iterator || "@@iterator",
                            o = i.asyncIterator || "@@asyncIterator",
                            g = i.toStringTag || "@@toStringTag";

                        function s(t, e, n, i) {
                            var r = e && e.prototype instanceof C ? e : C,
                                o = Object.create(r.prototype),
                                g = new m(i || []);
                            return o._invoke = function(t, e, n) {
                                var i = "suspendedStart";
                                return function(r, o) {
                                    if ("executing" === i) throw new Error("Generator is already running");
                                    if ("completed" === i) { if ("throw" === r) throw o; return _() }
                                    for (n.method = r, n.arg = o;;) {
                                        var g = n.delegate;
                                        if (g) { var s = v(g, n); if (s) { if (s === a) continue; return s } }
                                        if ("next" === n.method) n.sent = n._sent = n.arg;
                                        else if ("throw" === n.method) {
                                            if ("suspendedStart" === i) throw i = "completed", n.arg;
                                            n.dispatchException(n.arg)
                                        } else "return" === n.method && n.abrupt("return", n.arg);
                                        i = "executing";
                                        var C = A(t, e, n);
                                        if ("normal" === C.type) { if (i = n.done ? "completed" : "suspendedYield", C.arg === a) continue; return { value: C.arg, done: n.done } }
                                        "throw" === C.type && (i = "completed", n.method = "throw", n.arg = C.arg)
                                    }
                                }
                            }(t, n, g), o
                        }

                        function A(t, e, n) { try { return { type: "normal", arg: t.call(e, n) } } catch (t) { return { type: "throw", arg: t } } }
                        t.wrap = s;
                        var a = {};

                        function C() {}

                        function I() {}

                        function u() {}
                        var c = {};
                        c[r] = function() { return this };
                        var l = Object.getPrototypeOf,
                            h = l && l(l(w([])));
                        h && h !== e && n.call(h, r) && (c = h);
                        var d = u.prototype = C.prototype = Object.create(c);

                        function f(t) {
                            ["next", "throw", "return"].forEach((function(e) { t[e] = function(t) { return this._invoke(e, t) } }))
                        }

                        function p(t, e) {
                            var i;
                            this._invoke = function(r, o) {
                                function g() {
                                    return new e((function(i, g) {
                                        ! function i(r, o, g, s) {
                                            var a = A(t[r], t, o);
                                            if ("throw" !== a.type) {
                                                var C = a.arg,
                                                    I = C.value;
                                                return I && "object" == typeof I && n.call(I, "__await") ? e.resolve(I.__await).then((function(t) { i("next", t, g, s) }), (function(t) { i("throw", t, g, s) })) : e.resolve(I).then((function(t) { C.value = t, g(C) }), (function(t) { return i("throw", t, g, s) }))
                                            }
                                            s(a.arg)
                                        }(r, o, i, g)
                                    }))
                                }
                                return i = i ? i.then(g, g) : g()
                            }
                        }

                        function v(t, e) {
                            var n = t.iterator[e.method];
                            if (void 0 === n) {
                                if (e.delegate = null, "throw" === e.method) {
                                    if (t.iterator.return && (e.method = "return", e.arg = void 0, v(t, e), "throw" === e.method)) return a;
                                    e.method = "throw", e.arg = new TypeError("The iterator does not provide a 'throw' method")
                                }
                                return a
                            }
                            var i = A(n, t.iterator, e.arg);
                            if ("throw" === i.type) return e.method = "throw", e.arg = i.arg, e.delegate = null, a;
                            var r = i.arg;
                            return r ? r.done ? (e[t.resultName] = r.value, e.next = t.nextLoc, "return" !== e.method && (e.method = "next", e.arg = void 0), e.delegate = null, a) : r : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, a)
                        }

                        function y(t) {
                            var e = { tryLoc: t[0] };
                            1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e)
                        }

                        function b(t) {
                            var e = t.completion || {};
                            e.type = "normal", delete e.arg, t.completion = e
                        }

                        function m(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(y, this), this.reset(!0) }

                        function w(t) {
                            if (t) {
                                var e = t[r];
                                if (e) return e.call(t);
                                if ("function" == typeof t.next) return t;
                                if (!isNaN(t.length)) {
                                    var i = -1,
                                        o = function e() {
                                            for (; ++i < t.length;)
                                                if (n.call(t, i)) return e.value = t[i], e.done = !1, e;
                                            return e.value = void 0, e.done = !0, e
                                        };
                                    return o.next = o
                                }
                            }
                            return { next: _ }
                        }

                        function _() { return { value: void 0, done: !0 } }
                        return I.prototype = d.constructor = u, u.constructor = I, u[g] = I.displayName = "GeneratorFunction", t.isGeneratorFunction = function(t) { var e = "function" == typeof t && t.constructor; return !!e && (e === I || "GeneratorFunction" === (e.displayName || e.name)) }, t.mark = function(t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, u) : (t.__proto__ = u, g in t || (t[g] = "GeneratorFunction")), t.prototype = Object.create(d), t }, t.awrap = function(t) { return { __await: t } }, f(p.prototype), p.prototype[o] = function() { return this }, t.AsyncIterator = p, t.async = function(e, n, i, r, o) { void 0 === o && (o = Promise); var g = new p(s(e, n, i, r), o); return t.isGeneratorFunction(n) ? g : g.next().then((function(t) { return t.done ? t.value : g.next() })) }, f(d), d[g] = "Generator", d[r] = function() { return this }, d.toString = function() { return "[object Generator]" }, t.keys = function(t) {
                            var e = [];
                            for (var n in t) e.push(n);
                            return e.reverse(),
                                function n() { for (; e.length;) { var i = e.pop(); if (i in t) return n.value = i, n.done = !1, n } return n.done = !0, n }
                        }, t.values = w, m.prototype = {
                            constructor: m,
                            reset: function(t) {
                                if (this.prev = 0, this.next = 0, this.sent = this._sent = void 0, this.done = !1, this.delegate = null, this.method = "next", this.arg = void 0, this.tryEntries.forEach(b), !t)
                                    for (var e in this) "t" === e.charAt(0) && n.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = void 0)
                            },
                            stop: function() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval },
                            dispatchException: function(t) {
                                if (this.done) throw t;
                                var e = this;

                                function i(n, i) { return g.type = "throw", g.arg = t, e.next = n, i && (e.method = "next", e.arg = void 0), !!i }
                                for (var r = this.tryEntries.length - 1; r >= 0; --r) {
                                    var o = this.tryEntries[r],
                                        g = o.completion;
                                    if ("root" === o.tryLoc) return i("end");
                                    if (o.tryLoc <= this.prev) {
                                        var s = n.call(o, "catchLoc"),
                                            A = n.call(o, "finallyLoc");
                                        if (s && A) { if (this.prev < o.catchLoc) return i(o.catchLoc, !0); if (this.prev < o.finallyLoc) return i(o.finallyLoc) } else if (s) { if (this.prev < o.catchLoc) return i(o.catchLoc, !0) } else { if (!A) throw new Error("try statement without catch or finally"); if (this.prev < o.finallyLoc) return i(o.finallyLoc) }
                                    }
                                }
                            },
                            abrupt: function(t, e) {
                                for (var i = this.tryEntries.length - 1; i >= 0; --i) { var r = this.tryEntries[i]; if (r.tryLoc <= this.prev && n.call(r, "finallyLoc") && this.prev < r.finallyLoc) { var o = r; break } }
                                o && ("break" === t || "continue" === t) && o.tryLoc <= e && e <= o.finallyLoc && (o = null);
                                var g = o ? o.completion : {};
                                return g.type = t, g.arg = e, o ? (this.method = "next", this.next = o.finallyLoc, a) : this.complete(g)
                            },
                            complete: function(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), a },
                            finish: function(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var n = this.tryEntries[e]; if (n.finallyLoc === t) return this.complete(n.completion, n.afterLoc), b(n), a } },
                            catch: function(t) {
                                for (var e = this.tryEntries.length - 1; e >= 0; --e) {
                                    var n = this.tryEntries[e];
                                    if (n.tryLoc === t) {
                                        var i = n.completion;
                                        if ("throw" === i.type) {
                                            var r = i.arg;
                                            b(n)
                                        }
                                        return r
                                    }
                                }
                                throw new Error("illegal catch attempt")
                            },
                            delegateYield: function(t, e, n) { return this.delegate = { iterator: w(t), resultName: e, nextLoc: n }, "next" === this.method && (this.arg = void 0), a }
                        }, t
                    }(t.exports);
                    try { regeneratorRuntime = e } catch (t) { Function("r", "regeneratorRuntime = r")(e) }
                })),
                nC = eo,
                iC = function(t, e, n, i, r, o, g, s) {
                    for (var A, a = r, C = 0, I = !!g && L(g, s, 3); C < i;) {
                        if (C in n) {
                            if (A = I ? I(n[C], C, e) : n[C], o > 0 && Ht(A)) a = iC(t, e, A, ot(A.length), a, o - 1) - 1;
                            else {
                                if (a >= 9007199254740991) throw TypeError("Exceed the acceptable array length");
                                t[a] = A
                            }
                            a++
                        }
                        C++
                    }
                    return a
                },
                rC = iC;
            W({ target: "Array", proto: !0 }, {
                flatMap: function(t) {
                    var e, n = ft(this),
                        i = ot(n.length);
                    return z(t), (e = Ye(n, 0)).length = rC(e, n, n, i, 0, 1, t, arguments.length > 1 ? arguments[1] : void 0), e
                }
            });
            q("Array").flatMap, Array.prototype;
            var oC = function(t) {
                    return function(e, n, i, r) {
                        z(n);
                        var o = ft(e),
                            g = f(o),
                            s = ot(o.length),
                            A = t ? s - 1 : 0,
                            a = t ? -1 : 1;
                        if (i < 2)
                            for (;;) { if (A in g) { r = g[A], A += a; break } if (A += a, t ? A < 0 : s <= A) throw TypeError("Reduce of empty array with no initial value") }
                        for (; t ? A >= 0 : s > A; A += a) A in g && (r = n(r, g[A], A, o));
                        return r
                    }
                },
                gC = { left: oC(!1), right: oC(!0) }.left,
                sC = xi("reduce"),
                AC = Si("reduce", { 1: 0 });
            W({ target: "Array", proto: !0, forced: !sC || !AC }, { reduce: function(t) { return gC(this, t, arguments.length, arguments.length > 1 ? arguments[1] : void 0) } });
            var aC = q("Array").reduce,
                CC = Array.prototype,
                IC = function(t) { var e = t.reduce; return t === CC || t instanceof Array && e === CC.reduce ? aC : e },
                uC = "undefined" != typeof crypto && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || "undefined" != typeof msCrypto && "function" == typeof msCrypto.getRandomValues && msCrypto.getRandomValues.bind(msCrypto),
                cC = new Uint8Array(16);

            function lC() { if (!uC) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); return uC(cC) }
            for (var hC = [], dC = 0; dC < 256; ++dC) hC.push((dC + 256).toString(16).substr(1));

            function fC(t, e, n) { var i = (t = t || {}).random || (t.rng || lC)(); if (i[6] = 15 & i[6] | 64, i[8] = 63 & i[8] | 128, e) { n = n || 0; for (var r = 0; r < 16; ++r) e[n + r] = i[r]; return e } return function(t, e) { var n = e || 0; return (hC[t[n + 0]] + hC[t[n + 1]] + hC[t[n + 2]] + hC[t[n + 3]] + "-" + hC[t[n + 4]] + hC[t[n + 5]] + "-" + hC[t[n + 6]] + hC[t[n + 7]] + "-" + hC[t[n + 8]] + hC[t[n + 9]] + "-" + hC[t[n + 10]] + hC[t[n + 11]] + hC[t[n + 12]] + hC[t[n + 13]] + hC[t[n + 14]] + hC[t[n + 15]]).toLowerCase() }(i) }
            var pC = r((function(t, e) {
                t.exports = function() {
                    var e, n;

                    function i() { return e.apply(null, arguments) }

                    function r(t) { return t instanceof Array || "[object Array]" === Object.prototype.toString.call(t) }

                    function g(t) { return null != t && "[object Object]" === Object.prototype.toString.call(t) }

                    function s(t, e) { return Object.prototype.hasOwnProperty.call(t, e) }

                    function A(t) {
                        if (Object.getOwnPropertyNames) return 0 === Object.getOwnPropertyNames(t).length;
                        var e;
                        for (e in t)
                            if (s(t, e)) return !1;
                        return !0
                    }

                    function a(t) { return void 0 === t }

                    function C(t) { return "number" == typeof t || "[object Number]" === Object.prototype.toString.call(t) }

                    function I(t) { return t instanceof Date || "[object Date]" === Object.prototype.toString.call(t) }

                    function u(t, e) { var n, i = []; for (n = 0; n < t.length; ++n) i.push(e(t[n], n)); return i }

                    function c(t, e) { for (var n in e) s(e, n) && (t[n] = e[n]); return s(e, "toString") && (t.toString = e.toString), s(e, "valueOf") && (t.valueOf = e.valueOf), t }

                    function l(t, e, n, i) { return ke(t, e, n, i, !0).utc() }

                    function h(t) { return null == t._pf && (t._pf = { empty: !1, unusedTokens: [], unusedInput: [], overflow: -2, charsLeftOver: 0, nullInput: !1, invalidEra: null, invalidMonth: null, invalidFormat: !1, userInvalidated: !1, iso: !1, parsedDateParts: [], era: null, meridiem: null, rfc2822: !1, weekdayMismatch: !1 }), t._pf }

                    function d(t) {
                        if (null == t._isValid) {
                            var e = h(t),
                                i = n.call(e.parsedDateParts, (function(t) { return null != t })),
                                r = !isNaN(t._d.getTime()) && e.overflow < 0 && !e.empty && !e.invalidEra && !e.invalidMonth && !e.invalidWeekday && !e.weekdayMismatch && !e.nullInput && !e.invalidFormat && !e.userInvalidated && (!e.meridiem || e.meridiem && i);
                            if (t._strict && (r = r && 0 === e.charsLeftOver && 0 === e.unusedTokens.length && void 0 === e.bigHour), null != Object.isFrozen && Object.isFrozen(t)) return r;
                            t._isValid = r
                        }
                        return t._isValid
                    }

                    function f(t) { var e = l(NaN); return null != t ? c(h(e), t) : h(e).userInvalidated = !0, e }
                    n = Array.prototype.some ? Array.prototype.some : function(t) {
                        var e, n = Object(this),
                            i = n.length >>> 0;
                        for (e = 0; e < i; e++)
                            if (e in n && t.call(this, n[e], e, n)) return !0;
                        return !1
                    };
                    var p = i.momentProperties = [],
                        v = !1;

                    function y(t, e) {
                        var n, i, r;
                        if (a(e._isAMomentObject) || (t._isAMomentObject = e._isAMomentObject), a(e._i) || (t._i = e._i), a(e._f) || (t._f = e._f), a(e._l) || (t._l = e._l), a(e._strict) || (t._strict = e._strict), a(e._tzm) || (t._tzm = e._tzm), a(e._isUTC) || (t._isUTC = e._isUTC), a(e._offset) || (t._offset = e._offset), a(e._pf) || (t._pf = h(e)), a(e._locale) || (t._locale = e._locale), p.length > 0)
                            for (n = 0; n < p.length; n++) a(r = e[i = p[n]]) || (t[i] = r);
                        return t
                    }

                    function b(t) { y(this, t), this._d = new Date(null != t._d ? t._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === v && (v = !0, i.updateOffset(this), v = !1) }

                    function m(t) { return t instanceof b || null != t && null != t._isAMomentObject }

                    function w(t) {!1 === i.suppressDeprecationWarnings && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + t) }

                    function _(t, e) {
                        var n = !0;
                        return c((function() {
                            if (null != i.deprecationHandler && i.deprecationHandler(null, t), n) {
                                var r, o, g, A = [];
                                for (o = 0; o < arguments.length; o++) {
                                    if (r = "", "object" == typeof arguments[o]) {
                                        for (g in r += "\n[" + o + "] ", arguments[0]) s(arguments[0], g) && (r += g + ": " + arguments[0][g] + ", ");
                                        r = r.slice(0, -2)
                                    } else r = arguments[o];
                                    A.push(r)
                                }
                                w(t + "\nArguments: " + Array.prototype.slice.call(A).join("") + "\n" + (new Error).stack), n = !1
                            }
                            return e.apply(this, arguments)
                        }), e)
                    }
                    var k, x = {};

                    function O(t, e) { null != i.deprecationHandler && i.deprecationHandler(t, e), x[t] || (w(e), x[t] = !0) }

                    function E(t) { return "undefined" != typeof Function && t instanceof Function || "[object Function]" === Object.prototype.toString.call(t) }

                    function T(t, e) { var n, i = c({}, t); for (n in e) s(e, n) && (g(t[n]) && g(e[n]) ? (i[n] = {}, c(i[n], t[n]), c(i[n], e[n])) : null != e[n] ? i[n] = e[n] : delete i[n]); for (n in t) s(t, n) && !s(e, n) && g(t[n]) && (i[n] = c({}, i[n])); return i }

                    function S(t) { null != t && this.set(t) }

                    function D(t, e, n) {
                        var i = "" + Math.abs(t),
                            r = e - i.length;
                        return (t >= 0 ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, r)).toString().substr(1) + i
                    }
                    i.suppressDeprecationWarnings = !1, i.deprecationHandler = null, k = Object.keys ? Object.keys : function(t) { var e, n = []; for (e in t) s(t, e) && n.push(e); return n };
                    var N = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
                        R = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
                        P = {},
                        M = {};

                    function j(t, e, n, i) { var r = i; "string" == typeof i && (r = function() { return this[i]() }), t && (M[t] = r), e && (M[e[0]] = function() { return D(r.apply(this, arguments), e[1], e[2]) }), n && (M[n] = function() { return this.localeData().ordinal(r.apply(this, arguments), t) }) }

                    function F(t, e) { return t.isValid() ? (e = z(e, t.localeData()), P[e] = P[e] || function(t) { var e, n, i, r = t.match(N); for (e = 0, n = r.length; e < n; e++) M[r[e]] ? r[e] = M[r[e]] : r[e] = (i = r[e]).match(/\[[\s\S]/) ? i.replace(/^\[|\]$/g, "") : i.replace(/\\/g, ""); return function(e) { var i, o = ""; for (i = 0; i < n; i++) o += E(r[i]) ? r[i].call(e, t) : r[i]; return o } }(e), P[e](t)) : t.localeData().invalidDate() }

                    function z(t, e) {
                        var n = 5;

                        function i(t) { return e.longDateFormat(t) || t }
                        for (R.lastIndex = 0; n >= 0 && R.test(t);) t = t.replace(R, i), R.lastIndex = 0, n -= 1;
                        return t
                    }
                    var L = {};

                    function B(t, e) {
                        var n = t.toLowerCase();
                        L[n] = L[n + "s"] = L[e] = t
                    }

                    function Z(t) { return "string" == typeof t ? L[t] || L[t.toLowerCase()] : void 0 }

                    function V(t) { var e, n, i = {}; for (n in t) s(t, n) && (e = Z(n)) && (i[e] = t[n]); return i }
                    var Y = {};

                    function G(t, e) { Y[t] = e }

                    function U(t) { return t % 4 == 0 && t % 100 != 0 || t % 400 == 0 }

                    function W(t) { return t < 0 ? Math.ceil(t) || 0 : Math.floor(t) }

                    function H(t) {
                        var e = +t,
                            n = 0;
                        return 0 !== e && isFinite(e) && (n = W(e)), n
                    }

                    function K(t, e) { return function(n) { return null != n ? (X(this, t, n), i.updateOffset(this, e), this) : Q(this, t) } }

                    function Q(t, e) { return t.isValid() ? t._d["get" + (t._isUTC ? "UTC" : "") + e]() : NaN }

                    function X(t, e, n) { t.isValid() && !isNaN(n) && ("FullYear" === e && U(t.year()) && 1 === t.month() && 29 === t.date() ? (n = H(n), t._d["set" + (t._isUTC ? "UTC" : "") + e](n, t.month(), mt(n, t.month()))) : t._d["set" + (t._isUTC ? "UTC" : "") + e](n)) }
                    var q, J = /\d/,
                        $ = /\d\d/,
                        tt = /\d{3}/,
                        et = /\d{4}/,
                        nt = /[+-]?\d{6}/,
                        it = /\d\d?/,
                        rt = /\d\d\d\d?/,
                        ot = /\d\d\d\d\d\d?/,
                        gt = /\d{1,3}/,
                        st = /\d{1,4}/,
                        At = /[+-]?\d{1,6}/,
                        at = /\d+/,
                        Ct = /[+-]?\d+/,
                        It = /Z|[+-]\d\d:?\d\d/gi,
                        ut = /Z|[+-]\d\d(?::?\d\d)?/gi,
                        ct = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;

                    function lt(t, e, n) { q[t] = E(e) ? e : function(t, i) { return t && n ? n : e } }

                    function ht(t, e) { return s(q, t) ? q[t](e._strict, e._locale) : new RegExp(dt(t.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, (function(t, e, n, i, r) { return e || n || i || r })))) }

                    function dt(t) { return t.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") }
                    q = {};
                    var ft, pt = {};

                    function vt(t, e) { var n, i = e; for ("string" == typeof t && (t = [t]), C(e) && (i = function(t, n) { n[e] = H(t) }), n = 0; n < t.length; n++) pt[t[n]] = i }

                    function yt(t, e) { vt(t, (function(t, n, i, r) { i._w = i._w || {}, e(t, i._w, i, r) })) }

                    function bt(t, e, n) { null != e && s(pt, t) && pt[t](e, n._a, n, t) }

                    function mt(t, e) { if (isNaN(t) || isNaN(e)) return NaN; var n, i = (e % (n = 12) + n) % n; return t += (e - i) / 12, 1 === i ? U(t) ? 29 : 28 : 31 - i % 7 % 2 }
                    ft = Array.prototype.indexOf ? Array.prototype.indexOf : function(t) {
                        var e;
                        for (e = 0; e < this.length; ++e)
                            if (this[e] === t) return e;
                        return -1
                    }, j("M", ["MM", 2], "Mo", (function() { return this.month() + 1 })), j("MMM", 0, 0, (function(t) { return this.localeData().monthsShort(this, t) })), j("MMMM", 0, 0, (function(t) { return this.localeData().months(this, t) })), B("month", "M"), G("month", 8), lt("M", it), lt("MM", it, $), lt("MMM", (function(t, e) { return e.monthsShortRegex(t) })), lt("MMMM", (function(t, e) { return e.monthsRegex(t) })), vt(["M", "MM"], (function(t, e) { e[1] = H(t) - 1 })), vt(["MMM", "MMMM"], (function(t, e, n, i) {
                        var r = n._locale.monthsParse(t, i, n._strict);
                        null != r ? e[1] = r : h(n).invalidMonth = t
                    }));
                    var wt = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
                        _t = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
                        kt = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
                        xt = ct,
                        Ot = ct;

                    function Et(t, e, n) {
                        var i, r, o, g = t.toLocaleLowerCase();
                        if (!this._monthsParse)
                            for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], i = 0; i < 12; ++i) o = l([2e3, i]), this._shortMonthsParse[i] = this.monthsShort(o, "").toLocaleLowerCase(), this._longMonthsParse[i] = this.months(o, "").toLocaleLowerCase();
                        return n ? "MMM" === e ? -1 !== (r = ft.call(this._shortMonthsParse, g)) ? r : null : -1 !== (r = ft.call(this._longMonthsParse, g)) ? r : null : "MMM" === e ? -1 !== (r = ft.call(this._shortMonthsParse, g)) || -1 !== (r = ft.call(this._longMonthsParse, g)) ? r : null : -1 !== (r = ft.call(this._longMonthsParse, g)) || -1 !== (r = ft.call(this._shortMonthsParse, g)) ? r : null
                    }

                    function Tt(t, e) {
                        var n;
                        if (!t.isValid()) return t;
                        if ("string" == typeof e)
                            if (/^\d+$/.test(e)) e = H(e);
                            else if (!C(e = t.localeData().monthsParse(e))) return t;
                        return n = Math.min(t.date(), mt(t.year(), e)), t._d["set" + (t._isUTC ? "UTC" : "") + "Month"](e, n), t
                    }

                    function St(t) { return null != t ? (Tt(this, t), i.updateOffset(this, !0), this) : Q(this, "Month") }

                    function Dt() {
                        function t(t, e) { return e.length - t.length }
                        var e, n, i = [],
                            r = [],
                            o = [];
                        for (e = 0; e < 12; e++) n = l([2e3, e]), i.push(this.monthsShort(n, "")), r.push(this.months(n, "")), o.push(this.months(n, "")), o.push(this.monthsShort(n, ""));
                        for (i.sort(t), r.sort(t), o.sort(t), e = 0; e < 12; e++) i[e] = dt(i[e]), r[e] = dt(r[e]);
                        for (e = 0; e < 24; e++) o[e] = dt(o[e]);
                        this._monthsRegex = new RegExp("^(" + o.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + r.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + i.join("|") + ")", "i")
                    }

                    function Nt(t) { return U(t) ? 366 : 365 }
                    j("Y", 0, 0, (function() { var t = this.year(); return t <= 9999 ? D(t, 4) : "+" + t })), j(0, ["YY", 2], 0, (function() { return this.year() % 100 })), j(0, ["YYYY", 4], 0, "year"), j(0, ["YYYYY", 5], 0, "year"), j(0, ["YYYYYY", 6, !0], 0, "year"), B("year", "y"), G("year", 1), lt("Y", Ct), lt("YY", it, $), lt("YYYY", st, et), lt("YYYYY", At, nt), lt("YYYYYY", At, nt), vt(["YYYYY", "YYYYYY"], 0), vt("YYYY", (function(t, e) { e[0] = 2 === t.length ? i.parseTwoDigitYear(t) : H(t) })), vt("YY", (function(t, e) { e[0] = i.parseTwoDigitYear(t) })), vt("Y", (function(t, e) { e[0] = parseInt(t, 10) })), i.parseTwoDigitYear = function(t) { return H(t) + (H(t) > 68 ? 1900 : 2e3) };
                    var Rt = K("FullYear", !0);

                    function Pt(t, e, n, i, r, o, g) { var s; return t < 100 && t >= 0 ? (s = new Date(t + 400, e, n, i, r, o, g), isFinite(s.getFullYear()) && s.setFullYear(t)) : s = new Date(t, e, n, i, r, o, g), s }

                    function Mt(t) { var e, n; return t < 100 && t >= 0 ? ((n = Array.prototype.slice.call(arguments))[0] = t + 400, e = new Date(Date.UTC.apply(null, n)), isFinite(e.getUTCFullYear()) && e.setUTCFullYear(t)) : e = new Date(Date.UTC.apply(null, arguments)), e }

                    function jt(t, e, n) { var i = 7 + e - n; return -(7 + Mt(t, 0, i).getUTCDay() - e) % 7 + i - 1 }

                    function Ft(t, e, n, i, r) { var o, g, s = 1 + 7 * (e - 1) + (7 + n - i) % 7 + jt(t, i, r); return s <= 0 ? g = Nt(o = t - 1) + s : s > Nt(t) ? (o = t + 1, g = s - Nt(t)) : (o = t, g = s), { year: o, dayOfYear: g } }

                    function zt(t, e, n) {
                        var i, r, o = jt(t.year(), e, n),
                            g = Math.floor((t.dayOfYear() - o - 1) / 7) + 1;
                        return g < 1 ? i = g + Lt(r = t.year() - 1, e, n) : g > Lt(t.year(), e, n) ? (i = g - Lt(t.year(), e, n), r = t.year() + 1) : (r = t.year(), i = g), { week: i, year: r }
                    }

                    function Lt(t, e, n) {
                        var i = jt(t, e, n),
                            r = jt(t + 1, e, n);
                        return (Nt(t) - i + r) / 7
                    }

                    function Bt(t, e) { return t.slice(e, 7).concat(t.slice(0, e)) }
                    j("w", ["ww", 2], "wo", "week"), j("W", ["WW", 2], "Wo", "isoWeek"), B("week", "w"), B("isoWeek", "W"), G("week", 5), G("isoWeek", 5), lt("w", it), lt("ww", it, $), lt("W", it), lt("WW", it, $), yt(["w", "ww", "W", "WW"], (function(t, e, n, i) { e[i.substr(0, 1)] = H(t) })), j("d", 0, "do", "day"), j("dd", 0, 0, (function(t) { return this.localeData().weekdaysMin(this, t) })), j("ddd", 0, 0, (function(t) { return this.localeData().weekdaysShort(this, t) })), j("dddd", 0, 0, (function(t) { return this.localeData().weekdays(this, t) })), j("e", 0, 0, "weekday"), j("E", 0, 0, "isoWeekday"), B("day", "d"), B("weekday", "e"), B("isoWeekday", "E"), G("day", 11), G("weekday", 11), G("isoWeekday", 11), lt("d", it), lt("e", it), lt("E", it), lt("dd", (function(t, e) { return e.weekdaysMinRegex(t) })), lt("ddd", (function(t, e) { return e.weekdaysShortRegex(t) })), lt("dddd", (function(t, e) { return e.weekdaysRegex(t) })), yt(["dd", "ddd", "dddd"], (function(t, e, n, i) {
                        var r = n._locale.weekdaysParse(t, i, n._strict);
                        null != r ? e.d = r : h(n).invalidWeekday = t
                    })), yt(["d", "e", "E"], (function(t, e, n, i) { e[i] = H(t) }));
                    var Zt = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
                        Vt = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
                        Yt = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
                        Gt = ct,
                        Ut = ct,
                        Wt = ct;

                    function Ht(t, e, n) {
                        var i, r, o, g = t.toLocaleLowerCase();
                        if (!this._weekdaysParse)
                            for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], i = 0; i < 7; ++i) o = l([2e3, 1]).day(i), this._minWeekdaysParse[i] = this.weekdaysMin(o, "").toLocaleLowerCase(), this._shortWeekdaysParse[i] = this.weekdaysShort(o, "").toLocaleLowerCase(), this._weekdaysParse[i] = this.weekdays(o, "").toLocaleLowerCase();
                        return n ? "dddd" === e ? -1 !== (r = ft.call(this._weekdaysParse, g)) ? r : null : "ddd" === e ? -1 !== (r = ft.call(this._shortWeekdaysParse, g)) ? r : null : -1 !== (r = ft.call(this._minWeekdaysParse, g)) ? r : null : "dddd" === e ? -1 !== (r = ft.call(this._weekdaysParse, g)) || -1 !== (r = ft.call(this._shortWeekdaysParse, g)) || -1 !== (r = ft.call(this._minWeekdaysParse, g)) ? r : null : "ddd" === e ? -1 !== (r = ft.call(this._shortWeekdaysParse, g)) || -1 !== (r = ft.call(this._weekdaysParse, g)) || -1 !== (r = ft.call(this._minWeekdaysParse, g)) ? r : null : -1 !== (r = ft.call(this._minWeekdaysParse, g)) || -1 !== (r = ft.call(this._weekdaysParse, g)) || -1 !== (r = ft.call(this._shortWeekdaysParse, g)) ? r : null
                    }

                    function Kt() {
                        function t(t, e) { return e.length - t.length }
                        var e, n, i, r, o, g = [],
                            s = [],
                            A = [],
                            a = [];
                        for (e = 0; e < 7; e++) n = l([2e3, 1]).day(e), i = dt(this.weekdaysMin(n, "")), r = dt(this.weekdaysShort(n, "")), o = dt(this.weekdays(n, "")), g.push(i), s.push(r), A.push(o), a.push(i), a.push(r), a.push(o);
                        g.sort(t), s.sort(t), A.sort(t), a.sort(t), this._weekdaysRegex = new RegExp("^(" + a.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + A.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + s.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + g.join("|") + ")", "i")
                    }

                    function Qt() { return this.hours() % 12 || 12 }

                    function Xt(t, e) { j(t, 0, 0, (function() { return this.localeData().meridiem(this.hours(), this.minutes(), e) })) }

                    function qt(t, e) { return e._meridiemParse }
                    j("H", ["HH", 2], 0, "hour"), j("h", ["hh", 2], 0, Qt), j("k", ["kk", 2], 0, (function() { return this.hours() || 24 })), j("hmm", 0, 0, (function() { return "" + Qt.apply(this) + D(this.minutes(), 2) })), j("hmmss", 0, 0, (function() { return "" + Qt.apply(this) + D(this.minutes(), 2) + D(this.seconds(), 2) })), j("Hmm", 0, 0, (function() { return "" + this.hours() + D(this.minutes(), 2) })), j("Hmmss", 0, 0, (function() { return "" + this.hours() + D(this.minutes(), 2) + D(this.seconds(), 2) })), Xt("a", !0), Xt("A", !1), B("hour", "h"), G("hour", 13), lt("a", qt), lt("A", qt), lt("H", it), lt("h", it), lt("k", it), lt("HH", it, $), lt("hh", it, $), lt("kk", it, $), lt("hmm", rt), lt("hmmss", ot), lt("Hmm", rt), lt("Hmmss", ot), vt(["H", "HH"], 3), vt(["k", "kk"], (function(t, e, n) {
                        var i = H(t);
                        e[3] = 24 === i ? 0 : i
                    })), vt(["a", "A"], (function(t, e, n) { n._isPm = n._locale.isPM(t), n._meridiem = t })), vt(["h", "hh"], (function(t, e, n) { e[3] = H(t), h(n).bigHour = !0 })), vt("hmm", (function(t, e, n) {
                        var i = t.length - 2;
                        e[3] = H(t.substr(0, i)), e[4] = H(t.substr(i)), h(n).bigHour = !0
                    })), vt("hmmss", (function(t, e, n) {
                        var i = t.length - 4,
                            r = t.length - 2;
                        e[3] = H(t.substr(0, i)), e[4] = H(t.substr(i, 2)), e[5] = H(t.substr(r)), h(n).bigHour = !0
                    })), vt("Hmm", (function(t, e, n) {
                        var i = t.length - 2;
                        e[3] = H(t.substr(0, i)), e[4] = H(t.substr(i))
                    })), vt("Hmmss", (function(t, e, n) {
                        var i = t.length - 4,
                            r = t.length - 2;
                        e[3] = H(t.substr(0, i)), e[4] = H(t.substr(i, 2)), e[5] = H(t.substr(r))
                    }));
                    var Jt, $t = K("Hours", !0),
                        te = { calendar: { sameDay: "[Today at] LT", nextDay: "[Tomorrow at] LT", nextWeek: "dddd [at] LT", lastDay: "[Yesterday at] LT", lastWeek: "[Last] dddd [at] LT", sameElse: "L" }, longDateFormat: { LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" }, invalidDate: "Invalid date", ordinal: "%d", dayOfMonthOrdinalParse: /\d{1,2}/, relativeTime: { future: "in %s", past: "%s ago", s: "a few seconds", ss: "%d seconds", m: "a minute", mm: "%d minutes", h: "an hour", hh: "%d hours", d: "a day", dd: "%d days", w: "a week", ww: "%d weeks", M: "a month", MM: "%d months", y: "a year", yy: "%d years" }, months: wt, monthsShort: _t, week: { dow: 0, doy: 6 }, weekdays: Zt, weekdaysMin: Yt, weekdaysShort: Vt, meridiemParse: /[ap]\.?m?\.?/i },
                        ee = {},
                        ne = {};

                    function ie(t, e) {
                        var n, i = Math.min(t.length, e.length);
                        for (n = 0; n < i; n += 1)
                            if (t[n] !== e[n]) return n;
                        return i
                    }

                    function re(t) { return t ? t.toLowerCase().replace("_", "-") : t }

                    function oe(e) {
                        var n = null;
                        if (void 0 === ee[e] && t && t.exports) try { n = Jt._abbr, o(), ge(n) } catch (t) { ee[e] = null }
                        return ee[e]
                    }

                    function ge(t, e) { var n; return t && ((n = a(e) ? Ae(t) : se(t, e)) ? Jt = n : "undefined" != typeof console && console.warn && console.warn("Locale " + t + " not found. Did you forget to load it?")), Jt._abbr }

                    function se(t, e) {
                        if (null !== e) {
                            var n, i = te;
                            if (e.abbr = t, null != ee[t]) O("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), i = ee[t]._config;
                            else if (null != e.parentLocale)
                                if (null != ee[e.parentLocale]) i = ee[e.parentLocale]._config;
                                else {
                                    if (null == (n = oe(e.parentLocale))) return ne[e.parentLocale] || (ne[e.parentLocale] = []), ne[e.parentLocale].push({ name: t, config: e }), null;
                                    i = n._config
                                }
                            return ee[t] = new S(T(i, e)), ne[t] && ne[t].forEach((function(t) { se(t.name, t.config) })), ge(t), ee[t]
                        }
                        return delete ee[t], null
                    }

                    function Ae(t) {
                        var e;
                        if (t && t._locale && t._locale._abbr && (t = t._locale._abbr), !t) return Jt;
                        if (!r(t)) {
                            if (e = oe(t)) return e;
                            t = [t]
                        }
                        return function(t) {
                            for (var e, n, i, r, o = 0; o < t.length;) {
                                for (e = (r = re(t[o]).split("-")).length, n = (n = re(t[o + 1])) ? n.split("-") : null; e > 0;) {
                                    if (i = oe(r.slice(0, e).join("-"))) return i;
                                    if (n && n.length >= e && ie(r, n) >= e - 1) break;
                                    e--
                                }
                                o++
                            }
                            return Jt
                        }(t)
                    }

                    function ae(t) { var e, n = t._a; return n && -2 === h(t).overflow && (e = n[1] < 0 || n[1] > 11 ? 1 : n[2] < 1 || n[2] > mt(n[0], n[1]) ? 2 : n[3] < 0 || n[3] > 24 || 24 === n[3] && (0 !== n[4] || 0 !== n[5] || 0 !== n[6]) ? 3 : n[4] < 0 || n[4] > 59 ? 4 : n[5] < 0 || n[5] > 59 ? 5 : n[6] < 0 || n[6] > 999 ? 6 : -1, h(t)._overflowDayOfYear && (e < 0 || e > 2) && (e = 2), h(t)._overflowWeeks && -1 === e && (e = 7), h(t)._overflowWeekday && -1 === e && (e = 8), h(t).overflow = e), t }
                    var Ce = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
                        Ie = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
                        ue = /Z|[+-]\d\d(?::?\d\d)?/,
                        ce = [
                            ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
                            ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
                            ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
                            ["GGGG-[W]WW", /\d{4}-W\d\d/, !1],
                            ["YYYY-DDD", /\d{4}-\d{3}/],
                            ["YYYY-MM", /\d{4}-\d\d/, !1],
                            ["YYYYYYMMDD", /[+-]\d{10}/],
                            ["YYYYMMDD", /\d{8}/],
                            ["GGGG[W]WWE", /\d{4}W\d{3}/],
                            ["GGGG[W]WW", /\d{4}W\d{2}/, !1],
                            ["YYYYDDD", /\d{7}/],
                            ["YYYYMM", /\d{6}/, !1],
                            ["YYYY", /\d{4}/, !1]
                        ],
                        le = [
                            ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
                            ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
                            ["HH:mm:ss", /\d\d:\d\d:\d\d/],
                            ["HH:mm", /\d\d:\d\d/],
                            ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
                            ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
                            ["HHmmss", /\d\d\d\d\d\d/],
                            ["HHmm", /\d\d\d\d/],
                            ["HH", /\d\d/]
                        ],
                        he = /^\/?Date\((-?\d+)/i,
                        de = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
                        fe = { UT: 0, GMT: 0, EDT: -240, EST: -300, CDT: -300, CST: -360, MDT: -360, MST: -420, PDT: -420, PST: -480 };

                    function pe(t) {
                        var e, n, i, r, o, g, s = t._i,
                            A = Ce.exec(s) || Ie.exec(s);
                        if (A) {
                            for (h(t).iso = !0, e = 0, n = ce.length; e < n; e++)
                                if (ce[e][1].exec(A[1])) { r = ce[e][0], i = !1 !== ce[e][2]; break }
                            if (null == r) return void(t._isValid = !1);
                            if (A[3]) {
                                for (e = 0, n = le.length; e < n; e++)
                                    if (le[e][1].exec(A[3])) { o = (A[2] || " ") + le[e][0]; break }
                                if (null == o) return void(t._isValid = !1)
                            }
                            if (!i && null != o) return void(t._isValid = !1);
                            if (A[4]) {
                                if (!ue.exec(A[4])) return void(t._isValid = !1);
                                g = "Z"
                            }
                            t._f = r + (o || "") + (g || ""), we(t)
                        } else t._isValid = !1
                    }

                    function ve(t) { var e = parseInt(t, 10); return e <= 49 ? 2e3 + e : e <= 999 ? 1900 + e : e }

                    function ye(t) {
                        var e, n, i, r, o, g, s, A, a = de.exec(t._i.replace(/\([^)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, ""));
                        if (a) {
                            if (n = a[4], i = a[3], r = a[2], o = a[5], g = a[6], s = a[7], A = [ve(n), _t.indexOf(i), parseInt(r, 10), parseInt(o, 10), parseInt(g, 10)], s && A.push(parseInt(s, 10)), e = A, ! function(t, e, n) { return !t || Vt.indexOf(t) === new Date(e[0], e[1], e[2]).getDay() || (h(n).weekdayMismatch = !0, n._isValid = !1, !1) }(a[1], e, t)) return;
                            t._a = e, t._tzm = function(t, e, n) {
                                if (t) return fe[t];
                                if (e) return 0;
                                var i = parseInt(n, 10),
                                    r = i % 100;
                                return (i - r) / 100 * 60 + r
                            }(a[8], a[9], a[10]), t._d = Mt.apply(null, t._a), t._d.setUTCMinutes(t._d.getUTCMinutes() - t._tzm), h(t).rfc2822 = !0
                        } else t._isValid = !1
                    }

                    function be(t, e, n) { return null != t ? t : null != e ? e : n }

                    function me(t) {
                        var e, n, r, o, g, s = [];
                        if (!t._d) {
                            for (r = function(t) { var e = new Date(i.now()); return t._useUTC ? [e.getUTCFullYear(), e.getUTCMonth(), e.getUTCDate()] : [e.getFullYear(), e.getMonth(), e.getDate()] }(t), t._w && null == t._a[2] && null == t._a[1] && function(t) {
                                    var e, n, i, r, o, g, s, A, a;
                                    null != (e = t._w).GG || null != e.W || null != e.E ? (o = 1, g = 4, n = be(e.GG, t._a[0], zt(xe(), 1, 4).year), i = be(e.W, 1), ((r = be(e.E, 1)) < 1 || r > 7) && (A = !0)) : (o = t._locale._week.dow, g = t._locale._week.doy, a = zt(xe(), o, g), n = be(e.gg, t._a[0], a.year), i = be(e.w, a.week), null != e.d ? ((r = e.d) < 0 || r > 6) && (A = !0) : null != e.e ? (r = e.e + o, (e.e < 0 || e.e > 6) && (A = !0)) : r = o), i < 1 || i > Lt(n, o, g) ? h(t)._overflowWeeks = !0 : null != A ? h(t)._overflowWeekday = !0 : (s = Ft(n, i, r, o, g), t._a[0] = s.year, t._dayOfYear = s.dayOfYear)
                                }(t), null != t._dayOfYear && (g = be(t._a[0], r[0]), (t._dayOfYear > Nt(g) || 0 === t._dayOfYear) && (h(t)._overflowDayOfYear = !0), n = Mt(g, 0, t._dayOfYear), t._a[1] = n.getUTCMonth(), t._a[2] = n.getUTCDate()), e = 0; e < 3 && null == t._a[e]; ++e) t._a[e] = s[e] = r[e];
                            for (; e < 7; e++) t._a[e] = s[e] = null == t._a[e] ? 2 === e ? 1 : 0 : t._a[e];
                            24 === t._a[3] && 0 === t._a[4] && 0 === t._a[5] && 0 === t._a[6] && (t._nextDay = !0, t._a[3] = 0), t._d = (t._useUTC ? Mt : Pt).apply(null, s), o = t._useUTC ? t._d.getUTCDay() : t._d.getDay(), null != t._tzm && t._d.setUTCMinutes(t._d.getUTCMinutes() - t._tzm), t._nextDay && (t._a[3] = 24), t._w && void 0 !== t._w.d && t._w.d !== o && (h(t).weekdayMismatch = !0)
                        }
                    }

                    function we(t) {
                        if (t._f !== i.ISO_8601)
                            if (t._f !== i.RFC_2822) {
                                t._a = [], h(t).empty = !0;
                                var e, n, r, o, g, s, A = "" + t._i,
                                    a = A.length,
                                    C = 0;
                                for (r = z(t._f, t._locale).match(N) || [], e = 0; e < r.length; e++) o = r[e], (n = (A.match(ht(o, t)) || [])[0]) && ((g = A.substr(0, A.indexOf(n))).length > 0 && h(t).unusedInput.push(g), A = A.slice(A.indexOf(n) + n.length), C += n.length), M[o] ? (n ? h(t).empty = !1 : h(t).unusedTokens.push(o), bt(o, n, t)) : t._strict && !n && h(t).unusedTokens.push(o);
                                h(t).charsLeftOver = a - C, A.length > 0 && h(t).unusedInput.push(A), t._a[3] <= 12 && !0 === h(t).bigHour && t._a[3] > 0 && (h(t).bigHour = void 0), h(t).parsedDateParts = t._a.slice(0), h(t).meridiem = t._meridiem, t._a[3] = function(t, e, n) { var i; return null == n ? e : null != t.meridiemHour ? t.meridiemHour(e, n) : null != t.isPM ? ((i = t.isPM(n)) && e < 12 && (e += 12), i || 12 !== e || (e = 0), e) : e }(t._locale, t._a[3], t._meridiem), null !== (s = h(t).era) && (t._a[0] = t._locale.erasConvertYear(s, t._a[0])), me(t), ae(t)
                            } else ye(t);
                        else pe(t)
                    }

                    function _e(t) {
                        var e = t._i,
                            n = t._f;
                        return t._locale = t._locale || Ae(t._l), null === e || void 0 === n && "" === e ? f({ nullInput: !0 }) : ("string" == typeof e && (t._i = e = t._locale.preparse(e)), m(e) ? new b(ae(e)) : (I(e) ? t._d = e : r(n) ? function(t) {
                            var e, n, i, r, o, g, s = !1;
                            if (0 === t._f.length) return h(t).invalidFormat = !0, void(t._d = new Date(NaN));
                            for (r = 0; r < t._f.length; r++) o = 0, g = !1, e = y({}, t), null != t._useUTC && (e._useUTC = t._useUTC), e._f = t._f[r], we(e), d(e) && (g = !0), o += h(e).charsLeftOver, o += 10 * h(e).unusedTokens.length, h(e).score = o, s ? o < i && (i = o, n = e) : (null == i || o < i || g) && (i = o, n = e, g && (s = !0));
                            c(t, n || e)
                        }(t) : n ? we(t) : function(t) {
                            var e = t._i;
                            a(e) ? t._d = new Date(i.now()) : I(e) ? t._d = new Date(e.valueOf()) : "string" == typeof e ? function(t) {
                                var e = he.exec(t._i);
                                null === e ? (pe(t), !1 === t._isValid && (delete t._isValid, ye(t), !1 === t._isValid && (delete t._isValid, t._strict ? t._isValid = !1 : i.createFromInputFallback(t)))) : t._d = new Date(+e[1])
                            }(t) : r(e) ? (t._a = u(e.slice(0), (function(t) { return parseInt(t, 10) })), me(t)) : g(e) ? function(t) {
                                if (!t._d) {
                                    var e = V(t._i),
                                        n = void 0 === e.day ? e.date : e.day;
                                    t._a = u([e.year, e.month, n, e.hour, e.minute, e.second, e.millisecond], (function(t) { return t && parseInt(t, 10) })), me(t)
                                }
                            }(t) : C(e) ? t._d = new Date(e) : i.createFromInputFallback(t)
                        }(t), d(t) || (t._d = null), t))
                    }

                    function ke(t, e, n, i, o) { var s, a = {}; return !0 !== e && !1 !== e || (i = e, e = void 0), !0 !== n && !1 !== n || (i = n, n = void 0), (g(t) && A(t) || r(t) && 0 === t.length) && (t = void 0), a._isAMomentObject = !0, a._useUTC = a._isUTC = o, a._l = n, a._i = t, a._f = e, a._strict = i, (s = new b(ae(_e(a))))._nextDay && (s.add(1, "d"), s._nextDay = void 0), s }

                    function xe(t, e, n, i) { return ke(t, e, n, i, !1) }
                    i.createFromInputFallback = _("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", (function(t) { t._d = new Date(t._i + (t._useUTC ? " UTC" : "")) })), i.ISO_8601 = function() {}, i.RFC_2822 = function() {};
                    var Oe = _("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", (function() { var t = xe.apply(null, arguments); return this.isValid() && t.isValid() ? t < this ? this : t : f() })),
                        Ee = _("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", (function() { var t = xe.apply(null, arguments); return this.isValid() && t.isValid() ? t > this ? this : t : f() }));

                    function Te(t, e) { var n, i; if (1 === e.length && r(e[0]) && (e = e[0]), !e.length) return xe(); for (n = e[0], i = 1; i < e.length; ++i) e[i].isValid() && !e[i][t](n) || (n = e[i]); return n }
                    var Se = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"];

                    function De(t) {
                        var e = V(t),
                            n = e.year || 0,
                            i = e.quarter || 0,
                            r = e.month || 0,
                            o = e.week || e.isoWeek || 0,
                            g = e.day || 0,
                            A = e.hour || 0,
                            a = e.minute || 0,
                            C = e.second || 0,
                            I = e.millisecond || 0;
                        this._isValid = function(t) {
                            var e, n, i = !1;
                            for (e in t)
                                if (s(t, e) && (-1 === ft.call(Se, e) || null != t[e] && isNaN(t[e]))) return !1;
                            for (n = 0; n < Se.length; ++n)
                                if (t[Se[n]]) {
                                    if (i) return !1;
                                    parseFloat(t[Se[n]]) !== H(t[Se[n]]) && (i = !0)
                                }
                            return !0
                        }(e), this._milliseconds = +I + 1e3 * C + 6e4 * a + 1e3 * A * 60 * 60, this._days = +g + 7 * o, this._months = +r + 3 * i + 12 * n, this._data = {}, this._locale = Ae(), this._bubble()
                    }

                    function Ne(t) { return t instanceof De }

                    function Re(t) { return t < 0 ? -1 * Math.round(-1 * t) : Math.round(t) }

                    function Pe(t, e) {
                        j(t, 0, 0, (function() {
                            var t = this.utcOffset(),
                                n = "+";
                            return t < 0 && (t = -t, n = "-"), n + D(~~(t / 60), 2) + e + D(~~t % 60, 2)
                        }))
                    }
                    Pe("Z", ":"), Pe("ZZ", ""), lt("Z", ut), lt("ZZ", ut), vt(["Z", "ZZ"], (function(t, e, n) { n._useUTC = !0, n._tzm = je(ut, t) }));
                    var Me = /([\+\-]|\d\d)/gi;

                    function je(t, e) { var n, i, r = (e || "").match(t); return null === r ? null : 0 === (i = 60 * (n = ((r[r.length - 1] || []) + "").match(Me) || ["-", 0, 0])[1] + H(n[2])) ? 0 : "+" === n[0] ? i : -i }

                    function Fe(t, e) { var n, r; return e._isUTC ? (n = e.clone(), r = (m(t) || I(t) ? t.valueOf() : xe(t).valueOf()) - n.valueOf(), n._d.setTime(n._d.valueOf() + r), i.updateOffset(n, !1), n) : xe(t).local() }

                    function ze(t) { return -Math.round(t._d.getTimezoneOffset()) }

                    function Le() { return !!this.isValid() && this._isUTC && 0 === this._offset }
                    i.updateOffset = function() {};
                    var Be = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
                        Ze = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;

                    function Ve(t, e) {
                        var n, i, r, o, g, A, a = t,
                            I = null;
                        return Ne(t) ? a = { ms: t._milliseconds, d: t._days, M: t._months } : C(t) || !isNaN(+t) ? (a = {}, e ? a[e] = +t : a.milliseconds = +t) : (I = Be.exec(t)) ? (n = "-" === I[1] ? -1 : 1, a = { y: 0, d: H(I[2]) * n, h: H(I[3]) * n, m: H(I[4]) * n, s: H(I[5]) * n, ms: H(Re(1e3 * I[6])) * n }) : (I = Ze.exec(t)) ? (n = "-" === I[1] ? -1 : 1, a = { y: Ye(I[2], n), M: Ye(I[3], n), w: Ye(I[4], n), d: Ye(I[5], n), h: Ye(I[6], n), m: Ye(I[7], n), s: Ye(I[8], n) }) : null == a ? a = {} : "object" == typeof a && ("from" in a || "to" in a) && (o = xe(a.from), g = xe(a.to), r = o.isValid() && g.isValid() ? (g = Fe(g, o), o.isBefore(g) ? A = Ge(o, g) : ((A = Ge(g, o)).milliseconds = -A.milliseconds, A.months = -A.months), A) : { milliseconds: 0, months: 0 }, (a = {}).ms = r.milliseconds, a.M = r.months), i = new De(a), Ne(t) && s(t, "_locale") && (i._locale = t._locale), Ne(t) && s(t, "_isValid") && (i._isValid = t._isValid), i
                    }

                    function Ye(t, e) { var n = t && parseFloat(t.replace(",", ".")); return (isNaN(n) ? 0 : n) * e }

                    function Ge(t, e) { var n = {}; return n.months = e.month() - t.month() + 12 * (e.year() - t.year()), t.clone().add(n.months, "M").isAfter(e) && --n.months, n.milliseconds = +e - +t.clone().add(n.months, "M"), n }

                    function Ue(t, e) { return function(n, i) { var r; return null === i || isNaN(+i) || (O(e, "moment()." + e + "(period, number) is deprecated. Please use moment()." + e + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), r = n, n = i, i = r), We(this, Ve(n, i), t), this } }

                    function We(t, e, n, r) {
                        var o = e._milliseconds,
                            g = Re(e._days),
                            s = Re(e._months);
                        t.isValid() && (r = null == r || r, s && Tt(t, Q(t, "Month") + s * n), g && X(t, "Date", Q(t, "Date") + g * n), o && t._d.setTime(t._d.valueOf() + o * n), r && i.updateOffset(t, g || s))
                    }
                    Ve.fn = De.prototype, Ve.invalid = function() { return Ve(NaN) };
                    var He = Ue(1, "add"),
                        Ke = Ue(-1, "subtract");

                    function Qe(t) { return "string" == typeof t || t instanceof String }

                    function Xe(t) {
                        return m(t) || I(t) || Qe(t) || C(t) || function(t) {
                            var e = r(t),
                                n = !1;
                            return e && (n = 0 === t.filter((function(e) { return !C(e) && Qe(t) })).length), e && n
                        }(t) || function(t) {
                            var e, n, i = g(t) && !A(t),
                                r = !1,
                                o = ["years", "year", "y", "months", "month", "M", "days", "day", "d", "dates", "date", "D", "hours", "hour", "h", "minutes", "minute", "m", "seconds", "second", "s", "milliseconds", "millisecond", "ms"];
                            for (e = 0; e < o.length; e += 1) n = o[e], r = r || s(t, n);
                            return i && r
                        }(t) || null == t
                    }

                    function qe(t) {
                        var e, n = g(t) && !A(t),
                            i = !1,
                            r = ["sameDay", "nextDay", "lastDay", "nextWeek", "lastWeek", "sameElse"];
                        for (e = 0; e < r.length; e += 1) i = i || s(t, r[e]);
                        return n && i
                    }

                    function Je(t, e) {
                        if (t.date() < e.date()) return -Je(e, t);
                        var n = 12 * (e.year() - t.year()) + (e.month() - t.month()),
                            i = t.clone().add(n, "months");
                        return -(n + (e - i < 0 ? (e - i) / (i - t.clone().add(n - 1, "months")) : (e - i) / (t.clone().add(n + 1, "months") - i))) || 0
                    }

                    function $e(t) { var e; return void 0 === t ? this._locale._abbr : (null != (e = Ae(t)) && (this._locale = e), this) }
                    i.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", i.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
                    var tn = _("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", (function(t) { return void 0 === t ? this.localeData() : this.locale(t) }));

                    function en() { return this._locale }

                    function nn(t, e) { return (t % e + e) % e }

                    function rn(t, e, n) { return t < 100 && t >= 0 ? new Date(t + 400, e, n) - 126227808e5 : new Date(t, e, n).valueOf() }

                    function on(t, e, n) { return t < 100 && t >= 0 ? Date.UTC(t + 400, e, n) - 126227808e5 : Date.UTC(t, e, n) }

                    function gn(t, e) { return e.erasAbbrRegex(t) }

                    function sn() {
                        var t, e, n = [],
                            i = [],
                            r = [],
                            o = [],
                            g = this.eras();
                        for (t = 0, e = g.length; t < e; ++t) i.push(dt(g[t].name)), n.push(dt(g[t].abbr)), r.push(dt(g[t].narrow)), o.push(dt(g[t].name)), o.push(dt(g[t].abbr)), o.push(dt(g[t].narrow));
                        this._erasRegex = new RegExp("^(" + o.join("|") + ")", "i"), this._erasNameRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._erasAbbrRegex = new RegExp("^(" + n.join("|") + ")", "i"), this._erasNarrowRegex = new RegExp("^(" + r.join("|") + ")", "i")
                    }

                    function An(t, e) { j(0, [t, t.length], 0, e) }

                    function an(t, e, n, i, r) { var o; return null == t ? zt(this, i, r).year : (e > (o = Lt(t, i, r)) && (e = o), Cn.call(this, t, e, n, i, r)) }

                    function Cn(t, e, n, i, r) {
                        var o = Ft(t, e, n, i, r),
                            g = Mt(o.year, 0, o.dayOfYear);
                        return this.year(g.getUTCFullYear()), this.month(g.getUTCMonth()), this.date(g.getUTCDate()), this
                    }
                    j("N", 0, 0, "eraAbbr"), j("NN", 0, 0, "eraAbbr"), j("NNN", 0, 0, "eraAbbr"), j("NNNN", 0, 0, "eraName"), j("NNNNN", 0, 0, "eraNarrow"), j("y", ["y", 1], "yo", "eraYear"), j("y", ["yy", 2], 0, "eraYear"), j("y", ["yyy", 3], 0, "eraYear"), j("y", ["yyyy", 4], 0, "eraYear"), lt("N", gn), lt("NN", gn), lt("NNN", gn), lt("NNNN", (function(t, e) { return e.erasNameRegex(t) })), lt("NNNNN", (function(t, e) { return e.erasNarrowRegex(t) })), vt(["N", "NN", "NNN", "NNNN", "NNNNN"], (function(t, e, n, i) {
                        var r = n._locale.erasParse(t, i, n._strict);
                        r ? h(n).era = r : h(n).invalidEra = t
                    })), lt("y", at), lt("yy", at), lt("yyy", at), lt("yyyy", at), lt("yo", (function(t, e) { return e._eraYearOrdinalRegex || at })), vt(["y", "yy", "yyy", "yyyy"], 0), vt(["yo"], (function(t, e, n, i) {
                        var r;
                        n._locale._eraYearOrdinalRegex && (r = t.match(n._locale._eraYearOrdinalRegex)), n._locale.eraYearOrdinalParse ? e[0] = n._locale.eraYearOrdinalParse(t, r) : e[0] = parseInt(t, 10)
                    })), j(0, ["gg", 2], 0, (function() { return this.weekYear() % 100 })), j(0, ["GG", 2], 0, (function() { return this.isoWeekYear() % 100 })), An("gggg", "weekYear"), An("ggggg", "weekYear"), An("GGGG", "isoWeekYear"), An("GGGGG", "isoWeekYear"), B("weekYear", "gg"), B("isoWeekYear", "GG"), G("weekYear", 1), G("isoWeekYear", 1), lt("G", Ct), lt("g", Ct), lt("GG", it, $), lt("gg", it, $), lt("GGGG", st, et), lt("gggg", st, et), lt("GGGGG", At, nt), lt("ggggg", At, nt), yt(["gggg", "ggggg", "GGGG", "GGGGG"], (function(t, e, n, i) { e[i.substr(0, 2)] = H(t) })), yt(["gg", "GG"], (function(t, e, n, r) { e[r] = i.parseTwoDigitYear(t) })), j("Q", 0, "Qo", "quarter"), B("quarter", "Q"), G("quarter", 7), lt("Q", J), vt("Q", (function(t, e) { e[1] = 3 * (H(t) - 1) })), j("D", ["DD", 2], "Do", "date"), B("date", "D"), G("date", 9), lt("D", it), lt("DD", it, $), lt("Do", (function(t, e) { return t ? e._dayOfMonthOrdinalParse || e._ordinalParse : e._dayOfMonthOrdinalParseLenient })), vt(["D", "DD"], 2), vt("Do", (function(t, e) { e[2] = H(t.match(it)[0]) }));
                    var In = K("Date", !0);
                    j("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), B("dayOfYear", "DDD"), G("dayOfYear", 4), lt("DDD", gt), lt("DDDD", tt), vt(["DDD", "DDDD"], (function(t, e, n) { n._dayOfYear = H(t) })), j("m", ["mm", 2], 0, "minute"), B("minute", "m"), G("minute", 14), lt("m", it), lt("mm", it, $), vt(["m", "mm"], 4);
                    var un = K("Minutes", !1);
                    j("s", ["ss", 2], 0, "second"), B("second", "s"), G("second", 15), lt("s", it), lt("ss", it, $), vt(["s", "ss"], 5);
                    var cn, ln, hn = K("Seconds", !1);
                    for (j("S", 0, 0, (function() { return ~~(this.millisecond() / 100) })), j(0, ["SS", 2], 0, (function() { return ~~(this.millisecond() / 10) })), j(0, ["SSS", 3], 0, "millisecond"), j(0, ["SSSS", 4], 0, (function() { return 10 * this.millisecond() })), j(0, ["SSSSS", 5], 0, (function() { return 100 * this.millisecond() })), j(0, ["SSSSSS", 6], 0, (function() { return 1e3 * this.millisecond() })), j(0, ["SSSSSSS", 7], 0, (function() { return 1e4 * this.millisecond() })), j(0, ["SSSSSSSS", 8], 0, (function() { return 1e5 * this.millisecond() })), j(0, ["SSSSSSSSS", 9], 0, (function() { return 1e6 * this.millisecond() })), B("millisecond", "ms"), G("millisecond", 16), lt("S", gt, J), lt("SS", gt, $), lt("SSS", gt, tt), cn = "SSSS"; cn.length <= 9; cn += "S") lt(cn, at);

                    function dn(t, e) { e[6] = H(1e3 * ("0." + t)) }
                    for (cn = "S"; cn.length <= 9; cn += "S") vt(cn, dn);
                    ln = K("Milliseconds", !1), j("z", 0, 0, "zoneAbbr"), j("zz", 0, 0, "zoneName");
                    var fn = b.prototype;

                    function pn(t) { return t }
                    fn.add = He, fn.calendar = function(t, e) {
                        1 === arguments.length && (Xe(arguments[0]) ? (t = arguments[0], e = void 0) : qe(arguments[0]) && (e = arguments[0], t = void 0));
                        var n = t || xe(),
                            r = Fe(n, this).startOf("day"),
                            o = i.calendarFormat(this, r) || "sameElse",
                            g = e && (E(e[o]) ? e[o].call(this, n) : e[o]);
                        return this.format(g || this.localeData().calendar(o, this, xe(n)))
                    }, fn.clone = function() { return new b(this) }, fn.diff = function(t, e, n) {
                        var i, r, o;
                        if (!this.isValid()) return NaN;
                        if (!(i = Fe(t, this)).isValid()) return NaN;
                        switch (r = 6e4 * (i.utcOffset() - this.utcOffset()), e = Z(e)) {
                            case "year":
                                o = Je(this, i) / 12;
                                break;
                            case "month":
                                o = Je(this, i);
                                break;
                            case "quarter":
                                o = Je(this, i) / 3;
                                break;
                            case "second":
                                o = (this - i) / 1e3;
                                break;
                            case "minute":
                                o = (this - i) / 6e4;
                                break;
                            case "hour":
                                o = (this - i) / 36e5;
                                break;
                            case "day":
                                o = (this - i - r) / 864e5;
                                break;
                            case "week":
                                o = (this - i - r) / 6048e5;
                                break;
                            default:
                                o = this - i
                        }
                        return n ? o : W(o)
                    }, fn.endOf = function(t) {
                        var e, n;
                        if (void 0 === (t = Z(t)) || "millisecond" === t || !this.isValid()) return this;
                        switch (n = this._isUTC ? on : rn, t) {
                            case "year":
                                e = n(this.year() + 1, 0, 1) - 1;
                                break;
                            case "quarter":
                                e = n(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;
                                break;
                            case "month":
                                e = n(this.year(), this.month() + 1, 1) - 1;
                                break;
                            case "week":
                                e = n(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;
                                break;
                            case "isoWeek":
                                e = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;
                                break;
                            case "day":
                            case "date":
                                e = n(this.year(), this.month(), this.date() + 1) - 1;
                                break;
                            case "hour":
                                e = this._d.valueOf(), e += 36e5 - nn(e + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5) - 1;
                                break;
                            case "minute":
                                e = this._d.valueOf(), e += 6e4 - nn(e, 6e4) - 1;
                                break;
                            case "second":
                                e = this._d.valueOf(), e += 1e3 - nn(e, 1e3) - 1
                        }
                        return this._d.setTime(e), i.updateOffset(this, !0), this
                    }, fn.format = function(t) { t || (t = this.isUtc() ? i.defaultFormatUtc : i.defaultFormat); var e = F(this, t); return this.localeData().postformat(e) }, fn.from = function(t, e) { return this.isValid() && (m(t) && t.isValid() || xe(t).isValid()) ? Ve({ to: this, from: t }).locale(this.locale()).humanize(!e) : this.localeData().invalidDate() }, fn.fromNow = function(t) { return this.from(xe(), t) }, fn.to = function(t, e) { return this.isValid() && (m(t) && t.isValid() || xe(t).isValid()) ? Ve({ from: this, to: t }).locale(this.locale()).humanize(!e) : this.localeData().invalidDate() }, fn.toNow = function(t) { return this.to(xe(), t) }, fn.get = function(t) { return E(this[t = Z(t)]) ? this[t]() : this }, fn.invalidAt = function() { return h(this).overflow }, fn.isAfter = function(t, e) { var n = m(t) ? t : xe(t); return !(!this.isValid() || !n.isValid()) && ("millisecond" === (e = Z(e) || "millisecond") ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(e).valueOf()) }, fn.isBefore = function(t, e) { var n = m(t) ? t : xe(t); return !(!this.isValid() || !n.isValid()) && ("millisecond" === (e = Z(e) || "millisecond") ? this.valueOf() < n.valueOf() : this.clone().endOf(e).valueOf() < n.valueOf()) }, fn.isBetween = function(t, e, n, i) {
                        var r = m(t) ? t : xe(t),
                            o = m(e) ? e : xe(e);
                        return !!(this.isValid() && r.isValid() && o.isValid()) && (("(" === (i = i || "()")[0] ? this.isAfter(r, n) : !this.isBefore(r, n)) && (")" === i[1] ? this.isBefore(o, n) : !this.isAfter(o, n)))
                    }, fn.isSame = function(t, e) { var n, i = m(t) ? t : xe(t); return !(!this.isValid() || !i.isValid()) && ("millisecond" === (e = Z(e) || "millisecond") ? this.valueOf() === i.valueOf() : (n = i.valueOf(), this.clone().startOf(e).valueOf() <= n && n <= this.clone().endOf(e).valueOf())) }, fn.isSameOrAfter = function(t, e) { return this.isSame(t, e) || this.isAfter(t, e) }, fn.isSameOrBefore = function(t, e) { return this.isSame(t, e) || this.isBefore(t, e) }, fn.isValid = function() { return d(this) }, fn.lang = tn, fn.locale = $e, fn.localeData = en, fn.max = Ee, fn.min = Oe, fn.parsingFlags = function() { return c({}, h(this)) }, fn.set = function(t, e) { if ("object" == typeof t) { var n, i = function(t) { var e, n = []; for (e in t) s(t, e) && n.push({ unit: e, priority: Y[e] }); return n.sort((function(t, e) { return t.priority - e.priority })), n }(t = V(t)); for (n = 0; n < i.length; n++) this[i[n].unit](t[i[n].unit]) } else if (E(this[t = Z(t)])) return this[t](e); return this }, fn.startOf = function(t) {
                        var e, n;
                        if (void 0 === (t = Z(t)) || "millisecond" === t || !this.isValid()) return this;
                        switch (n = this._isUTC ? on : rn, t) {
                            case "year":
                                e = n(this.year(), 0, 1);
                                break;
                            case "quarter":
                                e = n(this.year(), this.month() - this.month() % 3, 1);
                                break;
                            case "month":
                                e = n(this.year(), this.month(), 1);
                                break;
                            case "week":
                                e = n(this.year(), this.month(), this.date() - this.weekday());
                                break;
                            case "isoWeek":
                                e = n(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));
                                break;
                            case "day":
                            case "date":
                                e = n(this.year(), this.month(), this.date());
                                break;
                            case "hour":
                                e = this._d.valueOf(), e -= nn(e + (this._isUTC ? 0 : 6e4 * this.utcOffset()), 36e5);
                                break;
                            case "minute":
                                e = this._d.valueOf(), e -= nn(e, 6e4);
                                break;
                            case "second":
                                e = this._d.valueOf(), e -= nn(e, 1e3)
                        }
                        return this._d.setTime(e), i.updateOffset(this, !0), this
                    }, fn.subtract = Ke, fn.toArray = function() { var t = this; return [t.year(), t.month(), t.date(), t.hour(), t.minute(), t.second(), t.millisecond()] }, fn.toObject = function() { var t = this; return { years: t.year(), months: t.month(), date: t.date(), hours: t.hours(), minutes: t.minutes(), seconds: t.seconds(), milliseconds: t.milliseconds() } }, fn.toDate = function() { return new Date(this.valueOf()) }, fn.toISOString = function(t) {
                        if (!this.isValid()) return null;
                        var e = !0 !== t,
                            n = e ? this.clone().utc() : this;
                        return n.year() < 0 || n.year() > 9999 ? F(n, e ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ") : E(Date.prototype.toISOString) ? e ? this.toDate().toISOString() : new Date(this.valueOf() + 60 * this.utcOffset() * 1e3).toISOString().replace("Z", F(n, "Z")) : F(n, e ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ")
                    }, fn.inspect = function() {
                        if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)";
                        var t, e, n, i = "moment",
                            r = "";
                        return this.isLocal() || (i = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", r = "Z"), t = "[" + i + '("]', e = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY", n = r + '[")]', this.format(t + e + "-MM-DD[T]HH:mm:ss.SSS" + n)
                    }, "undefined" != typeof Symbol && null != Symbol.for && (fn[Symbol.for("nodejs.util.inspect.custom")] = function() { return "Moment<" + this.format() + ">" }), fn.toJSON = function() { return this.isValid() ? this.toISOString() : null }, fn.toString = function() { return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ") }, fn.unix = function() { return Math.floor(this.valueOf() / 1e3) }, fn.valueOf = function() { return this._d.valueOf() - 6e4 * (this._offset || 0) }, fn.creationData = function() { return { input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict } }, fn.eraName = function() { var t, e, n, i = this.localeData().eras(); for (t = 0, e = i.length; t < e; ++t) { if (n = this.startOf("day").valueOf(), i[t].since <= n && n <= i[t].until) return i[t].name; if (i[t].until <= n && n <= i[t].since) return i[t].name } return "" }, fn.eraNarrow = function() { var t, e, n, i = this.localeData().eras(); for (t = 0, e = i.length; t < e; ++t) { if (n = this.startOf("day").valueOf(), i[t].since <= n && n <= i[t].until) return i[t].narrow; if (i[t].until <= n && n <= i[t].since) return i[t].narrow } return "" }, fn.eraAbbr = function() { var t, e, n, i = this.localeData().eras(); for (t = 0, e = i.length; t < e; ++t) { if (n = this.startOf("day").valueOf(), i[t].since <= n && n <= i[t].until) return i[t].abbr; if (i[t].until <= n && n <= i[t].since) return i[t].abbr } return "" }, fn.eraYear = function() {
                        var t, e, n, r, o = this.localeData().eras();
                        for (t = 0, e = o.length; t < e; ++t)
                            if (n = o[t].since <= o[t].until ? 1 : -1, r = this.startOf("day").valueOf(), o[t].since <= r && r <= o[t].until || o[t].until <= r && r <= o[t].since) return (this.year() - i(o[t].since).year()) * n + o[t].offset;
                        return this.year()
                    }, fn.year = Rt, fn.isLeapYear = function() { return U(this.year()) }, fn.weekYear = function(t) { return an.call(this, t, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy) }, fn.isoWeekYear = function(t) { return an.call(this, t, this.isoWeek(), this.isoWeekday(), 1, 4) }, fn.quarter = fn.quarters = function(t) { return null == t ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (t - 1) + this.month() % 3) }, fn.month = St, fn.daysInMonth = function() { return mt(this.year(), this.month()) }, fn.week = fn.weeks = function(t) { var e = this.localeData().week(this); return null == t ? e : this.add(7 * (t - e), "d") }, fn.isoWeek = fn.isoWeeks = function(t) { var e = zt(this, 1, 4).week; return null == t ? e : this.add(7 * (t - e), "d") }, fn.weeksInYear = function() { var t = this.localeData()._week; return Lt(this.year(), t.dow, t.doy) }, fn.weeksInWeekYear = function() { var t = this.localeData()._week; return Lt(this.weekYear(), t.dow, t.doy) }, fn.isoWeeksInYear = function() { return Lt(this.year(), 1, 4) }, fn.isoWeeksInISOWeekYear = function() { return Lt(this.isoWeekYear(), 1, 4) }, fn.date = In, fn.day = fn.days = function(t) { if (!this.isValid()) return null != t ? this : NaN; var e = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); return null != t ? (t = function(t, e) { return "string" != typeof t ? t : isNaN(t) ? "number" == typeof(t = e.weekdaysParse(t)) ? t : null : parseInt(t, 10) }(t, this.localeData()), this.add(t - e, "d")) : e }, fn.weekday = function(t) { if (!this.isValid()) return null != t ? this : NaN; var e = (this.day() + 7 - this.localeData()._week.dow) % 7; return null == t ? e : this.add(t - e, "d") }, fn.isoWeekday = function(t) { if (!this.isValid()) return null != t ? this : NaN; if (null != t) { var e = function(t, e) { return "string" == typeof t ? e.weekdaysParse(t) % 7 || 7 : isNaN(t) ? null : t }(t, this.localeData()); return this.day(this.day() % 7 ? e : e - 7) } return this.day() || 7 }, fn.dayOfYear = function(t) { var e = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1; return null == t ? e : this.add(t - e, "d") }, fn.hour = fn.hours = $t, fn.minute = fn.minutes = un, fn.second = fn.seconds = hn, fn.millisecond = fn.milliseconds = ln, fn.utcOffset = function(t, e, n) { var r, o = this._offset || 0; if (!this.isValid()) return null != t ? this : NaN; if (null != t) { if ("string" == typeof t) { if (null === (t = je(ut, t))) return this } else Math.abs(t) < 16 && !n && (t *= 60); return !this._isUTC && e && (r = ze(this)), this._offset = t, this._isUTC = !0, null != r && this.add(r, "m"), o !== t && (!e || this._changeInProgress ? We(this, Ve(t - o, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, i.updateOffset(this, !0), this._changeInProgress = null)), this } return this._isUTC ? o : ze(this) }, fn.utc = function(t) { return this.utcOffset(0, t) }, fn.local = function(t) { return this._isUTC && (this.utcOffset(0, t), this._isUTC = !1, t && this.subtract(ze(this), "m")), this }, fn.parseZone = function() {
                        if (null != this._tzm) this.utcOffset(this._tzm, !1, !0);
                        else if ("string" == typeof this._i) {
                            var t = je(It, this._i);
                            null != t ? this.utcOffset(t) : this.utcOffset(0, !0)
                        }
                        return this
                    }, fn.hasAlignedHourOffset = function(t) { return !!this.isValid() && (t = t ? xe(t).utcOffset() : 0, (this.utcOffset() - t) % 60 == 0) }, fn.isDST = function() { return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() }, fn.isLocal = function() { return !!this.isValid() && !this._isUTC }, fn.isUtcOffset = function() { return !!this.isValid() && this._isUTC }, fn.isUtc = Le, fn.isUTC = Le, fn.zoneAbbr = function() { return this._isUTC ? "UTC" : "" }, fn.zoneName = function() { return this._isUTC ? "Coordinated Universal Time" : "" }, fn.dates = _("dates accessor is deprecated. Use date instead.", In), fn.months = _("months accessor is deprecated. Use month instead", St), fn.years = _("years accessor is deprecated. Use year instead", Rt), fn.zone = _("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", (function(t, e) { return null != t ? ("string" != typeof t && (t = -t), this.utcOffset(t, e), this) : -this.utcOffset() })), fn.isDSTShifted = _("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", (function() {
                        if (!a(this._isDSTShifted)) return this._isDSTShifted;
                        var t, e = {};
                        return y(e, this), (e = _e(e))._a ? (t = e._isUTC ? l(e._a) : xe(e._a), this._isDSTShifted = this.isValid() && function(t, e, n) {
                            var i, r = Math.min(t.length, e.length),
                                o = Math.abs(t.length - e.length),
                                g = 0;
                            for (i = 0; i < r; i++)(n && t[i] !== e[i] || !n && H(t[i]) !== H(e[i])) && g++;
                            return g + o
                        }(e._a, t.toArray()) > 0) : this._isDSTShifted = !1, this._isDSTShifted
                    }));
                    var vn = S.prototype;

                    function yn(t, e, n, i) {
                        var r = Ae(),
                            o = l().set(i, e);
                        return r[n](o, t)
                    }

                    function bn(t, e, n) { if (C(t) && (e = t, t = void 0), t = t || "", null != e) return yn(t, e, n, "month"); var i, r = []; for (i = 0; i < 12; i++) r[i] = yn(t, i, n, "month"); return r }

                    function mn(t, e, n, i) {
                        "boolean" == typeof t ? (C(e) && (n = e, e = void 0), e = e || "") : (n = e = t, t = !1, C(e) && (n = e, e = void 0), e = e || "");
                        var r, o = Ae(),
                            g = t ? o._week.dow : 0,
                            s = [];
                        if (null != n) return yn(e, (n + g) % 7, i, "day");
                        for (r = 0; r < 7; r++) s[r] = yn(e, (r + g) % 7, i, "day");
                        return s
                    }
                    vn.calendar = function(t, e, n) { var i = this._calendar[t] || this._calendar.sameElse; return E(i) ? i.call(e, n) : i }, vn.longDateFormat = function(t) {
                        var e = this._longDateFormat[t],
                            n = this._longDateFormat[t.toUpperCase()];
                        return e || !n ? e : (this._longDateFormat[t] = n.match(N).map((function(t) { return "MMMM" === t || "MM" === t || "DD" === t || "dddd" === t ? t.slice(1) : t })).join(""), this._longDateFormat[t])
                    }, vn.invalidDate = function() { return this._invalidDate }, vn.ordinal = function(t) { return this._ordinal.replace("%d", t) }, vn.preparse = pn, vn.postformat = pn, vn.relativeTime = function(t, e, n, i) { var r = this._relativeTime[n]; return E(r) ? r(t, e, n, i) : r.replace(/%d/i, t) }, vn.pastFuture = function(t, e) { var n = this._relativeTime[t > 0 ? "future" : "past"]; return E(n) ? n(e) : n.replace(/%s/i, e) }, vn.set = function(t) {
                        var e, n;
                        for (n in t) s(t, n) && (E(e = t[n]) ? this[n] = e : this["_" + n] = e);
                        this._config = t, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source)
                    }, vn.eras = function(t, e) {
                        var n, r, o, g = this._eras || Ae("en")._eras;
                        for (n = 0, r = g.length; n < r; ++n) {
                            switch (typeof g[n].since) {
                                case "string":
                                    o = i(g[n].since).startOf("day"), g[n].since = o.valueOf()
                            }
                            switch (typeof g[n].until) {
                                case "undefined":
                                    g[n].until = 1 / 0;
                                    break;
                                case "string":
                                    o = i(g[n].until).startOf("day").valueOf(), g[n].until = o.valueOf()
                            }
                        }
                        return g
                    }, vn.erasParse = function(t, e, n) {
                        var i, r, o, g, s, A = this.eras();
                        for (t = t.toUpperCase(), i = 0, r = A.length; i < r; ++i)
                            if (o = A[i].name.toUpperCase(), g = A[i].abbr.toUpperCase(), s = A[i].narrow.toUpperCase(), n) switch (e) {
                                case "N":
                                case "NN":
                                case "NNN":
                                    if (g === t) return A[i];
                                    break;
                                case "NNNN":
                                    if (o === t) return A[i];
                                    break;
                                case "NNNNN":
                                    if (s === t) return A[i]
                            } else if ([o, g, s].indexOf(t) >= 0) return A[i]
                    }, vn.erasConvertYear = function(t, e) { var n = t.since <= t.until ? 1 : -1; return void 0 === e ? i(t.since).year() : i(t.since).year() + (e - t.offset) * n }, vn.erasAbbrRegex = function(t) { return s(this, "_erasAbbrRegex") || sn.call(this), t ? this._erasAbbrRegex : this._erasRegex }, vn.erasNameRegex = function(t) { return s(this, "_erasNameRegex") || sn.call(this), t ? this._erasNameRegex : this._erasRegex }, vn.erasNarrowRegex = function(t) { return s(this, "_erasNarrowRegex") || sn.call(this), t ? this._erasNarrowRegex : this._erasRegex }, vn.months = function(t, e) { return t ? r(this._months) ? this._months[t.month()] : this._months[(this._months.isFormat || kt).test(e) ? "format" : "standalone"][t.month()] : r(this._months) ? this._months : this._months.standalone }, vn.monthsShort = function(t, e) { return t ? r(this._monthsShort) ? this._monthsShort[t.month()] : this._monthsShort[kt.test(e) ? "format" : "standalone"][t.month()] : r(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone }, vn.monthsParse = function(t, e, n) { var i, r, o; if (this._monthsParseExact) return Et.call(this, t, e, n); for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), i = 0; i < 12; i++) { if (r = l([2e3, i]), n && !this._longMonthsParse[i] && (this._longMonthsParse[i] = new RegExp("^" + this.months(r, "").replace(".", "") + "$", "i"), this._shortMonthsParse[i] = new RegExp("^" + this.monthsShort(r, "").replace(".", "") + "$", "i")), n || this._monthsParse[i] || (o = "^" + this.months(r, "") + "|^" + this.monthsShort(r, ""), this._monthsParse[i] = new RegExp(o.replace(".", ""), "i")), n && "MMMM" === e && this._longMonthsParse[i].test(t)) return i; if (n && "MMM" === e && this._shortMonthsParse[i].test(t)) return i; if (!n && this._monthsParse[i].test(t)) return i } }, vn.monthsRegex = function(t) { return this._monthsParseExact ? (s(this, "_monthsRegex") || Dt.call(this), t ? this._monthsStrictRegex : this._monthsRegex) : (s(this, "_monthsRegex") || (this._monthsRegex = Ot), this._monthsStrictRegex && t ? this._monthsStrictRegex : this._monthsRegex) }, vn.monthsShortRegex = function(t) { return this._monthsParseExact ? (s(this, "_monthsRegex") || Dt.call(this), t ? this._monthsShortStrictRegex : this._monthsShortRegex) : (s(this, "_monthsShortRegex") || (this._monthsShortRegex = xt), this._monthsShortStrictRegex && t ? this._monthsShortStrictRegex : this._monthsShortRegex) }, vn.week = function(t) { return zt(t, this._week.dow, this._week.doy).week }, vn.firstDayOfYear = function() { return this._week.doy }, vn.firstDayOfWeek = function() { return this._week.dow }, vn.weekdays = function(t, e) { var n = r(this._weekdays) ? this._weekdays : this._weekdays[t && !0 !== t && this._weekdays.isFormat.test(e) ? "format" : "standalone"]; return !0 === t ? Bt(n, this._week.dow) : t ? n[t.day()] : n }, vn.weekdaysMin = function(t) { return !0 === t ? Bt(this._weekdaysMin, this._week.dow) : t ? this._weekdaysMin[t.day()] : this._weekdaysMin }, vn.weekdaysShort = function(t) { return !0 === t ? Bt(this._weekdaysShort, this._week.dow) : t ? this._weekdaysShort[t.day()] : this._weekdaysShort }, vn.weekdaysParse = function(t, e, n) { var i, r, o; if (this._weekdaysParseExact) return Ht.call(this, t, e, n); for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), i = 0; i < 7; i++) { if (r = l([2e3, 1]).day(i), n && !this._fullWeekdaysParse[i] && (this._fullWeekdaysParse[i] = new RegExp("^" + this.weekdays(r, "").replace(".", "\\.?") + "$", "i"), this._shortWeekdaysParse[i] = new RegExp("^" + this.weekdaysShort(r, "").replace(".", "\\.?") + "$", "i"), this._minWeekdaysParse[i] = new RegExp("^" + this.weekdaysMin(r, "").replace(".", "\\.?") + "$", "i")), this._weekdaysParse[i] || (o = "^" + this.weekdays(r, "") + "|^" + this.weekdaysShort(r, "") + "|^" + this.weekdaysMin(r, ""), this._weekdaysParse[i] = new RegExp(o.replace(".", ""), "i")), n && "dddd" === e && this._fullWeekdaysParse[i].test(t)) return i; if (n && "ddd" === e && this._shortWeekdaysParse[i].test(t)) return i; if (n && "dd" === e && this._minWeekdaysParse[i].test(t)) return i; if (!n && this._weekdaysParse[i].test(t)) return i } }, vn.weekdaysRegex = function(t) { return this._weekdaysParseExact ? (s(this, "_weekdaysRegex") || Kt.call(this), t ? this._weekdaysStrictRegex : this._weekdaysRegex) : (s(this, "_weekdaysRegex") || (this._weekdaysRegex = Gt), this._weekdaysStrictRegex && t ? this._weekdaysStrictRegex : this._weekdaysRegex) }, vn.weekdaysShortRegex = function(t) { return this._weekdaysParseExact ? (s(this, "_weekdaysRegex") || Kt.call(this), t ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (s(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = Ut), this._weekdaysShortStrictRegex && t ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) }, vn.weekdaysMinRegex = function(t) { return this._weekdaysParseExact ? (s(this, "_weekdaysRegex") || Kt.call(this), t ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (s(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = Wt), this._weekdaysMinStrictRegex && t ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) }, vn.isPM = function(t) { return "p" === (t + "").toLowerCase().charAt(0) }, vn.meridiem = function(t, e, n) { return t > 11 ? n ? "pm" : "PM" : n ? "am" : "AM" }, ge("en", { eras: [{ since: "0001-01-01", until: 1 / 0, offset: 1, name: "Anno Domini", narrow: "AD", abbr: "AD" }, { since: "0000-12-31", until: -1 / 0, offset: 1, name: "Before Christ", narrow: "BC", abbr: "BC" }], dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: function(t) { var e = t % 10; return t + (1 === H(t % 100 / 10) ? "th" : 1 === e ? "st" : 2 === e ? "nd" : 3 === e ? "rd" : "th") } }), i.lang = _("moment.lang is deprecated. Use moment.locale instead.", ge), i.langData = _("moment.langData is deprecated. Use moment.localeData instead.", Ae);
                    var wn = Math.abs;

                    function _n(t, e, n, i) { var r = Ve(e, n); return t._milliseconds += i * r._milliseconds, t._days += i * r._days, t._months += i * r._months, t._bubble() }

                    function kn(t) { return t < 0 ? Math.floor(t) : Math.ceil(t) }

                    function xn(t) { return 4800 * t / 146097 }

                    function On(t) { return 146097 * t / 4800 }

                    function En(t) { return function() { return this.as(t) } }
                    var Tn = En("ms"),
                        Sn = En("s"),
                        Dn = En("m"),
                        Nn = En("h"),
                        Rn = En("d"),
                        Pn = En("w"),
                        Mn = En("M"),
                        jn = En("Q"),
                        Fn = En("y");

                    function zn(t) { return function() { return this.isValid() ? this._data[t] : NaN } }
                    var Ln = zn("milliseconds"),
                        Bn = zn("seconds"),
                        Zn = zn("minutes"),
                        Vn = zn("hours"),
                        Yn = zn("days"),
                        Gn = zn("months"),
                        Un = zn("years"),
                        Wn = Math.round,
                        Hn = { ss: 44, s: 45, m: 45, h: 22, d: 26, w: null, M: 11 };

                    function Kn(t, e, n, i, r) { return r.relativeTime(e || 1, !!n, t, i) }

                    function Qn(t, e, n, i) {
                        var r = Ve(t).abs(),
                            o = Wn(r.as("s")),
                            g = Wn(r.as("m")),
                            s = Wn(r.as("h")),
                            A = Wn(r.as("d")),
                            a = Wn(r.as("M")),
                            C = Wn(r.as("w")),
                            I = Wn(r.as("y")),
                            u = o <= n.ss && ["s", o] || o < n.s && ["ss", o] || g <= 1 && ["m"] || g < n.m && ["mm", g] || s <= 1 && ["h"] || s < n.h && ["hh", s] || A <= 1 && ["d"] || A < n.d && ["dd", A];
                        return null != n.w && (u = u || C <= 1 && ["w"] || C < n.w && ["ww", C]), (u = u || a <= 1 && ["M"] || a < n.M && ["MM", a] || I <= 1 && ["y"] || ["yy", I])[2] = e, u[3] = +t > 0, u[4] = i, Kn.apply(null, u)
                    }
                    var Xn = Math.abs;

                    function qn(t) { return (t > 0) - (t < 0) || +t }

                    function Jn() {
                        if (!this.isValid()) return this.localeData().invalidDate();
                        var t, e, n, i, r, o, g, s, A = Xn(this._milliseconds) / 1e3,
                            a = Xn(this._days),
                            C = Xn(this._months),
                            I = this.asSeconds();
                        return I ? (t = W(A / 60), e = W(t / 60), A %= 60, t %= 60, n = W(C / 12), C %= 12, i = A ? A.toFixed(3).replace(/\.?0+$/, "") : "", r = I < 0 ? "-" : "", o = qn(this._months) !== qn(I) ? "-" : "", g = qn(this._days) !== qn(I) ? "-" : "", s = qn(this._milliseconds) !== qn(I) ? "-" : "", r + "P" + (n ? o + n + "Y" : "") + (C ? o + C + "M" : "") + (a ? g + a + "D" : "") + (e || t || A ? "T" : "") + (e ? s + e + "H" : "") + (t ? s + t + "M" : "") + (A ? s + i + "S" : "")) : "P0D"
                    }
                    var $n = De.prototype;
                    return $n.isValid = function() { return this._isValid }, $n.abs = function() { var t = this._data; return this._milliseconds = wn(this._milliseconds), this._days = wn(this._days), this._months = wn(this._months), t.milliseconds = wn(t.milliseconds), t.seconds = wn(t.seconds), t.minutes = wn(t.minutes), t.hours = wn(t.hours), t.months = wn(t.months), t.years = wn(t.years), this }, $n.add = function(t, e) { return _n(this, t, e, 1) }, $n.subtract = function(t, e) { return _n(this, t, e, -1) }, $n.as = function(t) {
                            if (!this.isValid()) return NaN;
                            var e, n, i = this._milliseconds;
                            if ("month" === (t = Z(t)) || "quarter" === t || "year" === t) switch (e = this._days + i / 864e5, n = this._months + xn(e), t) {
                                case "month":
                                    return n;
                                case "quarter":
                                    return n / 3;
                                case "year":
                                    return n / 12
                            } else switch (e = this._days + Math.round(On(this._months)), t) {
                                case "week":
                                    return e / 7 + i / 6048e5;
                                case "day":
                                    return e + i / 864e5;
                                case "hour":
                                    return 24 * e + i / 36e5;
                                case "minute":
                                    return 1440 * e + i / 6e4;
                                case "second":
                                    return 86400 * e + i / 1e3;
                                case "millisecond":
                                    return Math.floor(864e5 * e) + i;
                                default:
                                    throw new Error("Unknown unit " + t)
                            }
                        }, $n.asMilliseconds = Tn, $n.asSeconds = Sn, $n.asMinutes = Dn, $n.asHours = Nn, $n.asDays = Rn, $n.asWeeks = Pn, $n.asMonths = Mn, $n.asQuarters = jn, $n.asYears = Fn, $n.valueOf = function() { return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * H(this._months / 12) : NaN }, $n._bubble = function() {
                            var t, e, n, i, r, o = this._milliseconds,
                                g = this._days,
                                s = this._months,
                                A = this._data;
                            return o >= 0 && g >= 0 && s >= 0 || o <= 0 && g <= 0 && s <= 0 || (o += 864e5 * kn(On(s) + g), g = 0, s = 0), A.milliseconds = o % 1e3, t = W(o / 1e3), A.seconds = t % 60, e = W(t / 60), A.minutes = e % 60, n = W(e / 60), A.hours = n % 24, g += W(n / 24), r = W(xn(g)), s += r, g -= kn(On(r)), i = W(s / 12), s %= 12, A.days = g, A.months = s, A.years = i, this
                        }, $n.clone = function() { return Ve(this) }, $n.get = function(t) { return t = Z(t), this.isValid() ? this[t + "s"]() : NaN }, $n.milliseconds = Ln, $n.seconds = Bn, $n.minutes = Zn, $n.hours = Vn, $n.days = Yn, $n.weeks = function() { return W(this.days() / 7) }, $n.months = Gn, $n.years = Un, $n.humanize = function(t, e) {
                            if (!this.isValid()) return this.localeData().invalidDate();
                            var n, i, r = !1,
                                o = Hn;
                            return "object" == typeof t && (e = t, t = !1), "boolean" == typeof t && (r = t), "object" == typeof e && (o = Object.assign({}, Hn, e), null != e.s && null == e.ss && (o.ss = e.s - 1)), n = this.localeData(), i = Qn(this, !r, o, n), r && (i = n.pastFuture(+this, i)), n.postformat(i)
                        }, $n.toISOString = Jn, $n.toString = Jn, $n.toJSON = Jn, $n.locale = $e, $n.localeData = en, $n.toIsoString = _("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", Jn), $n.lang = tn, j("X", 0, 0, "unix"), j("x", 0, 0, "valueOf"), lt("x", Ct), lt("X", /[+-]?\d+(\.\d{1,3})?/), vt("X", (function(t, e, n) { n._d = new Date(1e3 * parseFloat(t)) })), vt("x", (function(t, e, n) { n._d = new Date(H(t)) })), //! moment.js
                        i.version = "2.27.0", e = xe, i.fn = fn, i.min = function() { var t = [].slice.call(arguments, 0); return Te("isBefore", t) }, i.max = function() { var t = [].slice.call(arguments, 0); return Te("isAfter", t) }, i.now = function() { return Date.now ? Date.now() : +new Date }, i.utc = l, i.unix = function(t) { return xe(1e3 * t) }, i.months = function(t, e) { return bn(t, e, "months") }, i.isDate = I, i.locale = ge, i.invalid = f, i.duration = Ve, i.isMoment = m, i.weekdays = function(t, e, n) { return mn(t, e, n, "weekdays") }, i.parseZone = function() { return xe.apply(null, arguments).parseZone() }, i.localeData = Ae, i.isDuration = Ne, i.monthsShort = function(t, e) { return bn(t, e, "monthsShort") }, i.weekdaysMin = function(t, e, n) { return mn(t, e, n, "weekdaysMin") }, i.defineLocale = se, i.updateLocale = function(t, e) {
                            if (null != e) {
                                var n, i, r = te;
                                null != ee[t] && null != ee[t].parentLocale ? ee[t].set(T(ee[t]._config, e)) : (null != (i = oe(t)) && (r = i._config), e = T(r, e), null == i && (e.abbr = t), (n = new S(e)).parentLocale = ee[t], ee[t] = n), ge(t)
                            } else null != ee[t] && (null != ee[t].parentLocale ? (ee[t] = ee[t].parentLocale, t === ge() && ge(t)) : null != ee[t] && delete ee[t]);
                            return ee[t]
                        }, i.locales = function() { return k(ee) }, i.weekdaysShort = function(t, e, n) { return mn(t, e, n, "weekdaysShort") }, i.normalizeUnits = Z, i.relativeTimeRounding = function(t) { return void 0 === t ? Wn : "function" == typeof t && (Wn = t, !0) }, i.relativeTimeThreshold = function(t, e) { return void 0 !== Hn[t] && (void 0 === e ? Hn[t] : (Hn[t] = e, "s" === t && (Hn.ss = e - 1), !0)) }, i.calendarFormat = function(t, e) { var n = t.diff(e, "days", !0); return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse" }, i.prototype = fn, i.HTML5_FMT = { DATETIME_LOCAL: "YYYY-MM-DDTHH:mm", DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss", DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS", DATE: "YYYY-MM-DD", TIME: "HH:mm", TIME_SECONDS: "HH:mm:ss", TIME_MS: "HH:mm:ss.SSS", WEEK: "GGGG-[W]WW", MONTH: "YYYY-MM" }, i
                }()
            }));

            function vC(t, e) {
                var n = Hr(t);
                if (xn) {
                    var i = xn(t);
                    e && (i = sr(i).call(i, (function(e) { return Gt(t, e).enumerable }))), n.push.apply(n, i)
                }
                return n
            }

            function yC(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }

            function bC(t, e) {
                var n;
                if (void 0 === co || null == ei(t)) {
                    if (to(t) || (n = function(t, e) { var n; if (!t) return; if ("string" == typeof t) return mC(t, e); var i = oo(n = Object.prototype.toString.call(t)).call(n, 8, -1); "Object" === i && t.constructor && (i = t.constructor.name); if ("Map" === i || "Set" === i) return ui(t); if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return mC(t, e) }(t)) || e && t && "number" == typeof t.length) {
                        n && (t = n);
                        var i = 0,
                            r = function() {};
                        return { s: r, n: function() { return i >= t.length ? { done: !0 } : { done: !1, value: t[i++] } }, e: function(t) { throw t }, f: r }
                    }
                    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                }
                var o, g = !0,
                    s = !1;
                return { s: function() { n = ti(t) }, n: function() { var t = n.next(); return g = t.done, t }, e: function(t) { s = !0, o = t }, f: function() { try { g || null == n.return || n.return() } finally { if (s) throw o } } }
            }

            function mC(t, e) {
                (null == e || e > t.length) && (e = t.length);
                for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];
                return i
            }
            var wC = /^\/?Date\((-?\d+)/i;

            function _C(t) { return pC.isMoment(t) }

            function kC(t, e) {
                var n;
                if (void 0 !== t) {
                    if (null === t) return null;
                    if (!e) return t;
                    if ("string" != typeof e && !(e instanceof String)) throw new Error("Type must be a string");
                    switch (e) {
                        case "boolean":
                        case "Boolean":
                            return Boolean(t);
                        case "number":
                        case "Number":
                            return Do(t) && !isNaN(Date.parse(t)) ? pC(t).valueOf() : Number(t.valueOf());
                        case "string":
                        case "String":
                            return String(t);
                        case "Date":
                            if (To(t)) return new Date(t);
                            if (t instanceof Date) return new Date(t.valueOf());
                            if (_C(t)) return new Date(t.valueOf());
                            if (Do(t)) return (n = wC.exec(t)) ? new Date(Number(n[1])) : pC(new Date(t)).toDate();
                            throw new Error("Cannot convert object of type " + zo(t) + " to type Date");
                        case "Moment":
                            if (To(t)) return pC(t);
                            if (t instanceof Date) return pC(t.valueOf());
                            if (_C(t)) return pC(t);
                            if (Do(t)) return n = wC.exec(t), pC(n ? Number(n[1]) : t);
                            throw new Error("Cannot convert object of type " + zo(t) + " to type Date");
                        case "ISODate":
                            if (To(t)) return new Date(t);
                            if (t instanceof Date) return t.toISOString();
                            if (_C(t)) return t.toDate().toISOString();
                            if (Do(t)) return (n = wC.exec(t)) ? new Date(Number(n[1])).toISOString() : pC(t).format();
                            throw new Error("Cannot convert object of type " + zo(t) + " to type ISODate");
                        case "ASPDate":
                            if (To(t)) return "/Date(" + t + ")/";
                            if (t instanceof Date || _C(t)) return "/Date(" + t.valueOf() + ")/";
                            if (Do(t)) return "/Date(" + ((n = wC.exec(t)) ? new Date(Number(n[1])).valueOf() : new Date(t).valueOf()) + ")/";
                            throw new Error("Cannot convert object of type " + zo(t) + " to type ASPDate");
                        default:
                            throw new Error("Unknown type ".concat(e))
                    }
                }
            }

            function xC(t) { return "string" == typeof t || "number" == typeof t }
            var OC = function() {
                    function t(e) { DA(this, t), this._queue = [], this._timeout = null, this._extended = null, this.delay = null, this.max = 1 / 0, this.setOptions(e) }
                    return RA(t, [{ key: "setOptions", value: function(t) { t && void 0 !== t.delay && (this.delay = t.delay), t && void 0 !== t.max && (this.max = t.max), this._flushIfNeeded() } }, {
                        key: "destroy",
                        value: function() {
                            if (this.flush(), this._extended) {
                                for (var t = this._extended.object, e = this._extended.methods, n = 0; n < e.length; n++) {
                                    var i = e[n];
                                    i.original ? t[i.name] = i.original : delete t[i.name]
                                }
                                this._extended = null
                            }
                        }
                    }, {
                        key: "replace",
                        value: function(t, e) {
                            var n = this,
                                i = t[e];
                            if (!i) throw new Error("Method " + e + " undefined");
                            t[e] = function() {
                                for (var t = arguments.length, e = new Array(t), r = 0; r < t; r++) e[r] = arguments[r];
                                n.queue({ args: e, fn: i, context: this })
                            }
                        }
                    }, { key: "queue", value: function(t) { "function" == typeof t ? this._queue.push({ fn: t }) : this._queue.push(t), this._flushIfNeeded() } }, {
                        key: "_flushIfNeeded",
                        value: function() {
                            var t = this;
                            this._queue.length > this.max && this.flush(), null != this._timeout && (clearTimeout(this._timeout), this._timeout = null), this.queue.length > 0 && "number" == typeof this.delay && (this._timeout = BA((function() { t.flush() }), this.delay))
                        }
                    }, {
                        key: "flush",
                        value: function() {
                            var t, e;
                            zi(t = ag(e = this._queue).call(e, 0)).call(t, (function(t) { t.fn.apply(t.context || t.fn, t.args || []) }))
                        }
                    }], [{
                        key: "extend",
                        value: function(e, n) {
                            var i = new t(n);
                            if (void 0 !== e.flush) throw new Error("Target object already has a property flush");
                            e.flush = function() { i.flush() };
                            var r = [{ name: "flush", original: void 0 }];
                            if (n && n.replace)
                                for (var o = 0; o < n.replace.length; o++) {
                                    var g = n.replace[o];
                                    r.push({ name: g, original: e[g] }), i.replace(e, g)
                                }
                            return i._extended = { object: e, methods: r }, i
                        }
                    }]), t
                }(),
                EC = function() {
                    function t() { DA(this, t), this._subscribers = { "*": [], add: [], remove: [], update: [] }, this.subscribe = t.prototype.on, this.unsubscribe = t.prototype.off }
                    return RA(t, [{
                        key: "_trigger",
                        value: function(t, e, n) {
                            var i, r;
                            if ("*" === t) throw new Error("Cannot trigger event *");
                            zi(i = uo(r = []).call(r, ao(this._subscribers[t]), ao(this._subscribers["*"]))).call(i, (function(i) { i(t, e, null != n ? n : null) }))
                        }
                    }, { key: "on", value: function(t, e) { "function" == typeof e && this._subscribers[t].push(e) } }, {
                        key: "off",
                        value: function(t, e) {
                            var n;
                            this._subscribers[t] = sr(n = this._subscribers[t]).call(n, (function(t) { return t !== e }))
                        }
                    }]), t
                }(),
                TC = function() {
                    function t(e) { DA(this, t), this._pairs = e }
                    return RA(t, [{
                        key: nC,
                        value: eC.mark((function t() {
                            var e, n, i, r, o;
                            return eC.wrap((function(t) {
                                for (;;) switch (t.prev = t.next) {
                                    case 0:
                                        e = bC(this._pairs), t.prev = 1, e.s();
                                    case 3:
                                        if ((n = e.n()).done) { t.next = 9; break }
                                        return i = Gr(n.value, 2), r = i[0], o = i[1], t.next = 7, [r, o];
                                    case 7:
                                        t.next = 3;
                                        break;
                                    case 9:
                                        t.next = 14;
                                        break;
                                    case 11:
                                        t.prev = 11, t.t0 = t.catch(1), e.e(t.t0);
                                    case 14:
                                        return t.prev = 14, e.f(), t.finish(14);
                                    case 17:
                                    case "end":
                                        return t.stop()
                                }
                            }), t, this, [
                                [1, 11, 14, 17]
                            ])
                        }))
                    }, {
                        key: "entries",
                        value: eC.mark((function t() {
                            var e, n, i, r, o;
                            return eC.wrap((function(t) {
                                for (;;) switch (t.prev = t.next) {
                                    case 0:
                                        e = bC(this._pairs), t.prev = 1, e.s();
                                    case 3:
                                        if ((n = e.n()).done) { t.next = 9; break }
                                        return i = Gr(n.value, 2), r = i[0], o = i[1], t.next = 7, [r, o];
                                    case 7:
                                        t.next = 3;
                                        break;
                                    case 9:
                                        t.next = 14;
                                        break;
                                    case 11:
                                        t.prev = 11, t.t0 = t.catch(1), e.e(t.t0);
                                    case 14:
                                        return t.prev = 14, e.f(), t.finish(14);
                                    case 17:
                                    case "end":
                                        return t.stop()
                                }
                            }), t, this, [
                                [1, 11, 14, 17]
                            ])
                        }))
                    }, {
                        key: "keys",
                        value: eC.mark((function t() {
                            var e, n, i, r;
                            return eC.wrap((function(t) {
                                for (;;) switch (t.prev = t.next) {
                                    case 0:
                                        e = bC(this._pairs), t.prev = 1, e.s();
                                    case 3:
                                        if ((n = e.n()).done) { t.next = 9; break }
                                        return i = Gr(n.value, 1), r = i[0], t.next = 7, r;
                                    case 7:
                                        t.next = 3;
                                        break;
                                    case 9:
                                        t.next = 14;
                                        break;
                                    case 11:
                                        t.prev = 11, t.t0 = t.catch(1), e.e(t.t0);
                                    case 14:
                                        return t.prev = 14, e.f(), t.finish(14);
                                    case 17:
                                    case "end":
                                        return t.stop()
                                }
                            }), t, this, [
                                [1, 11, 14, 17]
                            ])
                        }))
                    }, {
                        key: "values",
                        value: eC.mark((function t() {
                            var e, n, i, r;
                            return eC.wrap((function(t) {
                                for (;;) switch (t.prev = t.next) {
                                    case 0:
                                        e = bC(this._pairs), t.prev = 1, e.s();
                                    case 3:
                                        if ((n = e.n()).done) { t.next = 9; break }
                                        return i = Gr(n.value, 2), r = i[1], t.next = 7, r;
                                    case 7:
                                        t.next = 3;
                                        break;
                                    case 9:
                                        t.next = 14;
                                        break;
                                    case 11:
                                        t.prev = 11, t.t0 = t.catch(1), e.e(t.t0);
                                    case 14:
                                        return t.prev = 14, e.f(), t.finish(14);
                                    case 17:
                                    case "end":
                                        return t.stop()
                                }
                            }), t, this, [
                                [1, 11, 14, 17]
                            ])
                        }))
                    }, { key: "toIdArray", value: function() { var t; return $r(t = ao(this._pairs)).call(t, (function(t) { return t[0] })) } }, { key: "toItemArray", value: function() { var t; return $r(t = ao(this._pairs)).call(t, (function(t) { return t[1] })) } }, { key: "toEntryArray", value: function() { return ao(this._pairs) } }, {
                        key: "toObjectMap",
                        value: function() {
                            var t, e = hi(null),
                                n = bC(this._pairs);
                            try {
                                for (n.s(); !(t = n.n()).done;) {
                                    var i = Gr(t.value, 2),
                                        r = i[0],
                                        o = i[1];
                                    e[r] = o
                                }
                            } catch (t) { n.e(t) } finally { n.f() }
                            return e
                        }
                    }, { key: "toMap", value: function() { return new tC(this._pairs) } }, { key: "toIdSet", value: function() { return new $a(this.toIdArray()) } }, { key: "toItemSet", value: function() { return new $a(this.toItemArray()) } }, { key: "cache", value: function() { return new t(ao(this._pairs)) } }, {
                        key: "distinct",
                        value: function(t) {
                            var e, n = new $a,
                                i = bC(this._pairs);
                            try {
                                for (i.s(); !(e = i.n()).done;) {
                                    var r = Gr(e.value, 2),
                                        o = r[0],
                                        g = r[1];
                                    n.add(t(g, o))
                                }
                            } catch (t) { i.e(t) } finally { i.f() }
                            return n
                        }
                    }, {
                        key: "filter",
                        value: function(e) {
                            var n = this._pairs;
                            return new t(pi({}, nC, eC.mark((function t() {
                                var i, r, o, g, s;
                                return eC.wrap((function(t) {
                                    for (;;) switch (t.prev = t.next) {
                                        case 0:
                                            i = bC(n), t.prev = 1, i.s();
                                        case 3:
                                            if ((r = i.n()).done) { t.next = 10; break }
                                            if (o = Gr(r.value, 2), g = o[0], s = o[1], !e(s, g)) { t.next = 8; break }
                                            return t.next = 8, [g, s];
                                        case 8:
                                            t.next = 3;
                                            break;
                                        case 10:
                                            t.next = 15;
                                            break;
                                        case 12:
                                            t.prev = 12, t.t0 = t.catch(1), i.e(t.t0);
                                        case 15:
                                            return t.prev = 15, i.f(), t.finish(15);
                                        case 18:
                                        case "end":
                                            return t.stop()
                                    }
                                }), t, null, [
                                    [1, 12, 15, 18]
                                ])
                            }))))
                        }
                    }, {
                        key: "forEach",
                        value: function(t) {
                            var e, n = bC(this._pairs);
                            try {
                                for (n.s(); !(e = n.n()).done;) {
                                    var i = Gr(e.value, 2),
                                        r = i[0];
                                    t(i[1], r)
                                }
                            } catch (t) { n.e(t) } finally { n.f() }
                        }
                    }, {
                        key: "map",
                        value: function(e) {
                            var n = this._pairs;
                            return new t(pi({}, nC, eC.mark((function t() {
                                var i, r, o, g, s;
                                return eC.wrap((function(t) {
                                    for (;;) switch (t.prev = t.next) {
                                        case 0:
                                            i = bC(n), t.prev = 1, i.s();
                                        case 3:
                                            if ((r = i.n()).done) { t.next = 9; break }
                                            return o = Gr(r.value, 2), g = o[0], s = o[1], t.next = 7, [g, e(s, g)];
                                        case 7:
                                            t.next = 3;
                                            break;
                                        case 9:
                                            t.next = 14;
                                            break;
                                        case 11:
                                            t.prev = 11, t.t0 = t.catch(1), i.e(t.t0);
                                        case 14:
                                            return t.prev = 14, i.f(), t.finish(14);
                                        case 17:
                                        case "end":
                                            return t.stop()
                                    }
                                }), t, null, [
                                    [1, 11, 14, 17]
                                ])
                            }))))
                        }
                    }, {
                        key: "max",
                        value: function(t) {
                            var e = ti(this._pairs),
                                n = e.next();
                            if (n.done) return null;
                            for (var i = n.value[1], r = t(n.value[1], n.value[0]); !(n = e.next()).done;) {
                                var o = Gr(n.value, 2),
                                    g = o[0],
                                    s = o[1],
                                    A = t(s, g);
                                A > r && (r = A, i = s)
                            }
                            return i
                        }
                    }, {
                        key: "min",
                        value: function(t) {
                            var e = ti(this._pairs),
                                n = e.next();
                            if (n.done) return null;
                            for (var i = n.value[1], r = t(n.value[1], n.value[0]); !(n = e.next()).done;) {
                                var o = Gr(n.value, 2),
                                    g = o[0],
                                    s = o[1],
                                    A = t(s, g);
                                A < r && (r = A, i = s)
                            }
                            return i
                        }
                    }, {
                        key: "reduce",
                        value: function(t, e) {
                            var n, i = bC(this._pairs);
                            try {
                                for (i.s(); !(n = i.n()).done;) {
                                    var r = Gr(n.value, 2),
                                        o = r[0];
                                    e = t(e, r[1], o)
                                }
                            } catch (t) { i.e(t) } finally { i.f() }
                            return e
                        }
                    }, {
                        key: "sort",
                        value: function(e) {
                            var n = this;
                            return new t(pi({}, nC, (function() {
                                var t;
                                return ti(ja(t = ao(n._pairs)).call(t, (function(t, n) {
                                    var i = Gr(t, 2),
                                        r = i[0],
                                        o = i[1],
                                        g = Gr(n, 2),
                                        s = g[0],
                                        A = g[1];
                                    return e(o, A, r, s)
                                })))
                            })))
                        }
                    }]), t
                }(),
                SC = function() { console.warn("Type coercion has been deprecated. Please, use data pipes instead. See https://visjs.github.io/vis-data/data/datapipe.html#TypeCoercion for more details with working migration example.") },
                DC = function(t) {
                    ka(n, t);
                    var e = yC(n);

                    function n(t, i) {
                        var r;
                        if (DA(this, n), r = e.call(this), t && !to(t) && (i = t, t = []), r._options = i || {}, r._data = new tC, r.length = 0, r._idProp = r._options.fieldId || "id", r._type = {}, r._options.type) {
                            SC();
                            for (var o = Hr(r._options.type), g = 0, s = o.length; g < s; g++) {
                                var A = o[g],
                                    a = r._options.type[A];
                                r._type[A] = "Date" == a || "ISODate" == a || "ASPDate" == a ? "Date" : a
                            }
                        }
                        return t && t.length && r.add(t), r.setOptions(i), r
                    }
                    return RA(n, [{ key: "setOptions", value: function(t) { t && void 0 !== t.queue && (!1 === t.queue ? this._queue && (this._queue.destroy(), delete this._queue) : (this._queue || (this._queue = OC.extend(this, { replace: ["add", "update", "remove"] })), t.queue && "object" === io(t.queue) && this._queue.setOptions(t.queue))) } }, {
                        key: "add",
                        value: function(t, e) {
                            var n, i = this,
                                r = [];
                            if (to(t)) { var o = $r(t).call(t, (function(t) { return t[i._idProp] })); if (WA(o).call(o, (function(t) { return i._data.has(t) }))) throw new Error("A duplicate id was found in the parameter array."); for (var g = 0, s = t.length; g < s; g++) n = this._addItem(t[g]), r.push(n) } else {
                                if (!t || "object" !== io(t)) throw new Error("Unknown dataType");
                                n = this._addItem(t), r.push(n)
                            }
                            return r.length && this._trigger("add", { items: r }, e), r
                        }
                    }, {
                        key: "update",
                        value: function(t, e) {
                            var n = this,
                                i = [],
                                r = [],
                                o = [],
                                g = [],
                                s = this._idProp,
                                A = function(t) {
                                    var e = t[s];
                                    if (null != e && n._data.has(e)) {
                                        var A = t,
                                            a = bt({}, n._data.get(e)),
                                            C = n._updateItem(A);
                                        r.push(C), g.push(A), o.push(a)
                                    } else {
                                        var I = n._addItem(t);
                                        i.push(I)
                                    }
                                };
                            if (to(t))
                                for (var a = 0, C = t.length; a < C; a++) t[a] && "object" === io(t[a]) ? A(t[a]) : console.warn("Ignoring input item, which is not an object at index " + a);
                            else {
                                if (!t || "object" !== io(t)) throw new Error("Unknown dataType");
                                A(t)
                            }
                            if (i.length && this._trigger("add", { items: i }, e), r.length) {
                                var I = { items: r, oldData: o, data: g };
                                this._trigger("update", I, e)
                            }
                            return uo(i).call(i, r)
                        }
                    }, {
                        key: "updateOnly",
                        value: function(t, e) {
                            var n, i = this;
                            to(t) || (t = [t]);
                            var r = $r(n = $r(t).call(t, (function(t) { var e = i._data.get(t[i._idProp]); if (null == e) throw new Error("Updating non-existent items is not allowed."); return { oldData: e, update: t } }))).call(n, (function(t) {
                                var e = t.oldData,
                                    n = t.update,
                                    r = e[i._idProp],
                                    o = function(t) { for (var e, n = arguments.length, i = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++) i[r - 1] = arguments[r]; return po.apply(void 0, uo(e = [{}, t]).call(e, i)) }(e, n);
                                return i._data.set(r, o), { id: r, oldData: e, updatedData: o }
                            }));
                            if (r.length) { var o = { items: $r(r).call(r, (function(t) { return t.id })), oldData: $r(r).call(r, (function(t) { return t.oldData })), data: $r(r).call(r, (function(t) { return t.updatedData })) }; return this._trigger("update", o, e), o.items }
                            return []
                        }
                    }, {
                        key: "get",
                        value: function(t, e) {
                            var n = void 0,
                                i = void 0,
                                r = void 0;
                            xC(t) ? (n = t, r = e) : to(t) ? (i = t, r = e) : r = t;
                            var o = r && "Object" === r.returnType ? "Object" : "Array",
                                g = r && r.type || this._options.type,
                                s = r && sr(r),
                                A = [],
                                a = null,
                                C = null,
                                I = null;
                            if (null != n)(a = this._getItem(n, g)) && s && !s(a) && (a = null);
                            else if (null != i)
                                for (var u = 0, c = i.length; u < c; u++) null == (a = this._getItem(i[u], g)) || s && !s(a) || A.push(a);
                            else
                                for (var l, h = 0, d = (C = ao(ba(l = this._data).call(l))).length; h < d; h++) I = C[h], null == (a = this._getItem(I, g)) || s && !s(a) || A.push(a);
                            if (r && r.order && null == n && this._sort(A, r.order), r && r.fields) {
                                var f = r.fields;
                                if (null != n && null != a) a = this._filterFields(a, f);
                                else
                                    for (var p = 0, v = A.length; p < v; p++) A[p] = this._filterFields(A[p], f)
                            }
                            if ("Object" == o) {
                                for (var y = {}, b = 0, m = A.length; b < m; b++) {
                                    var w = A[b];
                                    y[w[this._idProp]] = w
                                }
                                return y
                            }
                            return null != n ? a : A
                        }
                    }, {
                        key: "getIds",
                        value: function(t) {
                            var e, n, i = this._data,
                                r = t && sr(t),
                                o = t && t.order,
                                g = t && t.type || this._options.type,
                                s = ao(ba(i).call(i)),
                                A = [];
                            if (r)
                                if (o) {
                                    n = [];
                                    for (var a = 0, C = s.length; a < C; a++) {
                                        var I = s[a];
                                        r(e = this._getItem(I, g)) && n.push(e)
                                    }
                                    this._sort(n, o);
                                    for (var u = 0, c = n.length; u < c; u++) A.push(n[u][this._idProp])
                                } else
                                    for (var l = 0, h = s.length; l < h; l++) {
                                        var d = s[l];
                                        r(e = this._getItem(d, g)) && A.push(e[this._idProp])
                                    } else if (o) {
                                        n = [];
                                        for (var f = 0, p = s.length; f < p; f++) {
                                            var v = s[f];
                                            n.push(i.get(v))
                                        }
                                        this._sort(n, o);
                                        for (var y = 0, b = n.length; y < b; y++) A.push(n[y][this._idProp])
                                    } else
                                        for (var m = 0, w = s.length; m < w; m++) {
                                            var _ = s[m];
                                            e = i.get(_), A.push(e[this._idProp])
                                        }
                            return A
                        }
                    }, { key: "getDataSet", value: function() { return this } }, {
                        key: "forEach",
                        value: function(t, e) {
                            var n = e && sr(e),
                                i = e && e.type || this._options.type,
                                r = this._data,
                                o = ao(ba(r).call(r));
                            if (e && e.order)
                                for (var g = this.get(e), s = 0, A = g.length; s < A; s++) {
                                    var a = g[s];
                                    t(a, a[this._idProp])
                                } else
                                    for (var C = 0, I = o.length; C < I; C++) {
                                        var u = o[C],
                                            c = this._getItem(u, i);
                                        n && !n(c) || t(c, u)
                                    }
                        }
                    }, {
                        key: "map",
                        value: function(t, e) {
                            for (var n = e && sr(e), i = e && e.type || this._options.type, r = [], o = this._data, g = ao(ba(o).call(o)), s = 0, A = g.length; s < A; s++) {
                                var a = g[s],
                                    C = this._getItem(a, i);
                                n && !n(C) || r.push(t(C, a))
                            }
                            return e && e.order && this._sort(r, e.order), r
                        }
                    }, { key: "_filterFields", value: function(t, e) { var n; return t ? IC(n = to(e) ? e : Hr(e)).call(n, (function(e, n) { return e[n] = t[n], e }), {}) : t } }, {
                        key: "_sort",
                        value: function(t, e) {
                            if ("string" == typeof e) {
                                var n = e;
                                ja(t).call(t, (function(t, e) {
                                    var i = t[n],
                                        r = e[n];
                                    return i > r ? 1 : i < r ? -1 : 0
                                }))
                            } else {
                                if ("function" != typeof e) throw new TypeError("Order must be a function or a string");
                                ja(t).call(t, e)
                            }
                        }
                    }, {
                        key: "remove",
                        value: function(t, e) {
                            for (var n = [], i = [], r = to(t) ? t : [t], o = 0, g = r.length; o < g; o++) {
                                var s = this._remove(r[o]);
                                if (s) {
                                    var A = s[this._idProp];
                                    null != A && (n.push(A), i.push(s))
                                }
                            }
                            return n.length && this._trigger("remove", { items: n, oldData: i }, e), n
                        }
                    }, { key: "_remove", value: function(t) { var e; if (xC(t) ? e = t : t && "object" === io(t) && (e = t[this._idProp]), null != e && this._data.has(e)) { var n = this._data.get(e) || null; return this._data.delete(e), --this.length, n } return null } }, { key: "clear", value: function(t) { for (var e, n = ao(ba(e = this._data).call(e)), i = [], r = 0, o = n.length; r < o; r++) i.push(this._data.get(n[r])); return this._data.clear(), this.length = 0, this._trigger("remove", { items: n, oldData: i }, t), n } }, {
                        key: "max",
                        value: function(t) {
                            var e, n, i = null,
                                r = null,
                                o = bC(fa(e = this._data).call(e));
                            try {
                                for (o.s(); !(n = o.n()).done;) {
                                    var g = n.value,
                                        s = g[t];
                                    "number" == typeof s && (null == r || s > r) && (i = g, r = s)
                                }
                            } catch (t) { o.e(t) } finally { o.f() }
                            return i || null
                        }
                    }, {
                        key: "min",
                        value: function(t) {
                            var e, n, i = null,
                                r = null,
                                o = bC(fa(e = this._data).call(e));
                            try {
                                for (o.s(); !(n = o.n()).done;) {
                                    var g = n.value,
                                        s = g[t];
                                    "number" == typeof s && (null == r || s < r) && (i = g, r = s)
                                }
                            } catch (t) { o.e(t) } finally { o.f() }
                            return i || null
                        }
                    }, {
                        key: "distinct",
                        value: function(t) {
                            for (var e = this._data, n = ao(ba(e).call(e)), i = [], r = this._options.type && this._options.type[t] || null, o = 0, g = 0, s = n.length; g < s; g++) {
                                for (var A = n[g], a = e.get(A)[t], C = !1, I = 0; I < o; I++)
                                    if (i[I] == a) { C = !0; break }
                                C || void 0 === a || (i[o] = a, o++)
                            }
                            if (r)
                                for (var u = 0, c = i.length; u < c; u++) i[u] = kC(i[u], r);
                            return i
                        }
                    }, {
                        key: "_addItem",
                        value: function(t) {
                            var e = t[this._idProp];
                            if (null != e) { if (this._data.has(e)) throw new Error("Cannot add item: item with id " + e + " already exists") } else e = fC(), t[this._idProp] = e;
                            for (var n = {}, i = Hr(t), r = 0, o = i.length; r < o; r++) {
                                var g = i[r],
                                    s = this._type[g];
                                n[g] = kC(t[g], s)
                            }
                            return this._data.set(e, n), ++this.length, e
                        }
                    }, {
                        key: "_getItem",
                        value: function(t, e) {
                            var n, i = this._data.get(t);
                            if (!i) return null;
                            var r = Hr(i);
                            if (e) {
                                SC(), n = {};
                                for (var o = 0, g = r.length; o < g; o++) {
                                    var s = r[o],
                                        A = i[s];
                                    n[s] = kC(A, e[s])
                                }
                            } else n = function(t) {
                                for (var e = 1; e < arguments.length; e++) {
                                    var n, i = null != arguments[e] ? arguments[e] : {};
                                    if (e % 2) zi(n = vC(Object(i), !0)).call(n, (function(e) { pi(t, e, i[e]) }));
                                    else if (Lt) Nt(t, Lt(i));
                                    else {
                                        var r;
                                        zi(r = vC(Object(i))).call(r, (function(e) { St(t, e, Gt(i, e)) }))
                                    }
                                }
                                return t
                            }({}, i);
                            return null == n[this._idProp] && (n[this._idProp] = i.id), n
                        }
                    }, {
                        key: "_updateItem",
                        value: function(t) {
                            var e = t[this._idProp];
                            if (null == e) throw new Error("Cannot update item: item has no id (item: " + ca(t) + ")");
                            var n = this._data.get(e);
                            if (!n) throw new Error("Cannot update item: no item with id " + e + " found");
                            for (var i = Hr(t), r = 0, o = i.length; r < o; r++) {
                                var g = i[r],
                                    s = this._type[g];
                                n[g] = kC(t[g], s)
                            }
                            return e
                        }
                    }, {
                        key: "stream",
                        value: function(t) {
                            if (t) {
                                var e = this._data;
                                return new TC(pi({}, nC, eC.mark((function n() {
                                    var i, r, o, g;
                                    return eC.wrap((function(n) {
                                        for (;;) switch (n.prev = n.next) {
                                            case 0:
                                                i = bC(t), n.prev = 1, i.s();
                                            case 3:
                                                if ((r = i.n()).done) { n.next = 11; break }
                                                if (o = r.value, null == (g = e.get(o))) { n.next = 9; break }
                                                return n.next = 9, [o, g];
                                            case 9:
                                                n.next = 3;
                                                break;
                                            case 11:
                                                n.next = 16;
                                                break;
                                            case 13:
                                                n.prev = 13, n.t0 = n.catch(1), i.e(n.t0);
                                            case 16:
                                                return n.prev = 16, i.f(), n.finish(16);
                                            case 19:
                                            case "end":
                                                return n.stop()
                                        }
                                    }), n, null, [
                                        [1, 13, 16, 19]
                                    ])
                                }))))
                            }
                            var n;
                            return new TC(pi({}, nC, tt(n = ga(this._data)).call(n, this._data)))
                        }
                    }]), n
                }(EC),
                NC = function(t) {
                    ka(n, t);
                    var e = yC(n);

                    function n(t, i) { var r, o; return DA(this, n), (o = e.call(this)).length = 0, o._ids = new $a, o._options = i || {}, o._listener = tt(r = o._onEvent).call(r, qA(o)), o.setData(t), o }
                    return RA(n, [{
                        key: "setData",
                        value: function(t) {
                            if (this._data) {
                                this._data.off && this._data.off("*", this._listener);
                                var e = this._data.getIds({ filter: sr(this._options) }),
                                    n = this._data.get(e);
                                this._ids.clear(), this.length = 0, this._trigger("remove", { items: e, oldData: n })
                            }
                            if (null != t) {
                                this._data = t;
                                for (var i = this._data.getIds({ filter: sr(this._options) }), r = 0, o = i.length; r < o; r++) {
                                    var g = i[r];
                                    this._ids.add(g)
                                }
                                this.length = i.length, this._trigger("add", { items: i })
                            } else this._data = new DC;
                            this._data.on && this._data.on("*", this._listener)
                        }
                    }, {
                        key: "refresh",
                        value: function() {
                            for (var t = this._data.getIds({ filter: sr(this._options) }), e = ao(this._ids), n = {}, i = [], r = [], o = [], g = 0, s = t.length; g < s; g++) {
                                var A = t[g];
                                n[A] = !0, this._ids.has(A) || (i.push(A), this._ids.add(A))
                            }
                            for (var a = 0, C = e.length; a < C; a++) {
                                var I = e[a],
                                    u = this._data.get(I);
                                null == u ? console.error("If you see this, report it please.") : n[I] || (r.push(I), o.push(u), this._ids.delete(I))
                            }
                            this.length += i.length - r.length, i.length && this._trigger("add", { items: i }), r.length && this._trigger("remove", { items: r, oldData: o })
                        }
                    }, {
                        key: "get",
                        value: function(t, e) {
                            if (null == this._data) return null;
                            var n, i = null;
                            xC(t) || to(t) ? (i = t, n = e) : n = t;
                            var r = bt({}, this._options, n),
                                o = sr(this._options),
                                g = n && sr(n);
                            return o && g && (r.filter = function(t) { return o(t) && g(t) }), null == i ? this._data.get(r) : this._data.get(i, r)
                        }
                    }, {
                        key: "getIds",
                        value: function(t) {
                            if (this._data.length) {
                                var e, n = sr(this._options),
                                    i = null != t ? sr(t) : null;
                                return e = i ? n ? function(t) { return n(t) && i(t) } : i : n, this._data.getIds({ filter: e, order: t && t.order })
                            }
                            return []
                        }
                    }, {
                        key: "forEach",
                        value: function(t, e) {
                            if (this._data) {
                                var n, i, r = sr(this._options),
                                    o = e && sr(e);
                                i = o ? r ? function(t) { return r(t) && o(t) } : o : r, zi(n = this._data).call(n, t, { filter: i, order: e && e.order })
                            }
                        }
                    }, {
                        key: "map",
                        value: function(t, e) {
                            if (this._data) {
                                var n, i, r = sr(this._options),
                                    o = e && sr(e);
                                return i = o ? r ? function(t) { return r(t) && o(t) } : o : r, $r(n = this._data).call(n, t, { filter: i, order: e && e.order })
                            }
                            return []
                        }
                    }, { key: "getDataSet", value: function() { return this._data.getDataSet() } }, { key: "stream", value: function(t) { var e; return this._data.stream(t || pi({}, nC, tt(e = ba(this._ids)).call(e, this._ids))) } }, {
                        key: "dispose",
                        value: function() {
                            var t;
                            (null === (t = this._data) || void 0 === t ? void 0 : t.off) && this._data.off("*", this._listener);
                            var e = "This data view has already been disposed of.";
                            St(this, "_data", { get: function() { throw new Error(e) }, set: function() { throw new Error(e) }, configurable: !1 })
                        }
                    }, {
                        key: "_onEvent",
                        value: function(t, e, n) {
                            if (e && e.items && this._data) {
                                var i = e.items,
                                    r = [],
                                    o = [],
                                    g = [],
                                    s = [],
                                    A = [],
                                    a = [];
                                switch (t) {
                                    case "add":
                                        for (var C = 0, I = i.length; C < I; C++) {
                                            var u = i[C];
                                            this.get(u) && (this._ids.add(u), r.push(u))
                                        }
                                        break;
                                    case "update":
                                        for (var c = 0, l = i.length; c < l; c++) {
                                            var h = i[c];
                                            this.get(h) ? this._ids.has(h) ? (o.push(h), A.push(e.data[c]), s.push(e.oldData[c])) : (this._ids.add(h), r.push(h)) : this._ids.has(h) && (this._ids.delete(h), g.push(h), a.push(e.oldData[c]))
                                        }
                                        break;
                                    case "remove":
                                        for (var d = 0, f = i.length; d < f; d++) {
                                            var p = i[d];
                                            this._ids.has(p) && (this._ids.delete(p), g.push(p), a.push(e.oldData[d]))
                                        }
                                }
                                this.length += r.length - g.length, r.length && this._trigger("add", { items: r }, n), o.length && this._trigger("update", { items: o, oldData: s, data: A }, n), g.length && this._trigger("remove", { items: g, oldData: a }, n)
                            }
                        }
                    }]), n
                }(EC),
                RC = Ce.f,
                PC = A((function() { return !Object.getOwnPropertyNames(1) }));
            W({ target: "Object", stat: !0, forced: PC }, { getOwnPropertyNames: RC });
            var MC = F.Object,
                jC = function(t) { return MC.getOwnPropertyNames(t) },
                FC = _i.trim,
                zC = s.parseFloat,
                LC = 1 / zC(vi + "-0") != -1 / 0 ? function(t) {
                    var e = FC(String(t)),
                        n = zC(e);
                    return 0 === n && "-" == e.charAt(0) ? -0 : n
                } : zC;
            W({ global: !0, forced: parseFloat != LC }, { parseFloat: LC });
            var BC = F.parseFloat;

            function ZC(t, e) {
                var n = ["node", "edge", "label"],
                    i = !0,
                    r = ng(e, "chosen");
                if ("boolean" == typeof r) i = r;
                else if ("object" === io(r)) { if (-1 === pr(n).call(n, t)) throw new Error("choosify: subOption '" + t + "' should be one of '" + n.join("', '") + "'"); var o = ng(e, ["chosen", t]); "boolean" != typeof o && "function" != typeof o || (i = o) }
                return i
            }

            function VC(t, e, n) {
                if (t.width <= 0 || t.height <= 0) return !1;
                if (void 0 !== n) {
                    var i = { x: e.x - n.x, y: e.y - n.y };
                    if (0 !== n.angle) {
                        var r = -n.angle;
                        e = { x: Math.cos(r) * i.x - Math.sin(r) * i.y, y: Math.sin(r) * i.x + Math.cos(r) * i.y }
                    } else e = i
                }
                var o = t.x + t.width,
                    g = t.y + t.width;
                return t.left < e.x && o > e.x && t.top < e.y && g > e.y
            }

            function YC(t) { return "string" == typeof t && "" !== t }

            function GC(t, e, n, i) {
                var r = i.x,
                    o = i.y;
                if ("function" == typeof i.distanceToBorder) {
                    var g = i.distanceToBorder(t, e),
                        s = Math.sin(e) * g,
                        A = Math.cos(e) * g;
                    A === g ? (r += g, o = i.y) : s === g ? (r = i.x, o -= g) : (r += A, o -= s)
                } else i.shape.width > i.shape.height ? (r = i.x + .5 * i.shape.width, o = i.y - n) : (r = i.x + n, o = i.y - .5 * i.shape.height);
                return { x: r, y: o }
            }
            var UC = function() {
                    function t(e) { DA(this, t), this.measureText = e, this.current = 0, this.width = 0, this.height = 0, this.lines = [] }
                    return RA(t, [{
                        key: "_add",
                        value: function(t, e) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "normal";
                            void 0 === this.lines[t] && (this.lines[t] = { width: 0, height: 0, blocks: [] });
                            var i = e;
                            void 0 !== e && "" !== e || (i = " ");
                            var r = this.measureText(i, n),
                                o = bt({}, fa(r));
                            o.text = e, o.width = r.width, o.mod = n, void 0 !== e && "" !== e || (o.width = 0), this.lines[t].blocks.push(o), this.lines[t].width += o.width
                        }
                    }, { key: "curWidth", value: function() { var t = this.lines[this.current]; return void 0 === t ? 0 : t.width } }, {
                        key: "append",
                        value: function(t) {
                            var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "normal";
                            this._add(this.current, t, e)
                        }
                    }, {
                        key: "newLine",
                        value: function(t) {
                            var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "normal";
                            this._add(this.current, t, e), this.current++
                        }
                    }, {
                        key: "determineLineHeights",
                        value: function() {
                            for (var t = 0; t < this.lines.length; t++) {
                                var e = this.lines[t],
                                    n = 0;
                                if (void 0 !== e.blocks)
                                    for (var i = 0; i < e.blocks.length; i++) {
                                        var r = e.blocks[i];
                                        n < r.height && (n = r.height)
                                    }
                                e.height = n
                            }
                        }
                    }, {
                        key: "determineLabelSize",
                        value: function() {
                            for (var t = 0, e = 0, n = 0; n < this.lines.length; n++) {
                                var i = this.lines[n];
                                i.width > t && (t = i.width), e += i.height
                            }
                            this.width = t, this.height = e
                        }
                    }, {
                        key: "removeEmptyBlocks",
                        value: function() {
                            for (var t = [], e = 0; e < this.lines.length; e++) {
                                var n = this.lines[e];
                                if (0 !== n.blocks.length && (e !== this.lines.length - 1 || 0 !== n.width)) {
                                    var i = {};
                                    bt(i, n), i.blocks = [];
                                    for (var r = void 0, o = [], g = 0; g < n.blocks.length; g++) {
                                        var s = n.blocks[g];
                                        0 !== s.width ? o.push(s) : void 0 === r && (r = s)
                                    }
                                    0 === o.length && void 0 !== r && o.push(r), i.blocks = o, t.push(i)
                                }
                            }
                            return t
                        }
                    }, { key: "finalize", value: function() { this.determineLineHeights(), this.determineLabelSize(); var t = this.removeEmptyBlocks(); return { width: this.width, height: this.height, lines: t } } }]), t
                }(),
                WC = { "<b>": /<b>/, "<i>": /<i>/, "<code>": /<code>/, "</b>": /<\/b>/, "</i>": /<\/i>/, "</code>": /<\/code>/, "*": /\*/, _: /\_/, "`": /`/, afterBold: /[^\*]/, afterItal: /[^_]/, afterMono: /[^`]/ },
                HC = function() {
                    function t(e) { DA(this, t), this.text = e, this.bold = !1, this.ital = !1, this.mono = !1, this.spacing = !1, this.position = 0, this.buffer = "", this.modStack = [], this.blocks = [] }
                    return RA(t, [{ key: "mod", value: function() { return 0 === this.modStack.length ? "normal" : this.modStack[0] } }, { key: "modName", value: function() { return 0 === this.modStack.length ? "normal" : "mono" === this.modStack[0] ? "mono" : this.bold && this.ital ? "boldital" : this.bold ? "bold" : this.ital ? "ital" : void 0 } }, { key: "emitBlock", value: function() { this.spacing && (this.add(" "), this.spacing = !1), this.buffer.length > 0 && (this.blocks.push({ text: this.buffer, mod: this.modName() }), this.buffer = "") } }, { key: "add", value: function(t) { " " === t && (this.spacing = !0), this.spacing && (this.buffer += " ", this.spacing = !1), " " != t && (this.buffer += t) } }, { key: "parseWS", value: function(t) { return !!/[ \t]/.test(t) && (this.mono ? this.add(t) : this.spacing = !0, !0) } }, { key: "setTag", value: function(t) { this.emitBlock(), this[t] = !0, this.modStack.unshift(t) } }, { key: "unsetTag", value: function(t) { this.emitBlock(), this[t] = !1, this.modStack.shift() } }, { key: "parseStartTag", value: function(t, e) { return !(this.mono || this[t] || !this.match(e)) && (this.setTag(t), !0) } }, {
                        key: "match",
                        value: function(t) {
                            var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1],
                                n = this.prepareRegExp(t),
                                i = Gr(n, 2),
                                r = i[0],
                                o = i[1],
                                g = r.test(this.text.substr(this.position, o));
                            return g && e && (this.position += o - 1), g
                        }
                    }, { key: "parseEndTag", value: function(t, e, n) { var i = this.mod() === t; return !(!(i = "mono" === t ? i && this.mono : i && !this.mono) || !this.match(e)) && (void 0 !== n ? (this.position === this.text.length - 1 || this.match(n, !1)) && this.unsetTag(t) : this.unsetTag(t), !0) } }, { key: "replace", value: function(t, e) { return !!this.match(t) && (this.add(e), this.position += length - 1, !0) } }, {
                        key: "prepareRegExp",
                        value: function(t) {
                            var e, n;
                            if (t instanceof RegExp) n = t, e = 1;
                            else {
                                var i = WC[t];
                                n = void 0 !== i ? i : new RegExp(t), e = t.length
                            }
                            return [n, e]
                        }
                    }]), t
                }(),
                KC = function() {
                    function t(e, n, i, r) {
                        var o = this;
                        DA(this, t), this.ctx = e, this.parent = n, this.selected = i, this.hover = r;
                        this.lines = new UC((function(t, n) {
                            if (void 0 === t) return 0;
                            var g = o.parent.getFormattingValues(e, i, r, n),
                                s = 0;
                            "" !== t && (s = o.ctx.measureText(t).width);
                            return { width: s, values: g }
                        }))
                    }
                    return RA(t, [{
                        key: "process",
                        value: function(t) {
                            if (!YC(t)) return this.lines.finalize();
                            var e = this.parent.fontOptions;
                            t = (t = t.replace(/\r\n/g, "\n")).replace(/\r/g, "\n");
                            var n = String(t).split("\n"),
                                i = n.length;
                            if (e.multi)
                                for (var r = 0; r < i; r++) {
                                    var o = this.splitBlocks(n[r], e.multi);
                                    if (void 0 !== o)
                                        if (0 !== o.length) {
                                            if (e.maxWdt > 0)
                                                for (var g = 0; g < o.length; g++) {
                                                    var s = o[g].mod,
                                                        A = o[g].text;
                                                    this.splitStringIntoLines(A, s, !0)
                                                } else
                                                    for (var a = 0; a < o.length; a++) {
                                                        var C = o[a].mod,
                                                            I = o[a].text;
                                                        this.lines.append(I, C)
                                                    }
                                            this.lines.newLine()
                                        } else this.lines.newLine("")
                                } else if (e.maxWdt > 0)
                                    for (var u = 0; u < i; u++) this.splitStringIntoLines(n[u]);
                                else
                                    for (var c = 0; c < i; c++) this.lines.newLine(n[c]);
                            return this.lines.finalize()
                        }
                    }, { key: "decodeMarkupSystem", value: function(t) { var e = "none"; return "markdown" === t || "md" === t ? e = "markdown" : !0 !== t && "html" !== t || (e = "html"), e } }, {
                        key: "splitHtmlBlocks",
                        value: function(t) {
                            for (var e = new HC(t), n = function(t) { return !!/&/.test(t) && (e.replace(e.text, "&lt;", "<") || e.replace(e.text, "&amp;", "&") || e.add("&"), !0) }; e.position < e.text.length;) {
                                var i = e.text.charAt(e.position);
                                e.parseWS(i) || /</.test(i) && (e.parseStartTag("bold", "<b>") || e.parseStartTag("ital", "<i>") || e.parseStartTag("mono", "<code>") || e.parseEndTag("bold", "</b>") || e.parseEndTag("ital", "</i>") || e.parseEndTag("mono", "</code>")) || n(i) || e.add(i), e.position++
                            }
                            return e.emitBlock(), e.blocks
                        }
                    }, {
                        key: "splitMarkdownBlocks",
                        value: function(t) {
                            for (var e = this, n = new HC(t), i = !0, r = function(t) { return !!/\\/.test(t) && (n.position < e.text.length + 1 && (n.position++, t = e.text.charAt(n.position), / \t/.test(t) ? n.spacing = !0 : (n.add(t), i = !1)), !0) }; n.position < n.text.length;) {
                                var o = n.text.charAt(n.position);
                                n.parseWS(o) || r(o) || (i || n.spacing) && (n.parseStartTag("bold", "*") || n.parseStartTag("ital", "_") || n.parseStartTag("mono", "`")) || n.parseEndTag("bold", "*", "afterBold") || n.parseEndTag("ital", "_", "afterItal") || n.parseEndTag("mono", "`", "afterMono") || (n.add(o), i = !1), n.position++
                            }
                            return n.emitBlock(), n.blocks
                        }
                    }, { key: "splitBlocks", value: function(t, e) { var n = this.decodeMarkupSystem(e); return "none" === n ? [{ text: t, mod: "normal" }] : "markdown" === n ? this.splitMarkdownBlocks(t) : "html" === n ? this.splitHtmlBlocks(t) : void 0 } }, { key: "overMaxWidth", value: function(t) { var e = this.ctx.measureText(t).width; return this.lines.curWidth() + e > this.parent.fontOptions.maxWdt } }, {
                        key: "getLongestFit",
                        value: function(t) {
                            for (var e = "", n = 0; n < t.length;) {
                                var i = e + ("" === e ? "" : " ") + t[n];
                                if (this.overMaxWidth(i)) break;
                                e = i, n++
                            }
                            return n
                        }
                    }, { key: "getLongestFitWord", value: function(t) { for (var e = 0; e < t.length && !this.overMaxWidth(oo(t).call(t, 0, e));) e++; return e } }, {
                        key: "splitStringIntoLines",
                        value: function(t) {
                            var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "normal",
                                n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
                            this.parent.getFormattingValues(this.ctx, this.selected, this.hover, e);
                            for (var i = (t = (t = t.replace(/^( +)/g, "$1\r")).replace(/([^\r][^ ]*)( +)/g, "$1\r$2\r")).split("\r"); i.length > 0;) {
                                var r = this.getLongestFit(i);
                                if (0 === r) {
                                    var o = i[0],
                                        g = this.getLongestFitWord(o);
                                    this.lines.newLine(oo(o).call(o, 0, g), e), i[0] = oo(o).call(o, g)
                                } else {
                                    var s = r;
                                    " " === i[r - 1] ? r-- : " " === i[s] && s++;
                                    var A = oo(i).call(i, 0, r).join("");
                                    r == i.length && n ? this.lines.append(A, e) : this.lines.newLine(A, e), i = oo(i).call(i, s)
                                }
                            }
                        }
                    }]), t
                }(),
                QC = ["bold", "ital", "boldital", "mono"],
                XC = function() {
                    function t(e, n) {
                        var i = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
                        DA(this, t), this.body = e, this.pointToSelf = !1, this.baseSize = void 0, this.fontOptions = {}, this.setOptions(n), this.size = { top: 0, left: 0, width: 0, height: 0, yLine: 0 }, this.isEdgeLabel = i
                    }
                    return RA(t, [{
                        key: "setOptions",
                        value: function(t) {
                            if (this.elementOptions = t, this.initFontOptions(t.font), YC(t.label) ? this.labelDirty = !0 : t.label = void 0, void 0 !== t.font && null !== t.font)
                                if ("string" == typeof t.font) this.baseSize = this.fontOptions.size;
                                else if ("object" === io(t.font)) {
                                var e = t.font.size;
                                void 0 !== e && (this.baseSize = e)
                            }
                        }
                    }, {
                        key: "initFontOptions",
                        value: function(e) {
                            var n = this;
                            Vo(QC, (function(t) { n.fontOptions[t] = {} })), t.parseFontString(this.fontOptions, e) ? this.fontOptions.vadjust = 0 : Vo(e, (function(t, e) { null != t && "object" !== io(t) && (n.fontOptions[e] = t) }))
                        }
                    }, {
                        key: "constrain",
                        value: function(t) {
                            var e = { constrainWidth: !1, maxWdt: -1, minWdt: -1, constrainHeight: !1, minHgt: -1, valign: "middle" },
                                n = ng(t, "widthConstraint");
                            if ("number" == typeof n) e.maxWdt = Number(n), e.minWdt = Number(n);
                            else if ("object" === io(n)) { var i = ng(t, ["widthConstraint", "maximum"]); "number" == typeof i && (e.maxWdt = Number(i)); var r = ng(t, ["widthConstraint", "minimum"]); "number" == typeof r && (e.minWdt = Number(r)) }
                            var o = ng(t, "heightConstraint");
                            if ("number" == typeof o) e.minHgt = Number(o);
                            else if ("object" === io(o)) { var g = ng(t, ["heightConstraint", "minimum"]); "number" == typeof g && (e.minHgt = Number(g)); var s = ng(t, ["heightConstraint", "valign"]); "string" == typeof s && ("top" !== s && "bottom" !== s || (e.valign = s)) }
                            return e
                        }
                    }, { key: "update", value: function(t, e) { this.setOptions(t, !0), this.propagateFonts(e), Fo(this.fontOptions, this.constrain(e)), this.fontOptions.chooser = ZC("label", e) } }, {
                        key: "adjustSizes",
                        value: function(t) {
                            var e = t ? t.right + t.left : 0;
                            this.fontOptions.constrainWidth && (this.fontOptions.maxWdt -= e, this.fontOptions.minWdt -= e);
                            var n = t ? t.top + t.bottom : 0;
                            this.fontOptions.constrainHeight && (this.fontOptions.minHgt -= n)
                        }
                    }, { key: "addFontOptionsToPile", value: function(t, e) { for (var n = 0; n < e.length; ++n) this.addFontToPile(t, e[n]) } }, {
                        key: "addFontToPile",
                        value: function(t, e) {
                            if (void 0 !== e && void 0 !== e.font && null !== e.font) {
                                var n = e.font;
                                t.push(n)
                            }
                        }
                    }, {
                        key: "getBasicOptions",
                        value: function(e) {
                            for (var n = {}, i = 0; i < e.length; ++i) {
                                var r = e[i],
                                    o = {};
                                t.parseFontString(o, r) && (r = o), Vo(r, (function(t, e) { void 0 !== t && (Object.prototype.hasOwnProperty.call(n, e) || (-1 !== pr(QC).call(QC, e) ? n[e] = {} : n[e] = t)) }))
                            }
                            return n
                        }
                    }, { key: "getFontOption", value: function(e, n, i) { for (var r, o = 0; o < e.length; ++o) { var g = e[o]; if (Object.prototype.hasOwnProperty.call(g, n)) { if (null == (r = g[n])) continue; var s = {}; if (t.parseFontString(s, r) && (r = s), Object.prototype.hasOwnProperty.call(r, i)) return r[i] } } if (Object.prototype.hasOwnProperty.call(this.fontOptions, i)) return this.fontOptions[i]; throw new Error("Did not find value for multi-font for property: '" + i + "'") } }, {
                        key: "getFontOptions",
                        value: function(t, e) {
                            for (var n = {}, i = ["color", "size", "face", "mod", "vadjust"], r = 0; r < i.length; ++r) {
                                var o = i[r];
                                n[o] = this.getFontOption(t, e, o)
                            }
                            return n
                        }
                    }, {
                        key: "propagateFonts",
                        value: function(t) {
                            var e = this,
                                n = [];
                            this.addFontOptionsToPile(n, t), this.fontOptions = this.getBasicOptions(n);
                            for (var i = function(t) {
                                    var i = QC[t],
                                        r = e.fontOptions[i];
                                    Vo(e.getFontOptions(n, i), (function(t, e) { r[e] = t })), r.size = Number(r.size), r.vadjust = Number(r.vadjust)
                                }, r = 0; r < QC.length; ++r) i(r)
                        }
                    }, {
                        key: "draw",
                        value: function(t, e, n, i, r) {
                            var o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : "middle";
                            if (void 0 !== this.elementOptions.label) {
                                var g = this.fontOptions.size * this.body.view.scale;
                                this.elementOptions.label && g < this.elementOptions.scaling.label.drawThreshold - 1 || (g >= this.elementOptions.scaling.label.maxVisible && (g = Number(this.elementOptions.scaling.label.maxVisible) / this.body.view.scale), this.calculateLabelSize(t, i, r, e, n, o), this._drawBackground(t), this._drawText(t, e, this.size.yLine, o, g))
                            }
                        }
                    }, {
                        key: "_drawBackground",
                        value: function(t) {
                            if (void 0 !== this.fontOptions.background && "none" !== this.fontOptions.background) {
                                t.fillStyle = this.fontOptions.background;
                                var e = this.getSize();
                                t.fillRect(e.left, e.top, e.width, e.height)
                            }
                        }
                    }, {
                        key: "_drawText",
                        value: function(t, e, n) {
                            var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "middle",
                                r = arguments.length > 4 ? arguments[4] : void 0,
                                o = this._setAlignment(t, e, n, i),
                                g = Gr(o, 2);
                            e = g[0], n = g[1], t.textAlign = "left", e -= this.size.width / 2, this.fontOptions.valign && this.size.height > this.size.labelHeight && ("top" === this.fontOptions.valign && (n -= (this.size.height - this.size.labelHeight) / 2), "bottom" === this.fontOptions.valign && (n += (this.size.height - this.size.labelHeight) / 2));
                            for (var s = 0; s < this.lineCount; s++) {
                                var A = this.lines[s];
                                if (A && A.blocks) {
                                    var a = 0;
                                    this.isEdgeLabel || "center" === this.fontOptions.align ? a += (this.size.width - A.width) / 2 : "right" === this.fontOptions.align && (a += this.size.width - A.width);
                                    for (var C = 0; C < A.blocks.length; C++) {
                                        var I = A.blocks[C];
                                        t.font = I.font;
                                        var u = this._getColor(I.color, r, I.strokeColor),
                                            c = Gr(u, 2),
                                            l = c[0],
                                            h = c[1];
                                        I.strokeWidth > 0 && (t.lineWidth = I.strokeWidth, t.strokeStyle = h, t.lineJoin = "round"), t.fillStyle = l, I.strokeWidth > 0 && t.strokeText(I.text, e + a, n + I.vadjust), t.fillText(I.text, e + a, n + I.vadjust), a += I.width
                                    }
                                    n += A.height
                                }
                            }
                        }
                    }, { key: "_setAlignment", value: function(t, e, n, i) { if (this.isEdgeLabel && "horizontal" !== this.fontOptions.align && !1 === this.pointToSelf) { e = 0, n = 0; "top" === this.fontOptions.align ? (t.textBaseline = "alphabetic", n -= 4) : "bottom" === this.fontOptions.align ? (t.textBaseline = "hanging", n += 4) : t.textBaseline = "middle" } else t.textBaseline = i; return [e, n] } }, {
                        key: "_getColor",
                        value: function(t, e, n) {
                            var i = t || "#000000",
                                r = n || "#ffffff";
                            if (e <= this.elementOptions.scaling.label.drawThreshold) {
                                var o = Math.max(0, Math.min(1, 1 - (this.elementOptions.scaling.label.drawThreshold - e)));
                                i = Go(i, o), r = Go(r, o)
                            }
                            return [i, r]
                        }
                    }, {
                        key: "getTextSize",
                        value: function(t) {
                            var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
                                n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
                            return this._processLabel(t, e, n), { width: this.size.width, height: this.size.height, lineCount: this.lineCount }
                        }
                    }, {
                        key: "getSize",
                        value: function() {
                            var t = this.size.left,
                                e = this.size.top - 1;
                            if (this.isEdgeLabel) {
                                var n = .5 * -this.size.width;
                                switch (this.fontOptions.align) {
                                    case "middle":
                                        t = n, e = .5 * -this.size.height;
                                        break;
                                    case "top":
                                        t = n, e = -(this.size.height + 2);
                                        break;
                                    case "bottom":
                                        t = n, e = 2
                                }
                            }
                            return { left: t, top: e, width: this.size.width, height: this.size.height }
                        }
                    }, {
                        key: "calculateLabelSize",
                        value: function(t, e, n) {
                            var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,
                                r = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0,
                                o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : "middle";
                            this._processLabel(t, e, n), this.size.left = i - .5 * this.size.width, this.size.top = r - .5 * this.size.height, this.size.yLine = r + .5 * (1 - this.lineCount) * this.fontOptions.size, "hanging" === o && (this.size.top += .5 * this.fontOptions.size, this.size.top += 4, this.size.yLine += 4)
                        }
                    }, {
                        key: "getFormattingValues",
                        value: function(t, e, n, i) {
                            var r = function(t, e, n) { return "normal" === e ? "mod" === n ? "" : t[n] : void 0 !== t[e][n] ? t[e][n] : t[n] },
                                o = { color: r(this.fontOptions, i, "color"), size: r(this.fontOptions, i, "size"), face: r(this.fontOptions, i, "face"), mod: r(this.fontOptions, i, "mod"), vadjust: r(this.fontOptions, i, "vadjust"), strokeWidth: this.fontOptions.strokeWidth, strokeColor: this.fontOptions.strokeColor };
                            (e || n) && ("normal" === i && !0 === this.fontOptions.chooser && this.elementOptions.labelHighlightBold ? o.mod = "bold" : "function" == typeof this.fontOptions.chooser && this.fontOptions.chooser(o, this.elementOptions.id, e, n));
                            var g = "";
                            return void 0 !== o.mod && "" !== o.mod && (g += o.mod + " "), g += o.size + "px " + o.face, t.font = g.replace(/"/g, ""), o.font = t.font, o.height = o.size, o
                        }
                    }, { key: "differentState", value: function(t, e) { return t !== this.selectedState || e !== this.hoverState } }, { key: "_processLabelText", value: function(t, e, n, i) { return new KC(t, this, e, n).process(i) } }, {
                        key: "_processLabel",
                        value: function(t, e, n) {
                            if (!1 !== this.labelDirty || this.differentState(e, n)) {
                                var i = this._processLabelText(t, e, n, this.elementOptions.label);
                                this.fontOptions.minWdt > 0 && i.width < this.fontOptions.minWdt && (i.width = this.fontOptions.minWdt), this.size.labelHeight = i.height, this.fontOptions.minHgt > 0 && i.height < this.fontOptions.minHgt && (i.height = this.fontOptions.minHgt), this.lines = i.lines, this.lineCount = i.lines.length, this.size.width = i.width, this.size.height = i.height, this.selectedState = e, this.hoverState = n, this.labelDirty = !1
                            }
                        }
                    }, { key: "visible", value: function() { return 0 !== this.size.width && 0 !== this.size.height && void 0 !== this.elementOptions.label && !(this.fontOptions.size * this.body.view.scale < this.elementOptions.scaling.label.drawThreshold - 1) } }], [{ key: "parseFontString", value: function(t, e) { if (!e || "string" != typeof e) return !1; var n = e.split(" "); return t.size = +n[0].replace("px", ""), t.face = n[1], t.color = n[2], !0 } }]), t
                }();
            W({ target: "Array", proto: !0 }, { fill: function(t) { for (var e = ft(this), n = ot(e.length), i = arguments.length, r = At(i > 1 ? arguments[1] : void 0, n), o = i > 2 ? arguments[2] : void 0, g = void 0 === o ? n : At(o, n); g > r;) e[r++] = t; return e } });
            var qC = q("Array").fill,
                JC = Array.prototype,
                $C = function(t) { var e = t.fill; return t === JC || t instanceof Array && e === JC.fill ? qC : e },
                tI = function() {
                    function t(e, n, i) { DA(this, t), this.body = n, this.labelModule = i, this.setOptions(e), this.top = void 0, this.left = void 0, this.height = void 0, this.width = void 0, this.radius = void 0, this.margin = void 0, this.refreshNeeded = !0, this.boundingBox = { top: 0, left: 0, right: 0, bottom: 0 } }
                    return RA(t, [{ key: "setOptions", value: function(t) { this.options = t } }, { key: "_setMargins", value: function(t) { this.margin = {}, this.options.margin && ("object" == io(this.options.margin) ? (this.margin.top = this.options.margin.top, this.margin.right = this.options.margin.right, this.margin.bottom = this.options.margin.bottom, this.margin.left = this.options.margin.left) : (this.margin.top = this.options.margin, this.margin.right = this.options.margin, this.margin.bottom = this.options.margin, this.margin.left = this.options.margin)), t.adjustSizes(this.margin) } }, { key: "_distanceToBorder", value: function(t, e) { var n = this.options.borderWidth; return t && this.resize(t), Math.min(Math.abs(this.width / 2 / Math.cos(e)), Math.abs(this.height / 2 / Math.sin(e))) + n } }, { key: "enableShadow", value: function(t, e) { e.shadow && (t.shadowColor = e.shadowColor, t.shadowBlur = e.shadowSize, t.shadowOffsetX = e.shadowX, t.shadowOffsetY = e.shadowY) } }, { key: "disableShadow", value: function(t, e) { e.shadow && (t.shadowColor = "rgba(0,0,0,0)", t.shadowBlur = 0, t.shadowOffsetX = 0, t.shadowOffsetY = 0) } }, {
                        key: "enableBorderDashes",
                        value: function(t, e) {
                            if (!1 !== e.borderDashes)
                                if (void 0 !== t.setLineDash) { var n = e.borderDashes;!0 === n && (n = [5, 15]), t.setLineDash(n) } else console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."), this.options.shapeProperties.borderDashes = !1, e.borderDashes = !1
                        }
                    }, { key: "disableBorderDashes", value: function(t, e) {!1 !== e.borderDashes && (void 0 !== t.setLineDash ? t.setLineDash([0]) : (console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."), this.options.shapeProperties.borderDashes = !1, e.borderDashes = !1)) } }, { key: "needsRefresh", value: function(t, e) { return !0 === this.refreshNeeded ? (this.refreshNeeded = !1, !0) : void 0 === this.width || this.labelModule.differentState(t, e) } }, {
                        key: "initContextForDraw",
                        value: function(t, e) {
                            var n = e.borderWidth / this.body.view.scale;
                            t.lineWidth = Math.min(this.width, n), t.strokeStyle = e.borderColor, t.fillStyle = e.color
                        }
                    }, {
                        key: "performStroke",
                        value: function(t, e) {
                            var n = e.borderWidth / this.body.view.scale;
                            t.save(), n > 0 && (this.enableBorderDashes(t, e), t.stroke(), this.disableBorderDashes(t, e)), t.restore()
                        }
                    }, { key: "performFill", value: function(t, e) { t.save(), t.fillStyle = e.color, this.enableShadow(t, e), $C(t).call(t), this.disableShadow(t, e), t.restore(), this.performStroke(t, e) } }, { key: "_addBoundingBoxMargin", value: function(t) { this.boundingBox.left -= t, this.boundingBox.top -= t, this.boundingBox.bottom += t, this.boundingBox.right += t } }, { key: "_updateBoundingBox", value: function(t, e, n, i, r) { void 0 !== n && this.resize(n, i, r), this.left = t - this.width / 2, this.top = e - this.height / 2, this.boundingBox.left = this.left, this.boundingBox.top = this.top, this.boundingBox.bottom = this.top + this.height, this.boundingBox.right = this.left + this.width } }, { key: "updateBoundingBox", value: function(t, e, n, i, r) { this._updateBoundingBox(t, e, n, i, r) } }, {
                        key: "getDimensionsFromLabel",
                        value: function(t, e, n) {
                            this.textSize = this.labelModule.getTextSize(t, e, n);
                            var i = this.textSize.width,
                                r = this.textSize.height;
                            return 0 === i && (i = 14, r = 14), { width: i, height: r }
                        }
                    }]), t
                }();

            function eI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var nI = function(t) {
                ka(n, t);
                var e = eI(n);

                function n(t, i, r) { var o; return DA(this, n), (o = e.call(this, t, i, r))._setMargins(r), o }
                return RA(n, [{
                    key: "resize",
                    value: function(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.selected,
                            n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.hover;
                        if (this.needsRefresh(e, n)) {
                            var i = this.getDimensionsFromLabel(t, e, n);
                            this.width = i.width + this.margin.right + this.margin.left, this.height = i.height + this.margin.top + this.margin.bottom, this.radius = this.width / 2
                        }
                    }
                }, { key: "draw", value: function(t, e, n, i, r, o) { this.resize(t, i, r), this.left = e - this.width / 2, this.top = n - this.height / 2, this.initContextForDraw(t, o), wt(t, this.left, this.top, this.width, this.height, o.borderRadius), this.performFill(t, o), this.updateBoundingBox(e, n, t, i, r), this.labelModule.draw(t, this.left + this.textSize.width / 2 + this.margin.left, this.top + this.textSize.height / 2 + this.margin.top, i, r) } }, {
                    key: "updateBoundingBox",
                    value: function(t, e, n, i, r) {
                        this._updateBoundingBox(t, e, n, i, r);
                        var o = this.options.shapeProperties.borderRadius;
                        this._addBoundingBoxMargin(o)
                    }
                }, { key: "distanceToBorder", value: function(t, e) { t && this.resize(t); var n = this.options.borderWidth; return Math.min(Math.abs(this.width / 2 / Math.cos(e)), Math.abs(this.height / 2 / Math.sin(e))) + n } }]), n
            }(tI);

            function iI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var rI = function(t) {
                ka(n, t);
                var e = iI(n);

                function n(t, i, r) { var o; return DA(this, n), (o = e.call(this, t, i, r)).labelOffset = 0, o.selected = !1, o }
                return RA(n, [{ key: "setOptions", value: function(t, e, n) { this.options = t, void 0 === e && void 0 === n || this.setImages(e, n) } }, { key: "setImages", value: function(t, e) { e && this.selected ? (this.imageObj = e, this.imageObjAlt = t) : (this.imageObj = t, this.imageObjAlt = e) } }, {
                    key: "switchImages",
                    value: function(t) {
                        var e = t && !this.selected || !t && this.selected;
                        if (this.selected = t, void 0 !== this.imageObjAlt && e) {
                            var n = this.imageObj;
                            this.imageObj = this.imageObjAlt, this.imageObjAlt = n
                        }
                    }
                }, { key: "_getImagePadding", value: function() { var t = { top: 0, right: 0, bottom: 0, left: 0 }; if (this.options.imagePadding) { var e = this.options.imagePadding; "object" == io(e) ? (t.top = e.top, t.right = e.right, t.bottom = e.bottom, t.left = e.left) : (t.top = e, t.right = e, t.bottom = e, t.left = e) } return t } }, {
                    key: "_resizeImage",
                    value: function() {
                        var t, e;
                        if (!1 === this.options.shapeProperties.useImageSize) {
                            var n = 1,
                                i = 1;
                            this.imageObj.width && this.imageObj.height && (this.imageObj.width > this.imageObj.height ? n = this.imageObj.width / this.imageObj.height : i = this.imageObj.height / this.imageObj.width), t = 2 * this.options.size * n, e = 2 * this.options.size * i
                        } else {
                            var r = this._getImagePadding();
                            t = this.imageObj.width + r.left + r.right, e = this.imageObj.height + r.top + r.bottom
                        }
                        this.width = t, this.height = e, this.radius = .5 * this.width
                    }
                }, { key: "_drawRawCircle", value: function(t, e, n, i) { this.initContextForDraw(t, i), mt(t, e, n, i.size), this.performFill(t, i) } }, {
                    key: "_drawImageAtPosition",
                    value: function(t, e) {
                        if (0 != this.imageObj.width) {
                            t.globalAlpha = void 0 !== e.opacity ? e.opacity : 1, this.enableShadow(t, e);
                            var n = 1;
                            !0 === this.options.shapeProperties.interpolation && (n = this.imageObj.width / this.width / this.body.view.scale);
                            var i = this._getImagePadding(),
                                r = this.left + i.left,
                                o = this.top + i.top,
                                g = this.width - i.left - i.right,
                                s = this.height - i.top - i.bottom;
                            this.imageObj.drawImageAtPosition(t, n, r, o, g, s), this.disableShadow(t, e)
                        }
                    }
                }, {
                    key: "_drawImageLabel",
                    value: function(t, e, n, i, r) {
                        var o = 0;
                        if (void 0 !== this.height) {
                            o = .5 * this.height;
                            var g = this.labelModule.getTextSize(t, i, r);
                            g.lineCount >= 1 && (o += g.height / 2)
                        }
                        var s = n + o;
                        this.options.label && (this.labelOffset = o), this.labelModule.draw(t, e, s, i, r, "hanging")
                    }
                }]), n
            }(tI);

            function oI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var gI = function(t) {
                ka(n, t);
                var e = oI(n);

                function n(t, i, r) { var o; return DA(this, n), (o = e.call(this, t, i, r))._setMargins(r), o }
                return RA(n, [{
                    key: "resize",
                    value: function(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.selected,
                            n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.hover;
                        if (this.needsRefresh(e, n)) {
                            var i = this.getDimensionsFromLabel(t, e, n),
                                r = Math.max(i.width + this.margin.right + this.margin.left, i.height + this.margin.top + this.margin.bottom);
                            this.options.size = r / 2, this.width = r, this.height = r, this.radius = this.width / 2
                        }
                    }
                }, { key: "draw", value: function(t, e, n, i, r, o) { this.resize(t, i, r), this.left = e - this.width / 2, this.top = n - this.height / 2, this._drawRawCircle(t, e, n, o), this.updateBoundingBox(e, n), this.labelModule.draw(t, this.left + this.textSize.width / 2 + this.margin.left, n, i, r) } }, { key: "updateBoundingBox", value: function(t, e) { this.boundingBox.top = e - this.options.size, this.boundingBox.left = t - this.options.size, this.boundingBox.right = t + this.options.size, this.boundingBox.bottom = e + this.options.size } }, { key: "distanceToBorder", value: function(t, e) { return t && this.resize(t), .5 * this.width } }]), n
            }(rI);

            function sI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var AI = function(t) {
                ka(n, t);
                var e = sI(n);

                function n(t, i, r, o, g) { var s; return DA(this, n), (s = e.call(this, t, i, r)).setImages(o, g), s }
                return RA(n, [{
                    key: "resize",
                    value: function(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.selected,
                            n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.hover,
                            i = void 0 === this.imageObj.src || void 0 === this.imageObj.width || void 0 === this.imageObj.height;
                        if (i) { var r = 2 * this.options.size; return this.width = r, this.height = r, void(this.radius = .5 * this.width) }
                        this.needsRefresh(e, n) && this._resizeImage()
                    }
                }, {
                    key: "draw",
                    value: function(t, e, n, i, r, o) {
                        this.switchImages(i), this.resize();
                        var g = e,
                            s = n;
                        "top-left" === this.options.shapeProperties.coordinateOrigin ? (this.left = e, this.top = n, g += this.width / 2, s += this.height / 2) : (this.left = e - this.width / 2, this.top = n - this.height / 2), this._drawRawCircle(t, g, s, o), t.save(), t.clip(), this._drawImageAtPosition(t, o), t.restore(), this._drawImageLabel(t, g, s, i, r), this.updateBoundingBox(e, n)
                    }
                }, { key: "updateBoundingBox", value: function(t, e) { "top-left" === this.options.shapeProperties.coordinateOrigin ? (this.boundingBox.top = e, this.boundingBox.left = t, this.boundingBox.right = t + 2 * this.options.size, this.boundingBox.bottom = e + 2 * this.options.size) : (this.boundingBox.top = e - this.options.size, this.boundingBox.left = t - this.options.size, this.boundingBox.right = t + this.options.size, this.boundingBox.bottom = e + this.options.size), this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left), this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width), this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelOffset) } }, { key: "distanceToBorder", value: function(t, e) { return t && this.resize(t), .5 * this.width } }]), n
            }(rI);

            function aI(t, e) {
                var n = Hr(t);
                if (xn) {
                    var i = xn(t);
                    e && (i = sr(i).call(i, (function(e) { return Gt(t, e).enumerable }))), n.push.apply(n, i)
                }
                return n
            }

            function CI(t) {
                for (var e = 1; e < arguments.length; e++) {
                    var n, i = null != arguments[e] ? arguments[e] : {};
                    if (e % 2) zi(n = aI(Object(i), !0)).call(n, (function(e) { pi(t, e, i[e]) }));
                    else if (Lt) Nt(t, Lt(i));
                    else {
                        var r;
                        zi(r = aI(Object(i))).call(r, (function(e) { St(t, e, Gt(i, e)) }))
                    }
                }
                return t
            }

            function II(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var uI = function(t) {
                ka(n, t);
                var e = II(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{
                    key: "resize",
                    value: function(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.selected,
                            n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.hover,
                            i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : { size: this.options.size };
                        if (this.needsRefresh(e, n)) {
                            this.labelModule.getTextSize(t, e, n);
                            var r = 2 * i.size;
                            this.width = r, this.height = r, this.radius = .5 * this.width
                        }
                    }
                }, {
                    key: "_drawShape",
                    value: function(t, e, n, i, r, o, g, s, A) {
                        if (this.resize(t, o, g, s), this.left = i - this.width / 2, this.top = r - this.height / 2, "custom" === e) return t.save(), A({ ctx: t, x: i, y: r, state: { selected: o, hover: g }, style: CI({}, s), label: this.options.label }), void t.restore();
                        var a;
                        if (this.initContextForDraw(t, s), (a = e, Object.prototype.hasOwnProperty.call(Ot, a) ? Ot[a] : function(t) {
                                for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), i = 1; i < e; i++) n[i - 1] = arguments[i];
                                CanvasRenderingContext2D.prototype[a].call(t, n)
                            })(t, i, r, s.size), this.performFill(t, s), void 0 !== this.options.icon && void 0 !== this.options.icon.code && (t.font = (o ? "bold " : "") + this.height / 2 + "px " + (this.options.icon.face || "FontAwesome"), t.fillStyle = this.options.icon.color || "black", t.textAlign = "center", t.textBaseline = "middle", t.fillText(this.options.icon.code, i, r)), void 0 !== this.options.label) {
                            this.labelModule.calculateLabelSize(t, o, g, i, r, "hanging");
                            var C = r + .5 * this.height + .5 * this.labelModule.size.height;
                            this.labelModule.draw(t, i, C, o, g, "hanging")
                        }
                        this.updateBoundingBox(i, r)
                    }
                }, { key: "updateBoundingBox", value: function(t, e) { this.boundingBox.top = e - this.options.size, this.boundingBox.left = t - this.options.size, this.boundingBox.right = t + this.options.size, this.boundingBox.bottom = e + this.options.size, void 0 !== this.options.label && this.labelModule.size.width > 0 && (this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left), this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width), this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelModule.size.height)) } }]), n
            }(tI);

            function cI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var lI = function(t) {
                ka(n, t);
                var e = cI(n);

                function n(t, i, r, o) { var g; return DA(this, n), (g = e.call(this, t, i, r, o)).ctxRenderer = o, g }
                return RA(n, [{ key: "draw", value: function(t, e, n, i, r, o) { this._drawShape(t, "custom", 4, e, n, i, r, o, this.ctxRenderer) } }, { key: "distanceToBorder", value: function(t, e) { return this._distanceToBorder(t, e) } }]), n
            }(uI);

            function hI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var dI = function(t) {
                ka(n, t);
                var e = hI(n);

                function n(t, i, r) { var o; return DA(this, n), (o = e.call(this, t, i, r))._setMargins(r), o }
                return RA(n, [{
                    key: "resize",
                    value: function(t, e, n) {
                        if (this.needsRefresh(e, n)) {
                            var i = this.getDimensionsFromLabel(t, e, n).width + this.margin.right + this.margin.left;
                            this.width = i, this.height = i, this.radius = this.width / 2
                        }
                    }
                }, { key: "draw", value: function(t, e, n, i, r, o) { this.resize(t, i, r), this.left = e - this.width / 2, this.top = n - this.height / 2, this.initContextForDraw(t, o), kt(t, e - this.width / 2, n - this.height / 2, this.width, this.height), this.performFill(t, o), this.updateBoundingBox(e, n, t, i, r), this.labelModule.draw(t, this.left + this.textSize.width / 2 + this.margin.left, this.top + this.textSize.height / 2 + this.margin.top, i, r) } }, { key: "distanceToBorder", value: function(t, e) { return this._distanceToBorder(t, e) } }]), n
            }(tI);

            function fI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var pI = function(t) {
                ka(n, t);
                var e = fI(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{ key: "draw", value: function(t, e, n, i, r, o) { this._drawShape(t, "diamond", 4, e, n, i, r, o) } }, { key: "distanceToBorder", value: function(t, e) { return this._distanceToBorder(t, e) } }]), n
            }(uI);

            function vI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var yI = function(t) {
                ka(n, t);
                var e = vI(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{ key: "draw", value: function(t, e, n, i, r, o) { this._drawShape(t, "circle", 2, e, n, i, r, o) } }, { key: "distanceToBorder", value: function(t, e) { return t && this.resize(t), this.options.size } }]), n
            }(uI);

            function bI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var mI = function(t) {
                ka(n, t);
                var e = bI(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{
                    key: "resize",
                    value: function(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.selected,
                            n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.hover;
                        if (this.needsRefresh(e, n)) {
                            var i = this.getDimensionsFromLabel(t, e, n);
                            this.height = 2 * i.height, this.width = i.width + i.height, this.radius = .5 * this.width
                        }
                    }
                }, { key: "draw", value: function(t, e, n, i, r, o) { this.resize(t, i, r), this.left = e - .5 * this.width, this.top = n - .5 * this.height, this.initContextForDraw(t, o), _t(t, this.left, this.top, this.width, this.height), this.performFill(t, o), this.updateBoundingBox(e, n, t, i, r), this.labelModule.draw(t, e, n, i, r) } }, {
                    key: "distanceToBorder",
                    value: function(t, e) {
                        t && this.resize(t);
                        var n = .5 * this.width,
                            i = .5 * this.height,
                            r = Math.sin(e) * n,
                            o = Math.cos(e) * i;
                        return n * i / Math.sqrt(r * r + o * o)
                    }
                }]), n
            }(tI);

            function wI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var _I = function(t) {
                ka(n, t);
                var e = wI(n);

                function n(t, i, r) { var o; return DA(this, n), (o = e.call(this, t, i, r))._setMargins(r), o }
                return RA(n, [{ key: "resize", value: function(t, e, n) { this.needsRefresh(e, n) && (this.iconSize = { width: Number(this.options.icon.size), height: Number(this.options.icon.size) }, this.width = this.iconSize.width + this.margin.right + this.margin.left, this.height = this.iconSize.height + this.margin.top + this.margin.bottom, this.radius = .5 * this.width) } }, {
                    key: "draw",
                    value: function(t, e, n, i, r, o) {
                        if (this.resize(t, i, r), this.options.icon.size = this.options.icon.size || 50, this.left = e - this.width / 2, this.top = n - this.height / 2, this._icon(t, e, n, i, r, o), void 0 !== this.options.label) { this.labelModule.draw(t, this.left + this.iconSize.width / 2 + this.margin.left, n + this.height / 2 + 5, i) }
                        this.updateBoundingBox(e, n)
                    }
                }, { key: "updateBoundingBox", value: function(t, e) { if (this.boundingBox.top = e - .5 * this.options.icon.size, this.boundingBox.left = t - .5 * this.options.icon.size, this.boundingBox.right = t + .5 * this.options.icon.size, this.boundingBox.bottom = e + .5 * this.options.icon.size, void 0 !== this.options.label && this.labelModule.size.width > 0) { this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left), this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width), this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelModule.size.height + 5) } } }, {
                    key: "_icon",
                    value: function(t, e, n, i, r, o) {
                        var g = Number(this.options.icon.size);
                        void 0 !== this.options.icon.code ? (t.font = [null != this.options.icon.weight ? this.options.icon.weight : i ? "bold" : "", (null != this.options.icon.weight && i ? 5 : 0) + g + "px", this.options.icon.face].join(" "), t.fillStyle = this.options.icon.color || "black", t.textAlign = "center", t.textBaseline = "middle", this.enableShadow(t, o), t.fillText(this.options.icon.code, e, n), this.disableShadow(t, o)) : console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")
                    }
                }, { key: "distanceToBorder", value: function(t, e) { return this._distanceToBorder(t, e) } }]), n
            }(tI);

            function kI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var xI = function(t) {
                ka(n, t);
                var e = kI(n);

                function n(t, i, r, o, g) { var s; return DA(this, n), (s = e.call(this, t, i, r)).setImages(o, g), s }
                return RA(n, [{
                    key: "resize",
                    value: function(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.selected,
                            n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.hover,
                            i = void 0 === this.imageObj.src || void 0 === this.imageObj.width || void 0 === this.imageObj.height;
                        if (i) { var r = 2 * this.options.size; return this.width = r, void(this.height = r) }
                        this.needsRefresh(e, n) && this._resizeImage()
                    }
                }, {
                    key: "draw",
                    value: function(t, e, n, i, r, o) {
                        t.save(), this.switchImages(i), this.resize();
                        var g = e,
                            s = n;
                        if ("top-left" === this.options.shapeProperties.coordinateOrigin ? (this.left = e, this.top = n, g += this.width / 2, s += this.height / 2) : (this.left = e - this.width / 2, this.top = n - this.height / 2), !0 === this.options.shapeProperties.useBorderWithImage) {
                            var A = this.options.borderWidth,
                                a = this.options.borderWidthSelected || 2 * this.options.borderWidth,
                                C = (i ? a : A) / this.body.view.scale;
                            t.lineWidth = Math.min(this.width, C), t.beginPath();
                            var I = i ? this.options.color.highlight.border : r ? this.options.color.hover.border : this.options.color.border,
                                u = i ? this.options.color.highlight.background : r ? this.options.color.hover.background : this.options.color.background;
                            void 0 !== o.opacity && (I = Go(I, o.opacity), u = Go(u, o.opacity)), t.strokeStyle = I, t.fillStyle = u, t.rect(this.left - .5 * t.lineWidth, this.top - .5 * t.lineWidth, this.width + t.lineWidth, this.height + t.lineWidth), $C(t).call(t), this.performStroke(t, o), t.closePath()
                        }
                        this._drawImageAtPosition(t, o), this._drawImageLabel(t, g, s, i, r), this.updateBoundingBox(e, n), t.restore()
                    }
                }, { key: "updateBoundingBox", value: function(t, e) { this.resize(), "top-left" === this.options.shapeProperties.coordinateOrigin ? (this.left = t, this.top = e) : (this.left = t - this.width / 2, this.top = e - this.height / 2), this.boundingBox.left = this.left, this.boundingBox.top = this.top, this.boundingBox.bottom = this.top + this.height, this.boundingBox.right = this.left + this.width, void 0 !== this.options.label && this.labelModule.size.width > 0 && (this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left), this.boundingBox.right = Math.max(this.boundingBox.right, this.labelModule.size.left + this.labelModule.size.width), this.boundingBox.bottom = Math.max(this.boundingBox.bottom, this.boundingBox.bottom + this.labelOffset)) } }, { key: "distanceToBorder", value: function(t, e) { return this._distanceToBorder(t, e) } }]), n
            }(rI);

            function OI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var EI = function(t) {
                ka(n, t);
                var e = OI(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{ key: "draw", value: function(t, e, n, i, r, o) { this._drawShape(t, "square", 2, e, n, i, r, o) } }, { key: "distanceToBorder", value: function(t, e) { return this._distanceToBorder(t, e) } }]), n
            }(uI);

            function TI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var SI = function(t) {
                ka(n, t);
                var e = TI(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{ key: "draw", value: function(t, e, n, i, r, o) { this._drawShape(t, "hexagon", 4, e, n, i, r, o) } }, { key: "distanceToBorder", value: function(t, e) { return this._distanceToBorder(t, e) } }]), n
            }(uI);

            function DI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var NI = function(t) {
                ka(n, t);
                var e = DI(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{ key: "draw", value: function(t, e, n, i, r, o) { this._drawShape(t, "star", 4, e, n, i, r, o) } }, { key: "distanceToBorder", value: function(t, e) { return this._distanceToBorder(t, e) } }]), n
            }(uI);

            function RI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var PI = function(t) {
                ka(n, t);
                var e = RI(n);

                function n(t, i, r) { var o; return DA(this, n), (o = e.call(this, t, i, r))._setMargins(r), o }
                return RA(n, [{ key: "resize", value: function(t, e, n) { this.needsRefresh(e, n) && (this.textSize = this.labelModule.getTextSize(t, e, n), this.width = this.textSize.width + this.margin.right + this.margin.left, this.height = this.textSize.height + this.margin.top + this.margin.bottom, this.radius = .5 * this.width) } }, { key: "draw", value: function(t, e, n, i, r, o) { this.resize(t, i, r), this.left = e - this.width / 2, this.top = n - this.height / 2, this.enableShadow(t, o), this.labelModule.draw(t, this.left + this.textSize.width / 2 + this.margin.left, this.top + this.textSize.height / 2 + this.margin.top, i, r), this.disableShadow(t, o), this.updateBoundingBox(e, n, t, i, r) } }, { key: "distanceToBorder", value: function(t, e) { return this._distanceToBorder(t, e) } }]), n
            }(tI);

            function MI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var jI = function(t) {
                ka(n, t);
                var e = MI(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{ key: "draw", value: function(t, e, n, i, r, o) { this._drawShape(t, "triangle", 3, e, n, i, r, o) } }, { key: "distanceToBorder", value: function(t, e) { return this._distanceToBorder(t, e) } }]), n
            }(uI);

            function FI(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var zI, LI = function(t) {
                    ka(n, t);
                    var e = FI(n);

                    function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                    return RA(n, [{ key: "draw", value: function(t, e, n, i, r, o) { this._drawShape(t, "triangleDown", 3, e, n, i, r, o) } }, { key: "distanceToBorder", value: function(t, e) { return this._distanceToBorder(t, e) } }]), n
                }(uI),
                BI = !1,
                ZI = "background: #FFeeee; color: #dd0000",
                VI = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{ key: "validate", value: function(e, n, i) { BI = !1, zI = n; var r = n; return void 0 !== i && (r = n[i]), t.parse(e, r, []), BI } }, { key: "parse", value: function(e, n, i) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.check(r, e, n, i) } }, {
                        key: "check",
                        value: function(e, n, i, r) {
                            if (void 0 !== i[e] || void 0 !== i.__any__) {
                                var o = e,
                                    g = !0;
                                void 0 === i[e] && void 0 !== i.__any__ && (o = "__any__", g = "object" === t.getType(n[e]));
                                var s = i[o];
                                g && void 0 !== s.__type__ && (s = s.__type__), t.checkFields(e, n, i, o, s, r)
                            } else t.getSuggestion(e, i, r)
                        }
                    }, {
                        key: "checkFields",
                        value: function(e, n, i, r, o, g) {
                            var s = function(n) { console.log("%c" + n + t.printLocation(g, e), ZI) },
                                A = t.getType(n[e]),
                                a = o[A];
                            void 0 !== a ? "array" === t.getType(a) && -1 === pr(a).call(a, n[e]) ? (s('Invalid option detected in "' + e + '". Allowed values are:' + t.print(a) + ' not "' + n[e] + '". '), BI = !0) : "object" === A && "__any__" !== r && (g = Lo(g, e), t.parse(n[e], i[r], g)) : void 0 === o.any && (s('Invalid type received for "' + e + '". Expected: ' + t.print(Hr(o)) + ". Received [" + A + '] "' + n[e] + '"'), BI = !0)
                        }
                    }, { key: "getType", value: function(t) { var e = io(t); return "object" === e ? null === t ? "null" : t instanceof Boolean ? "boolean" : t instanceof Number ? "number" : t instanceof String ? "string" : to(t) ? "array" : t instanceof Date ? "date" : void 0 !== t.nodeType ? "dom" : !0 === t._isAMomentObject ? "moment" : "object" : "number" === e ? "number" : "boolean" === e ? "boolean" : "string" === e ? "string" : void 0 === e ? "undefined" : e } }, {
                        key: "getSuggestion",
                        value: function(e, n, i) {
                            var r, o = t.findInOptions(e, n, i, !1),
                                g = t.findInOptions(e, zI, [], !0);
                            r = void 0 !== o.indexMatch ? " in " + t.printLocation(o.path, e, "") + 'Perhaps it was incomplete? Did you mean: "' + o.indexMatch + '"?\n\n' : g.distance <= 4 && o.distance > g.distance ? " in " + t.printLocation(o.path, e, "") + "Perhaps it was misplaced? Matching option found at: " + t.printLocation(g.path, g.closestMatch, "") : o.distance <= 8 ? '. Did you mean "' + o.closestMatch + '"?' + t.printLocation(o.path, e) : ". Did you mean one of these: " + t.print(Hr(n)) + t.printLocation(i, e), console.log('%cUnknown option detected: "' + e + '"' + r, ZI), BI = !0
                        }
                    }, {
                        key: "findInOptions",
                        value: function(e, n, i) {
                            var r = arguments.length > 3 && void 0 !== arguments[3] && arguments[3],
                                o = 1e9,
                                g = "",
                                s = [],
                                A = e.toLowerCase(),
                                a = void 0;
                            for (var C in n) {
                                var I = void 0;
                                if (void 0 !== n[C].__type__ && !0 === r) {
                                    var u = t.findInOptions(e, n[C], Lo(i, C));
                                    o > u.distance && (g = u.closestMatch, s = u.path, o = u.distance, a = u.indexMatch)
                                } else { var c; - 1 !== pr(c = C.toLowerCase()).call(c, A) && (a = C), o > (I = t.levenshteinDistance(e, C)) && (g = C, s = Bo(i), o = I) }
                            }
                            return { closestMatch: g, path: s, distance: o, indexMatch: a }
                        }
                    }, {
                        key: "printLocation",
                        value: function(t, e) {
                            for (var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "Problem value found at: \n", i = "\n\n" + n + "options = {\n", r = 0; r < t.length; r++) {
                                for (var o = 0; o < r + 1; o++) i += "  ";
                                i += t[r] + ": {\n"
                            }
                            for (var g = 0; g < t.length + 1; g++) i += "  ";
                            i += e + "\n";
                            for (var s = 0; s < t.length + 1; s++) {
                                for (var A = 0; A < t.length - s; A++) i += "  ";
                                i += "}\n"
                            }
                            return i + "\n\n"
                        }
                    }, { key: "print", value: function(t) { return ca(t).replace(/(\")|(\[)|(\])|(,"__type__")/g, "").replace(/(\,)/g, ", ") } }, {
                        key: "levenshteinDistance",
                        value: function(t, e) {
                            if (0 === t.length) return e.length;
                            if (0 === e.length) return t.length;
                            var n, i, r = [];
                            for (n = 0; n <= e.length; n++) r[n] = [n];
                            for (i = 0; i <= t.length; i++) r[0][i] = i;
                            for (n = 1; n <= e.length; n++)
                                for (i = 1; i <= t.length; i++) e.charAt(n - 1) == t.charAt(i - 1) ? r[n][i] = r[n - 1][i - 1] : r[n][i] = Math.min(r[n - 1][i - 1] + 1, Math.min(r[n][i - 1] + 1, r[n - 1][i] + 1));
                            return r[e.length][t.length]
                        }
                    }]), t
                }();

            function YI(t, e) {
                var n = Hr(t);
                if (xn) {
                    var i = xn(t);
                    e && (i = sr(i).call(i, (function(e) { return Gt(t, e).enumerable }))), n.push.apply(n, i)
                }
                return n
            }

            function GI(t) {
                for (var e = 1; e < arguments.length; e++) {
                    var n, i = null != arguments[e] ? arguments[e] : {};
                    if (e % 2) zi(n = YI(Object(i), !0)).call(n, (function(e) { pi(t, e, i[e]) }));
                    else if (Lt) Nt(t, Lt(i));
                    else {
                        var r;
                        zi(r = YI(Object(i))).call(r, (function(e) { St(t, e, Gt(i, e)) }))
                    }
                }
                return t
            }
            var UI = function() {
                function t(e, n, i, r, o, g) { DA(this, t), this.options = $o(o), this.globalOptions = o, this.defaultOptions = g, this.body = n, this.edges = [], this.id = void 0, this.imagelist = i, this.grouplist = r, this.x = void 0, this.y = void 0, this.baseSize = this.options.size, this.baseFontSize = this.options.font.size, this.predefinedPosition = !1, this.selected = !1, this.hover = !1, this.labelModule = new XC(this.body, this.options, !1), this.setOptions(e) }
                return RA(t, [{ key: "attachEdge", value: function(t) { var e; - 1 === pr(e = this.edges).call(e, t) && this.edges.push(t) } }, { key: "detachEdge", value: function(t) { var e, n, i = pr(e = this.edges).call(e, t); - 1 != i && ag(n = this.edges).call(n, i, 1) } }, {
                    key: "setOptions",
                    value: function(e) {
                        var n = this.options.shape;
                        if (e) {
                            if (void 0 !== e.color && (this._localColor = e.color), void 0 !== e.id && (this.id = e.id), void 0 === this.id) throw new Error("Node must have an id");
                            t.checkMass(e, this.id), void 0 !== e.x && (null === e.x ? (this.x = void 0, this.predefinedPosition = !1) : (this.x = Yi(e.x), this.predefinedPosition = !0)), void 0 !== e.y && (null === e.y ? (this.y = void 0, this.predefinedPosition = !1) : (this.y = Yi(e.y), this.predefinedPosition = !0)), void 0 !== e.size && (this.baseSize = e.size), void 0 !== e.value && (e.value = BC(e.value)), t.parseOptions(this.options, e, !0, this.globalOptions, this.grouplist);
                            var i = [e, this.options, this.defaultOptions];
                            return this.chooser = ZC("node", i), this._load_images(), this.updateLabelModule(e), void 0 !== e.opacity && t.checkOpacity(e.opacity) && (this.options.opacity = e.opacity), this.updateShape(n), void 0 !== e.hidden || void 0 !== e.physics
                        }
                    }
                }, {
                    key: "_load_images",
                    value: function() {
                        if (("circularImage" === this.options.shape || "image" === this.options.shape) && void 0 === this.options.image) throw new Error("Option image must be defined for node type '" + this.options.shape + "'");
                        if (void 0 !== this.options.image) {
                            if (void 0 === this.imagelist) throw new Error("Internal Error: No images provided");
                            if ("string" == typeof this.options.image) this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage, this.id);
                            else {
                                if (void 0 === this.options.image.unselected) throw new Error("No unselected image provided");
                                this.imageObj = this.imagelist.load(this.options.image.unselected, this.options.brokenImage, this.id), void 0 !== this.options.image.selected ? this.imageObjAlt = this.imagelist.load(this.options.image.selected, this.options.brokenImage, this.id) : this.imageObjAlt = void 0
                            }
                        }
                    }
                }, {
                    key: "getFormattingValues",
                    value: function() {
                        var t = { color: this.options.color.background, opacity: this.options.opacity, borderWidth: this.options.borderWidth, borderColor: this.options.color.border, size: this.options.size, borderDashes: this.options.shapeProperties.borderDashes, borderRadius: this.options.shapeProperties.borderRadius, shadow: this.options.shadow.enabled, shadowColor: this.options.shadow.color, shadowSize: this.options.shadow.size, shadowX: this.options.shadow.x, shadowY: this.options.shadow.y };
                        if (this.selected || this.hover ? !0 === this.chooser ? this.selected ? (t.borderWidth *= 2, t.color = this.options.color.highlight.background, t.borderColor = this.options.color.highlight.border, t.shadow = this.options.shadow.enabled) : this.hover && (t.color = this.options.color.hover.background, t.borderColor = this.options.color.hover.border, t.shadow = this.options.shadow.enabled) : "function" == typeof this.chooser && (this.chooser(t, this.options.id, this.selected, this.hover), !1 === t.shadow && (t.shadowColor === this.options.shadow.color && t.shadowSize === this.options.shadow.size && t.shadowX === this.options.shadow.x && t.shadowY === this.options.shadow.y || (t.shadow = !0))) : t.shadow = this.options.shadow.enabled, void 0 !== this.options.opacity) {
                            var e = this.options.opacity;
                            t.borderColor = Go(t.borderColor, e), t.color = Go(t.color, e), t.shadowColor = Go(t.shadowColor, e)
                        }
                        return t
                    }
                }, {
                    key: "updateLabelModule",
                    value: function(e) {
                        void 0 !== this.options.label && null !== this.options.label || (this.options.label = ""), t.updateGroupOptions(this.options, GI(GI({}, e), {}, { color: e && e.color || this._localColor || void 0 }), this.grouplist);
                        var n = this.grouplist.get(this.options.group, !1),
                            i = [e, this.options, n, this.globalOptions, this.defaultOptions];
                        this.labelModule.update(this.options, i), void 0 !== this.labelModule.baseSize && (this.baseFontSize = this.labelModule.baseSize)
                    }
                }, {
                    key: "updateShape",
                    value: function(t) {
                        if (t === this.options.shape && this.shape) this.shape.setOptions(this.options, this.imageObj, this.imageObjAlt);
                        else switch (this.options.shape) {
                            case "box":
                                this.shape = new nI(this.options, this.body, this.labelModule);
                                break;
                            case "circle":
                                this.shape = new gI(this.options, this.body, this.labelModule);
                                break;
                            case "circularImage":
                                this.shape = new AI(this.options, this.body, this.labelModule, this.imageObj, this.imageObjAlt);
                                break;
                            case "custom":
                                this.shape = new lI(this.options, this.body, this.labelModule, this.options.ctxRenderer);
                                break;
                            case "database":
                                this.shape = new dI(this.options, this.body, this.labelModule);
                                break;
                            case "diamond":
                                this.shape = new pI(this.options, this.body, this.labelModule);
                                break;
                            case "dot":
                                this.shape = new yI(this.options, this.body, this.labelModule);
                                break;
                            case "ellipse":
                                this.shape = new mI(this.options, this.body, this.labelModule);
                                break;
                            case "icon":
                                this.shape = new _I(this.options, this.body, this.labelModule);
                                break;
                            case "image":
                                this.shape = new xI(this.options, this.body, this.labelModule, this.imageObj, this.imageObjAlt);
                                break;
                            case "square":
                                this.shape = new EI(this.options, this.body, this.labelModule);
                                break;
                            case "hexagon":
                                this.shape = new SI(this.options, this.body, this.labelModule);
                                break;
                            case "star":
                                this.shape = new NI(this.options, this.body, this.labelModule);
                                break;
                            case "text":
                                this.shape = new PI(this.options, this.body, this.labelModule);
                                break;
                            case "triangle":
                                this.shape = new jI(this.options, this.body, this.labelModule);
                                break;
                            case "triangleDown":
                                this.shape = new LI(this.options, this.body, this.labelModule);
                                break;
                            default:
                                this.shape = new mI(this.options, this.body, this.labelModule)
                        }
                        this.needsRefresh()
                    }
                }, { key: "select", value: function() { this.selected = !0, this.needsRefresh() } }, { key: "unselect", value: function() { this.selected = !1, this.needsRefresh() } }, { key: "needsRefresh", value: function() { this.shape.refreshNeeded = !0 } }, { key: "getTitle", value: function() { return this.options.title } }, { key: "distanceToBorder", value: function(t, e) { return this.shape.distanceToBorder(t, e) } }, { key: "isFixed", value: function() { return this.options.fixed.x && this.options.fixed.y } }, { key: "isSelected", value: function() { return this.selected } }, { key: "getValue", value: function() { return this.options.value } }, { key: "getLabelSize", value: function() { return this.labelModule.size() } }, {
                    key: "setValueRange",
                    value: function(t, e, n) {
                        if (void 0 !== this.options.value) {
                            var i = this.options.scaling.customScalingFunction(t, e, n, this.options.value),
                                r = this.options.scaling.max - this.options.scaling.min;
                            if (!0 === this.options.scaling.label.enabled) {
                                var o = this.options.scaling.label.max - this.options.scaling.label.min;
                                this.options.font.size = this.options.scaling.label.min + i * o
                            }
                            this.options.size = this.options.scaling.min + i * r
                        } else this.options.size = this.baseSize, this.options.font.size = this.baseFontSize;
                        this.updateLabelModule()
                    }
                }, {
                    key: "draw",
                    value: function(t) {
                        var e = this.getFormattingValues();
                        this.shape.draw(t, this.x, this.y, this.selected, this.hover, e)
                    }
                }, { key: "updateBoundingBox", value: function(t) { this.shape.updateBoundingBox(this.x, this.y, t) } }, {
                    key: "resize",
                    value: function(t) {
                        var e = this.getFormattingValues();
                        this.shape.resize(t, this.selected, this.hover, e)
                    }
                }, { key: "getItemsOnPoint", value: function(t) { var e = []; return this.labelModule.visible() && VC(this.labelModule.getSize(), t) && e.push({ nodeId: this.id, labelId: 0 }), VC(this.shape.boundingBox, t) && e.push({ nodeId: this.id }), e } }, { key: "isOverlappingWith", value: function(t) { return this.shape.left < t.right && this.shape.left + this.shape.width > t.left && this.shape.top < t.bottom && this.shape.top + this.shape.height > t.top } }, { key: "isBoundingBoxOverlappingWith", value: function(t) { return this.shape.boundingBox.left < t.right && this.shape.boundingBox.right > t.left && this.shape.boundingBox.top < t.bottom && this.shape.boundingBox.bottom > t.top } }], [{ key: "checkOpacity", value: function(t) { return 0 <= t && t <= 1 } }, { key: "checkCoordinateOrigin", value: function(t) { return void 0 === t || "center" === t || "top-left" === t } }, {
                    key: "updateGroupOptions",
                    value: function(e, n, i) {
                        var r;
                        if (void 0 !== i) {
                            var o = e.group;
                            if (void 0 !== n && void 0 !== n.group && o !== n.group) throw new Error("updateGroupOptions: group values in options don't match.");
                            if ("number" == typeof o || "string" == typeof o && "" != o) {
                                var g = i.get(o);
                                void 0 !== g.opacity && void 0 === n.opacity && (t.checkOpacity(g.opacity) || (console.error("Invalid option for node opacity. Value must be between 0 and 1, found: " + g.opacity), g.opacity = void 0));
                                var s = sr(r = jC(n)).call(r, (function(t) { return null != n[t] }));
                                s.push("font"), jo(s, e, g), e.color = Wo(e.color)
                            }
                        }
                    }
                }, {
                    key: "parseOptions",
                    value: function(e, n) {
                        var i = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
                            r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},
                            o = arguments.length > 4 ? arguments[4] : void 0,
                            g = ["color", "fixed", "shadow"];
                        if (jo(g, e, n, i), t.checkMass(n), void 0 !== e.opacity && (t.checkOpacity(e.opacity) || (console.error("Invalid option for node opacity. Value must be between 0 and 1, found: " + e.opacity), e.opacity = void 0)), void 0 !== n.opacity && (t.checkOpacity(n.opacity) || (console.error("Invalid option for node opacity. Value must be between 0 and 1, found: " + n.opacity), n.opacity = void 0)), n.shapeProperties && !t.checkCoordinateOrigin(n.shapeProperties.coordinateOrigin) && console.error("Invalid option for node coordinateOrigin, found: " + n.shapeProperties.coordinateOrigin), tg(e, n, "shadow", r), void 0 !== n.color && null !== n.color) {
                            var s = Wo(n.color);
                            Po(e.color, s)
                        } else !0 === i && null === n.color && (e.color = $o(r.color));
                        void 0 !== n.fixed && null !== n.fixed && ("boolean" == typeof n.fixed ? (e.fixed.x = n.fixed, e.fixed.y = n.fixed) : (void 0 !== n.fixed.x && "boolean" == typeof n.fixed.x && (e.fixed.x = n.fixed.x), void 0 !== n.fixed.y && "boolean" == typeof n.fixed.y && (e.fixed.y = n.fixed.y))), !0 === i && null === n.font && (e.font = $o(r.font)), t.updateGroupOptions(e, n, o), void 0 !== n.scaling && tg(e.scaling, n.scaling, "label", r.scaling)
                    }
                }, {
                    key: "checkMass",
                    value: function(t, e) {
                        if (void 0 !== t.mass && t.mass <= 0) {
                            var n = "";
                            void 0 !== e && (n = " in node id: " + e), console.log("%cNegative or zero mass disallowed" + n + ", setting mass to 1.", ZI), t.mass = 1
                        }
                    }
                }]), t
            }();

            function WI(t, e) {
                var n;
                if (void 0 === co || null == ei(t)) {
                    if (to(t) || (n = function(t, e) { var n; if (!t) return; if ("string" == typeof t) return HI(t, e); var i = oo(n = Object.prototype.toString.call(t)).call(n, 8, -1); "Object" === i && t.constructor && (i = t.constructor.name); if ("Map" === i || "Set" === i) return ui(t); if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return HI(t, e) }(t)) || e && t && "number" == typeof t.length) {
                        n && (t = n);
                        var i = 0,
                            r = function() {};
                        return { s: r, n: function() { return i >= t.length ? { done: !0 } : { done: !1, value: t[i++] } }, e: function(t) { throw t }, f: r }
                    }
                    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                }
                var o, g = !0,
                    s = !1;
                return { s: function() { n = ti(t) }, n: function() { var t = n.next(); return g = t.done, t }, e: function(t) { s = !0, o = t }, f: function() { try { g || null == n.return || n.return() } finally { if (s) throw o } } }
            }

            function HI(t, e) {
                (null == e || e > t.length) && (e = t.length);
                for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];
                return i
            }
            var KI = function() {
                    function t(e, n, i, r) {
                        var o, g = this;
                        if (DA(this, t), this.body = e, this.images = n, this.groups = i, this.layoutEngine = r, this.body.functions.createNode = tt(o = this.create).call(o, this), this.nodesListeners = { add: function(t, e) { g.add(e.items) }, update: function(t, e) { g.update(e.items, e.data, e.oldData) }, remove: function(t, e) { g.remove(e.items) } }, this.defaultOptions = { borderWidth: 1, borderWidthSelected: 2, brokenImage: void 0, color: { border: "#2B7CE9", background: "#97C2FC", highlight: { border: "#2B7CE9", background: "#D2E5FF" }, hover: { border: "#2B7CE9", background: "#D2E5FF" } }, opacity: void 0, fixed: { x: !1, y: !1 }, font: { color: "#343434", size: 14, face: "arial", background: "none", strokeWidth: 0, strokeColor: "#ffffff", align: "center", vadjust: 0, multi: !1, bold: { mod: "bold" }, boldital: { mod: "bold italic" }, ital: { mod: "italic" }, mono: { mod: "", size: 15, face: "monospace", vadjust: 2 } }, group: void 0, hidden: !1, icon: { face: "FontAwesome", code: void 0, size: 50, color: "#2B7CE9" }, image: void 0, imagePadding: { top: 0, right: 0, bottom: 0, left: 0 }, label: void 0, labelHighlightBold: !0, level: void 0, margin: { top: 5, right: 5, bottom: 5, left: 5 }, mass: 1, physics: !0, scaling: { min: 10, max: 30, label: { enabled: !1, min: 14, max: 30, maxVisible: 30, drawThreshold: 5 }, customScalingFunction: function(t, e, n, i) { if (e === t) return .5; var r = 1 / (e - t); return Math.max(0, (i - t) * r) } }, shadow: { enabled: !1, color: "rgba(0,0,0,0.5)", size: 10, x: 5, y: 5 }, shape: "ellipse", shapeProperties: { borderDashes: !1, borderRadius: 6, interpolation: !0, useImageSize: !1, useBorderWithImage: !1, coordinateOrigin: "center" }, size: 25, title: void 0, value: void 0, x: void 0, y: void 0 }, this.defaultOptions.mass <= 0) throw "Internal error: mass in defaultOptions of NodesHandler may not be zero or negative";
                        this.options = $o(this.defaultOptions), this.bindEventListeners()
                    }
                    return RA(t, [{
                        key: "bindEventListeners",
                        value: function() {
                            var t, e, n = this;
                            this.body.emitter.on("refreshNodes", tt(t = this.refresh).call(t, this)), this.body.emitter.on("refresh", tt(e = this.refresh).call(e, this)), this.body.emitter.on("destroy", (function() { Vo(n.nodesListeners, (function(t, e) { n.body.data.nodes && n.body.data.nodes.off(e, t) })), delete n.body.functions.createNode, delete n.nodesListeners.add, delete n.nodesListeners.update, delete n.nodesListeners.remove, delete n.nodesListeners }))
                        }
                    }, {
                        key: "setOptions",
                        value: function(t) {
                            if (void 0 !== t) {
                                if (UI.parseOptions(this.options, t), void 0 !== t.opacity && (XA(t.opacity) || !QA(t.opacity) || t.opacity < 0 || t.opacity > 1 ? console.error("Invalid option for node opacity. Value must be between 0 and 1, found: " + t.opacity) : this.options.opacity = t.opacity), void 0 !== t.shape)
                                    for (var e in this.body.nodes) Object.prototype.hasOwnProperty.call(this.body.nodes, e) && this.body.nodes[e].updateShape();
                                if (void 0 !== t.font || void 0 !== t.widthConstraint || void 0 !== t.heightConstraint)
                                    for (var n = 0, i = Hr(this.body.nodes); n < i.length; n++) {
                                        var r = i[n];
                                        this.body.nodes[r].updateLabelModule(), this.body.nodes[r].needsRefresh()
                                    }
                                if (void 0 !== t.size)
                                    for (var o in this.body.nodes) Object.prototype.hasOwnProperty.call(this.body.nodes, o) && this.body.nodes[o].needsRefresh();
                                void 0 === t.hidden && void 0 === t.physics || this.body.emitter.emit("_dataChanged")
                            }
                        }
                    }, {
                        key: "setData",
                        value: function(t) {
                            var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
                                n = this.body.data.nodes;
                            if (t instanceof DC || t instanceof NC) this.body.data.nodes = t;
                            else if (to(t)) this.body.data.nodes = new DC, this.body.data.nodes.add(t);
                            else {
                                if (t) throw new TypeError("Array or DataSet expected");
                                this.body.data.nodes = new DC
                            }
                            if (n && Vo(this.nodesListeners, (function(t, e) { n.off(e, t) })), this.body.nodes = {}, this.body.data.nodes) {
                                var i = this;
                                Vo(this.nodesListeners, (function(t, e) { i.body.data.nodes.on(e, t) }));
                                var r = this.body.data.nodes.getIds();
                                this.add(r, !0)
                            }!1 === e && this.body.emitter.emit("_dataChanged")
                        }
                    }, {
                        key: "add",
                        value: function(t) {
                            for (var e, n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], i = [], r = 0; r < t.length; r++) {
                                e = t[r];
                                var o = this.body.data.nodes.get(e),
                                    g = this.create(o);
                                i.push(g), this.body.nodes[e] = g
                            }
                            this.layoutEngine.positionInitially(i), !1 === n && this.body.emitter.emit("_dataChanged")
                        }
                    }, {
                        key: "update",
                        value: function(t, e, n) {
                            for (var i = this.body.nodes, r = !1, o = 0; o < t.length; o++) {
                                var g = t[o],
                                    s = i[g],
                                    A = e[o];
                                void 0 !== s ? s.setOptions(A) && (r = !0) : (r = !0, s = this.create(A), i[g] = s)
                            }
                            r || void 0 === n || (r = WA(e).call(e, (function(t, e) { var i = n[e]; return i && i.level !== t.level }))), !0 === r ? this.body.emitter.emit("_dataChanged") : this.body.emitter.emit("_dataUpdated")
                        }
                    }, {
                        key: "remove",
                        value: function(t) {
                            for (var e = this.body.nodes, n = 0; n < t.length; n++) { delete e[t[n]] }
                            this.body.emitter.emit("_dataChanged")
                        }
                    }, { key: "create", value: function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : UI; return new e(t, this.body, this.images, this.groups, this.options, this.defaultOptions) } }, {
                        key: "refresh",
                        value: function() {
                            var t = this,
                                e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            Vo(this.body.nodes, (function(n, i) {
                                var r = t.body.data.nodes.get(i);
                                void 0 !== r && (!0 === e && n.setOptions({ x: null, y: null }), n.setOptions({ fixed: !1 }), n.setOptions(r))
                            }))
                        }
                    }, {
                        key: "getPositions",
                        value: function(t) {
                            var e = {};
                            if (void 0 !== t) {
                                if (!0 === to(t)) {
                                    for (var n = 0; n < t.length; n++)
                                        if (void 0 !== this.body.nodes[t[n]]) {
                                            var i = this.body.nodes[t[n]];
                                            e[t[n]] = { x: Math.round(i.x), y: Math.round(i.y) }
                                        }
                                } else if (void 0 !== this.body.nodes[t]) {
                                    var r = this.body.nodes[t];
                                    e[t] = { x: Math.round(r.x), y: Math.round(r.y) }
                                }
                            } else
                                for (var o = 0; o < this.body.nodeIndices.length; o++) {
                                    var g = this.body.nodes[this.body.nodeIndices[o]];
                                    e[this.body.nodeIndices[o]] = { x: Math.round(g.x), y: Math.round(g.y) }
                                }
                            return e
                        }
                    }, { key: "getPosition", value: function(t) { if (null == t) throw new TypeError("No id was specified for getPosition method."); if (null == this.body.nodes[t]) throw new ReferenceError("NodeId provided for getPosition does not exist. Provided: ".concat(t)); return { x: Math.round(this.body.nodes[t].x), y: Math.round(this.body.nodes[t].y) } } }, {
                        key: "storePositions",
                        value: function() {
                            var t, e = [],
                                n = this.body.data.nodes.getDataSet(),
                                i = WI(n.get());
                            try {
                                for (i.s(); !(t = i.n()).done;) {
                                    var r = t.value,
                                        o = r.id,
                                        g = this.body.nodes[o],
                                        s = Math.round(g.x),
                                        A = Math.round(g.y);
                                    r.x === s && r.y === A || e.push({ id: o, x: s, y: A })
                                }
                            } catch (t) { i.e(t) } finally { i.f() }
                            n.update(e)
                        }
                    }, { key: "getBoundingBox", value: function(t) { if (void 0 !== this.body.nodes[t]) return this.body.nodes[t].shape.boundingBox } }, {
                        key: "getConnectedNodes",
                        value: function(t, e) {
                            var n = [];
                            if (void 0 !== this.body.nodes[t])
                                for (var i = this.body.nodes[t], r = {}, o = 0; o < i.edges.length; o++) { var g = i.edges[o]; "to" !== e && g.toId == i.id ? void 0 === r[g.fromId] && (n.push(g.fromId), r[g.fromId] = !0) : "from" !== e && g.fromId == i.id && void 0 === r[g.toId] && (n.push(g.toId), r[g.toId] = !0) }
                            return n
                        }
                    }, {
                        key: "getConnectedEdges",
                        value: function(t) {
                            var e = [];
                            if (void 0 !== this.body.nodes[t])
                                for (var n = this.body.nodes[t], i = 0; i < n.edges.length; i++) e.push(n.edges[i].id);
                            else console.log("NodeId provided for getConnectedEdges does not exist. Provided: ", t);
                            return e
                        }
                    }, {
                        key: "moveNode",
                        value: function(t, e, n) {
                            var i = this;
                            void 0 !== this.body.nodes[t] ? (this.body.nodes[t].x = Number(e), this.body.nodes[t].y = Number(n), BA((function() { i.body.emitter.emit("startSimulation") }), 0)) : console.log("Node id supplied to moveNode does not exist. Provided: ", t)
                        }
                    }]), t
                }(),
                QI = Yt;
            W({ target: "Reflect", stat: !0 }, { get: function t(e, n) { var i, r, o = arguments.length < 3 ? e : arguments[2]; return B(e) === o ? e[n] : (i = T.f(e, n)) ? w(i, "value") ? i.value : void 0 === i.get ? void 0 : i.get.call(o) : y(r = Dn(e)) ? t(r, n, o) : void 0 } });
            var XI = F.Reflect.get;
            var qI = function(t, e) { for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = Ea(t));); return t },
                JI = r((function(t) {
                    function e(n, i, r) { return "undefined" != typeof Reflect && XI ? t.exports = e = XI : t.exports = e = function(t, e, n) { var i = qI(t, e); if (i) { var r = QI(i, e); return r.get ? r.get.call(n) : r.value } }, e(n, i, r || n) }
                    t.exports = e
                })),
                $I = Math.hypot,
                tu = Math.abs,
                eu = Math.sqrt,
                nu = !!$I && $I(1 / 0, NaN) !== 1 / 0;
            W({ target: "Math", stat: !0, forced: nu }, { hypot: function(t, e) { for (var n, i, r = 0, o = 0, g = arguments.length, s = 0; o < g;) s < (n = tu(arguments[o++])) ? (r = r * (i = s / n) * i + 1, s = n) : r += n > 0 ? (i = n / s) * i : n; return s === 1 / 0 ? 1 / 0 : s * eu(r) } });
            var iu = F.Math.hypot;

            function ru(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var ou = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{
                        key: "transform",
                        value: function(t, e) {
                            to(t) || (t = [t]);
                            for (var n = e.point.x, i = e.point.y, r = e.angle, o = e.length, g = 0; g < t.length; ++g) {
                                var s = t[g],
                                    A = s.x * Math.cos(r) - s.y * Math.sin(r),
                                    a = s.x * Math.sin(r) + s.y * Math.cos(r);
                                s.x = n + o * A, s.y = i + o * a
                            }
                        }
                    }, {
                        key: "drawPath",
                        value: function(t, e) {
                            t.beginPath(), t.moveTo(e[0].x, e[0].y);
                            for (var n = 1; n < e.length; ++n) t.lineTo(e[n].x, e[n].y);
                            t.closePath()
                        }
                    }]), t
                }(),
                gu = function(t) {
                    ka(n, t);
                    var e = ru(n);

                    function n() { return DA(this, n), e.apply(this, arguments) }
                    return RA(n, null, [{
                        key: "draw",
                        value: function(t, e) {
                            if (e.image) {
                                t.save(), t.translate(e.point.x, e.point.y), t.rotate(Math.PI / 2 + e.angle);
                                var n = null != e.imageWidth ? e.imageWidth : e.image.width,
                                    i = null != e.imageHeight ? e.imageHeight : e.image.height;
                                e.image.drawImageAtPosition(t, 1, -n / 2, 0, n, i), t.restore()
                            }
                            return !1
                        }
                    }]), n
                }(ou),
                su = function(t) {
                    ka(n, t);
                    var e = ru(n);

                    function n() { return DA(this, n), e.apply(this, arguments) }
                    return RA(n, null, [{ key: "draw", value: function(t, e) { var n = [{ x: 0, y: 0 }, { x: -1, y: .3 }, { x: -.9, y: 0 }, { x: -1, y: -.3 }]; return ou.transform(n, e), ou.drawPath(t, n), !0 } }]), n
                }(ou),
                Au = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{ key: "draw", value: function(t, e) { var n = [{ x: -1, y: 0 }, { x: 0, y: .3 }, { x: -.4, y: 0 }, { x: 0, y: -.3 }]; return ou.transform(n, e), ou.drawPath(t, n), !0 } }]), t
                }(),
                au = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{
                        key: "draw",
                        value: function(t, e) {
                            var n = { x: -.4, y: 0 };
                            ou.transform(n, e), t.strokeStyle = t.fillStyle, t.fillStyle = "rgba(0, 0, 0, 0)";
                            var i = Math.PI,
                                r = e.angle - i / 2,
                                o = e.angle + i / 2;
                            return t.beginPath(), t.arc(n.x, n.y, .4 * e.length, r, o, !1), t.stroke(), !0
                        }
                    }]), t
                }(),
                Cu = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{
                        key: "draw",
                        value: function(t, e) {
                            var n = { x: -.3, y: 0 };
                            ou.transform(n, e), t.strokeStyle = t.fillStyle, t.fillStyle = "rgba(0, 0, 0, 0)";
                            var i = Math.PI,
                                r = e.angle + i / 2,
                                o = e.angle + 3 * i / 2;
                            return t.beginPath(), t.arc(n.x, n.y, .4 * e.length, r, o, !1), t.stroke(), !0
                        }
                    }]), t
                }(),
                Iu = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{ key: "draw", value: function(t, e) { var n = [{ x: .02, y: 0 }, { x: -1, y: .3 }, { x: -1, y: -.3 }]; return ou.transform(n, e), ou.drawPath(t, n), !0 } }]), t
                }(),
                uu = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{ key: "draw", value: function(t, e) { var n = [{ x: 0, y: .3 }, { x: 0, y: -.3 }, { x: -1, y: 0 }]; return ou.transform(n, e), ou.drawPath(t, n), !0 } }]), t
                }(),
                cu = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{ key: "draw", value: function(t, e) { var n = { x: -.4, y: 0 }; return ou.transform(n, e), mt(t, n.x, n.y, .4 * e.length), !0 } }]), t
                }(),
                lu = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{ key: "draw", value: function(t, e) { var n = [{ x: 0, y: .5 }, { x: 0, y: -.5 }, { x: -.15, y: -.5 }, { x: -.15, y: .5 }]; return ou.transform(n, e), ou.drawPath(t, n), !0 } }]), t
                }(),
                hu = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{ key: "draw", value: function(t, e) { var n = [{ x: 0, y: .3 }, { x: 0, y: -.3 }, { x: -.6, y: -.3 }, { x: -.6, y: .3 }]; return ou.transform(n, e), ou.drawPath(t, n), !0 } }]), t
                }(),
                du = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{ key: "draw", value: function(t, e) { var n = [{ x: 0, y: 0 }, { x: -.5, y: -.3 }, { x: -1, y: 0 }, { x: -.5, y: .3 }]; return ou.transform(n, e), ou.drawPath(t, n), !0 } }]), t
                }(),
                fu = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{ key: "draw", value: function(t, e) { var n = [{ x: -1, y: .3 }, { x: -.5, y: 0 }, { x: -1, y: -.3 }, { x: 0, y: 0 }]; return ou.transform(n, e), ou.drawPath(t, n), !0 } }]), t
                }(),
                pu = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{
                        key: "draw",
                        value: function(t, e) {
                            var n;
                            switch (e.type && (n = e.type.toLowerCase()), n) {
                                case "image":
                                    return gu.draw(t, e);
                                case "circle":
                                    return cu.draw(t, e);
                                case "box":
                                    return hu.draw(t, e);
                                case "crow":
                                    return Au.draw(t, e);
                                case "curve":
                                    return au.draw(t, e);
                                case "diamond":
                                    return du.draw(t, e);
                                case "inv_curve":
                                    return Cu.draw(t, e);
                                case "triangle":
                                    return Iu.draw(t, e);
                                case "inv_triangle":
                                    return uu.draw(t, e);
                                case "bar":
                                    return lu.draw(t, e);
                                case "vee":
                                    return fu.draw(t, e);
                                case "arrow":
                                default:
                                    return su.draw(t, e)
                            }
                        }
                    }]), t
                }();

            function vu(t, e) {
                var n = Hr(t);
                if (xn) {
                    var i = xn(t);
                    e && (i = sr(i).call(i, (function(e) { return Gt(t, e).enumerable }))), n.push.apply(n, i)
                }
                return n
            }

            function yu(t) {
                for (var e = 1; e < arguments.length; e++) {
                    var n, i = null != arguments[e] ? arguments[e] : {};
                    if (e % 2) zi(n = vu(Object(i), !0)).call(n, (function(e) { pi(t, e, i[e]) }));
                    else if (Lt) Nt(t, Lt(i));
                    else {
                        var r;
                        zi(r = vu(Object(i))).call(r, (function(e) { St(t, e, Gt(i, e)) }))
                    }
                }
                return t
            }
            var bu = function() {
                function t(e, n, i) { DA(this, t), this._body = n, this._labelModule = i, this.color = {}, this.colorDirty = !0, this.hoverWidth = 1.5, this.selectionWidth = 2, this.setOptions(e), this.fromPoint = this.from, this.toPoint = this.to }
                return RA(t, [{ key: "connect", value: function() { this.from = this._body.nodes[this.options.from], this.to = this._body.nodes[this.options.to] } }, { key: "cleanup", value: function() { return !1 } }, { key: "setOptions", value: function(t) { this.options = t, this.from = this._body.nodes[this.options.from], this.to = this._body.nodes[this.options.to], this.id = this.options.id } }, {
                    key: "drawLine",
                    value: function(t, e, n, i) {
                        var r = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : this.getViaNode();
                        t.strokeStyle = this.getColor(t, e), t.lineWidth = e.width, !1 !== e.dashes ? this._drawDashedLine(t, e, r) : this._drawLine(t, e, r)
                    }
                }, {
                    key: "_drawLine",
                    value: function(t, e, n, i, r) {
                        if (this.from != this.to) this._line(t, e, n, i, r);
                        else {
                            var o = this._getCircleData(t),
                                g = Gr(o, 3),
                                s = g[0],
                                A = g[1],
                                a = g[2];
                            this._circle(t, e, s, A, a)
                        }
                    }
                }, {
                    key: "_drawDashedLine",
                    value: function(t, e, n, i, r) {
                        t.lineCap = "round";
                        var o = to(e.dashes) ? e.dashes : [5, 5];
                        if (void 0 !== t.setLineDash) {
                            if (t.save(), t.setLineDash(o), t.lineDashOffset = 0, this.from != this.to) this._line(t, e, n);
                            else {
                                var g = this._getCircleData(t),
                                    s = Gr(g, 3),
                                    A = s[0],
                                    a = s[1],
                                    C = s[2];
                                this._circle(t, e, A, a, C)
                            }
                            t.setLineDash([0]), t.lineDashOffset = 0, t.restore()
                        } else {
                            if (this.from != this.to) xt(t, this.from.x, this.from.y, this.to.x, this.to.y, o);
                            else {
                                var I = this._getCircleData(t),
                                    u = Gr(I, 3),
                                    c = u[0],
                                    l = u[1],
                                    h = u[2];
                                this._circle(t, e, c, l, h)
                            }
                            this.enableShadow(t, e), t.stroke(), this.disableShadow(t, e)
                        }
                    }
                }, { key: "findBorderPosition", value: function(t, e, n) { return this.from != this.to ? this._findBorderPosition(t, e, n) : this._findBorderPositionCircle(t, e, n) } }, {
                    key: "findBorderPositions",
                    value: function(t) {
                        if (this.from != this.to) return { from: this._findBorderPosition(this.from, t), to: this._findBorderPosition(this.to, t) };
                        var e, n = oo(e = this._getCircleData(t)).call(e, 0, 2),
                            i = Gr(n, 2),
                            r = i[0],
                            o = i[1];
                        return { from: this._findBorderPositionCircle(this.from, t, { x: r, y: o, low: .25, high: .6, direction: -1 }), to: this._findBorderPositionCircle(this.from, t, { x: r, y: o, low: .6, high: .8, direction: 1 }) }
                    }
                }, {
                    key: "_getCircleData",
                    value: function(t) {
                        var e = this.options.selfReference.size;
                        void 0 !== t && void 0 === this.from.shape.width && this.from.shape.resize(t);
                        var n = GC(t, this.options.selfReference.angle, e, this.from);
                        return [n.x, n.y, e]
                    }
                }, { key: "_pointOnCircle", value: function(t, e, n, i) { var r = 2 * i * Math.PI; return { x: t + n * Math.cos(r), y: e - n * Math.sin(r) } } }, {
                    key: "_findBorderPositionCircle",
                    value: function(t, e, n) {
                        var i, r = n.x,
                            o = n.y,
                            g = n.low,
                            s = n.high,
                            A = n.direction,
                            a = this.options.selfReference.size,
                            C = .5 * (g + s),
                            I = 0;
                        !0 === this.options.arrowStrikethrough && (-1 === A ? I = this.options.endPointOffset.from : 1 === A && (I = this.options.endPointOffset.to));
                        var u = 0;
                        do {
                            C = .5 * (g + s), i = this._pointOnCircle(r, o, a, C);
                            var c = Math.atan2(t.y - i.y, t.x - i.x),
                                l = t.distanceToBorder(e, c) + I - Math.sqrt(Math.pow(i.x - t.x, 2) + Math.pow(i.y - t.y, 2));
                            if (Math.abs(l) < .05) break;
                            l > 0 ? A > 0 ? g = C : s = C : A > 0 ? s = C : g = C, ++u
                        } while (g <= s && u < 10);
                        return yu(yu({}, i), {}, { t: C })
                    }
                }, { key: "getLineWidth", value: function(t, e) { return !0 === t ? Math.max(this.selectionWidth, .3 / this._body.view.scale) : !0 === e ? Math.max(this.hoverWidth, .3 / this._body.view.scale) : Math.max(this.options.width, .3 / this._body.view.scale) } }, {
                    key: "getColor",
                    value: function(t, e) {
                        if (!1 !== e.inheritsColor) {
                            if ("both" === e.inheritsColor && this.from.id !== this.to.id) {
                                var n = t.createLinearGradient(this.from.x, this.from.y, this.to.x, this.to.y),
                                    i = this.from.options.color.highlight.border,
                                    r = this.to.options.color.highlight.border;
                                return !1 === this.from.selected && !1 === this.to.selected ? (i = Go(this.from.options.color.border, e.opacity), r = Go(this.to.options.color.border, e.opacity)) : !0 === this.from.selected && !1 === this.to.selected ? r = this.to.options.color.border : !1 === this.from.selected && !0 === this.to.selected && (i = this.from.options.color.border), n.addColorStop(0, i), n.addColorStop(1, r), n
                            }
                            return "to" === e.inheritsColor ? Go(this.to.options.color.border, e.opacity) : Go(this.from.options.color.border, e.opacity)
                        }
                        return Go(e.color, e.opacity)
                    }
                }, {
                    key: "_circle",
                    value: function(t, e, n, i, r) {
                        this.enableShadow(t, e);
                        var o = 0,
                            g = 2 * Math.PI;
                        if (!this.options.selfReference.renderBehindTheNode) {
                            var s = this.options.selfReference.angle,
                                A = this.options.selfReference.angle + Math.PI,
                                a = this._findBorderPositionCircle(this.from, t, { x: n, y: i, low: s, high: A, direction: -1 }),
                                C = this._findBorderPositionCircle(this.from, t, { x: n, y: i, low: s, high: A, direction: 1 });
                            o = Math.atan2(a.y - i, a.x - n), g = Math.atan2(C.y - i, C.x - n)
                        }
                        t.beginPath(), t.arc(n, i, r, o, g, !1), t.stroke(), this.disableShadow(t, e)
                    }
                }, {
                    key: "getDistanceToEdge",
                    value: function(t, e, n, i, r, o) {
                        if (this.from != this.to) return this._getDistanceToEdge(t, e, n, i, r, o);
                        var g = this._getCircleData(void 0),
                            s = Gr(g, 3),
                            A = s[0],
                            a = s[1],
                            C = s[2],
                            I = A - r,
                            u = a - o;
                        return Math.abs(Math.sqrt(I * I + u * u) - C)
                    }
                }, {
                    key: "_getDistanceToLine",
                    value: function(t, e, n, i, r, o) {
                        var g = n - t,
                            s = i - e,
                            A = ((r - t) * g + (o - e) * s) / (g * g + s * s);
                        A > 1 ? A = 1 : A < 0 && (A = 0);
                        var a = t + A * g - r,
                            C = e + A * s - o;
                        return Math.sqrt(a * a + C * C)
                    }
                }, {
                    key: "getArrowData",
                    value: function(t, e, n, i, r, o) {
                        var g, s, A, a, C, I, u, c = o.width;
                        "from" === e ? (A = this.from, a = this.to, C = o.fromArrowScale < 0, I = Math.abs(o.fromArrowScale), u = o.fromArrowType) : "to" === e ? (A = this.to, a = this.from, C = o.toArrowScale < 0, I = Math.abs(o.toArrowScale), u = o.toArrowType) : (A = this.to, a = this.from, C = o.middleArrowScale < 0, I = Math.abs(o.middleArrowScale), u = o.middleArrowType);
                        var l = 15 * I + 3 * c;
                        if (A != a) {
                            var h = l / iu(A.x - a.x, A.y - a.y);
                            if ("middle" !== e)
                                if (!0 === this.options.smooth.enabled) {
                                    var d = this._findBorderPosition(A, t, { via: n }),
                                        f = this.getPoint(d.t + h * ("from" === e ? 1 : -1), n);
                                    g = Math.atan2(d.y - f.y, d.x - f.x), s = d
                                } else g = Math.atan2(A.y - a.y, A.x - a.x), s = this._findBorderPosition(A, t);
                            else {
                                var p = (C ? -h : h) / 2,
                                    v = this.getPoint(.5 + p, n),
                                    y = this.getPoint(.5 - p, n);
                                g = Math.atan2(v.y - y.y, v.x - y.x), s = this.getPoint(.5, n)
                            }
                        } else {
                            var b = this._getCircleData(t),
                                m = Gr(b, 3),
                                w = m[0],
                                _ = m[1],
                                k = m[2];
                            if ("from" === e) {
                                var x = this.options.selfReference.angle,
                                    O = this.options.selfReference.angle + Math.PI,
                                    E = this._findBorderPositionCircle(this.from, t, { x: w, y: _, low: x, high: O, direction: -1 });
                                g = -2 * E.t * Math.PI + 1.5 * Math.PI + .1 * Math.PI, s = E
                            } else if ("to" === e) {
                                var T = this.options.selfReference.angle,
                                    S = this.options.selfReference.angle + Math.PI,
                                    D = this._findBorderPositionCircle(this.from, t, { x: w, y: _, low: T, high: S, direction: 1 });
                                g = -2 * D.t * Math.PI + 1.5 * Math.PI - 1.1 * Math.PI, s = D
                            } else {
                                var N = this.options.selfReference.angle / (2 * Math.PI);
                                s = this._pointOnCircle(w, _, k, N), g = -2 * N * Math.PI + 1.5 * Math.PI + .1 * Math.PI
                            }
                        }
                        return { point: s, core: { x: s.x - .9 * l * Math.cos(g), y: s.y - .9 * l * Math.sin(g) }, angle: g, length: l, type: u }
                    }
                }, { key: "drawArrowHead", value: function(t, e, n, i, r) { t.strokeStyle = this.getColor(t, e), t.fillStyle = t.strokeStyle, t.lineWidth = e.width, pu.draw(t, r) && (this.enableShadow(t, e), $C(t).call(t), this.disableShadow(t, e)) } }, { key: "enableShadow", value: function(t, e) {!0 === e.shadow && (t.shadowColor = e.shadowColor, t.shadowBlur = e.shadowSize, t.shadowOffsetX = e.shadowX, t.shadowOffsetY = e.shadowY) } }, { key: "disableShadow", value: function(t, e) {!0 === e.shadow && (t.shadowColor = "rgba(0,0,0,0)", t.shadowBlur = 0, t.shadowOffsetX = 0, t.shadowOffsetY = 0) } }, {
                    key: "drawBackground",
                    value: function(t, e) {
                        if (!1 !== e.background) {
                            var n = { strokeStyle: t.strokeStyle, lineWidth: t.lineWidth, dashes: t.dashes };
                            t.strokeStyle = e.backgroundColor, t.lineWidth = e.backgroundSize, this.setStrokeDashed(t, e.backgroundDashes), t.stroke(), t.strokeStyle = n.strokeStyle, t.lineWidth = n.lineWidth, t.dashes = n.dashes, this.setStrokeDashed(t, e.dashes)
                        }
                    }
                }, {
                    key: "setStrokeDashed",
                    value: function(t, e) {
                        if (!1 !== e)
                            if (void 0 !== t.setLineDash) {
                                var n = to(e) ? e : [5, 5];
                                t.setLineDash(n)
                            } else console.warn("setLineDash is not supported in this browser. The dashed stroke cannot be used.");
                        else void 0 !== t.setLineDash ? t.setLineDash([]) : console.warn("setLineDash is not supported in this browser. The dashed stroke cannot be used.")
                    }
                }]), t
            }();

            function mu(t, e) {
                var n = Hr(t);
                if (xn) {
                    var i = xn(t);
                    e && (i = sr(i).call(i, (function(e) { return Gt(t, e).enumerable }))), n.push.apply(n, i)
                }
                return n
            }

            function wu(t) {
                for (var e = 1; e < arguments.length; e++) {
                    var n, i = null != arguments[e] ? arguments[e] : {};
                    if (e % 2) zi(n = mu(Object(i), !0)).call(n, (function(e) { pi(t, e, i[e]) }));
                    else if (Lt) Nt(t, Lt(i));
                    else {
                        var r;
                        zi(r = mu(Object(i))).call(r, (function(e) { St(t, e, Gt(i, e)) }))
                    }
                }
                return t
            }

            function _u(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var ku = function(t) {
                ka(n, t);
                var e = _u(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{
                    key: "_findBorderPositionBezier",
                    value: function(t, e) {
                        var n, i, r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this._getViaCoordinates(),
                            o = 10,
                            g = .2,
                            s = !1,
                            A = 1,
                            a = 0,
                            C = this.to,
                            I = this.options.endPointOffset ? this.options.endPointOffset.to : 0;
                        t.id === this.from.id && (C = this.from, s = !0, I = this.options.endPointOffset ? this.options.endPointOffset.from : 0), !1 === this.options.arrowStrikethrough && (I = 0);
                        var u = 0;
                        do {
                            i = .5 * (a + A), n = this.getPoint(i, r);
                            var c = Math.atan2(C.y - n.y, C.x - n.x),
                                l = C.distanceToBorder(e, c) + I,
                                h = Math.sqrt(Math.pow(n.x - C.x, 2) + Math.pow(n.y - C.y, 2)),
                                d = l - h;
                            if (Math.abs(d) < g) break;
                            d < 0 ? !1 === s ? a = i : A = i : !1 === s ? A = i : a = i, ++u
                        } while (a <= A && u < o);
                        return wu(wu({}, n), {}, { t: i })
                    }
                }, {
                    key: "_getDistanceToBezierEdge",
                    value: function(t, e, n, i, r, o, g) {
                        var s, A, a, C, I, u = 1e9,
                            c = t,
                            l = e;
                        for (A = 1; A < 10; A++) a = .1 * A, C = Math.pow(1 - a, 2) * t + 2 * a * (1 - a) * g.x + Math.pow(a, 2) * n, I = Math.pow(1 - a, 2) * e + 2 * a * (1 - a) * g.y + Math.pow(a, 2) * i, A > 0 && (u = (s = this._getDistanceToLine(c, l, C, I, r, o)) < u ? s : u), c = C, l = I;
                        return u
                    }
                }, { key: "_bezierCurve", value: function(t, e, n, i) { t.beginPath(), t.moveTo(this.fromPoint.x, this.fromPoint.y), null != n && null != n.x ? null != i && null != i.x ? t.bezierCurveTo(n.x, n.y, i.x, i.y, this.toPoint.x, this.toPoint.y) : t.quadraticCurveTo(n.x, n.y, this.toPoint.x, this.toPoint.y) : t.lineTo(this.toPoint.x, this.toPoint.y), this.drawBackground(t, e), this.enableShadow(t, e), t.stroke(), this.disableShadow(t, e) } }, { key: "getViaNode", value: function() { return this._getViaCoordinates() } }]), n
            }(bu);

            function xu(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var Ou = function(t) {
                ka(n, t);
                var e = xu(n);

                function n(t, i, r) { var o; return DA(this, n), (o = e.call(this, t, i, r)).via = o.via, o._boundFunction = function() { o.positionBezierNode() }, o._body.emitter.on("_repositionBezierNodes", o._boundFunction), o }
                return RA(n, [{
                    key: "setOptions",
                    value: function(t) {
                        JI(Ea(n.prototype), "setOptions", this).call(this, t);
                        var e = !1;
                        this.options.physics !== t.physics && (e = !0), this.options = t, this.id = this.options.id, this.from = this._body.nodes[this.options.from], this.to = this._body.nodes[this.options.to], this.setupSupportNode(), this.connect(), !0 === e && (this.via.setOptions({ physics: this.options.physics }), this.positionBezierNode())
                    }
                }, { key: "connect", value: function() { this.from = this._body.nodes[this.options.from], this.to = this._body.nodes[this.options.to], void 0 === this.from || void 0 === this.to || !1 === this.options.physics || this.from.id === this.to.id ? this.via.setOptions({ physics: !1 }) : this.via.setOptions({ physics: !0 }) } }, { key: "cleanup", value: function() { return this._body.emitter.off("_repositionBezierNodes", this._boundFunction), void 0 !== this.via && (delete this._body.nodes[this.via.id], this.via = void 0, !0) } }, {
                    key: "setupSupportNode",
                    value: function() {
                        if (void 0 === this.via) {
                            var t = "edgeId:" + this.id,
                                e = this._body.functions.createNode({ id: t, shape: "circle", physics: !0, hidden: !0 });
                            this._body.nodes[t] = e, this.via = e, this.via.parentEdgeId = this.id, this.positionBezierNode()
                        }
                    }
                }, { key: "positionBezierNode", value: function() { void 0 !== this.via && void 0 !== this.from && void 0 !== this.to ? (this.via.x = .5 * (this.from.x + this.to.x), this.via.y = .5 * (this.from.y + this.to.y)) : void 0 !== this.via && (this.via.x = 0, this.via.y = 0) } }, { key: "_line", value: function(t, e, n) { this._bezierCurve(t, e, n) } }, { key: "_getViaCoordinates", value: function() { return this.via } }, { key: "getViaNode", value: function() { return this.via } }, {
                    key: "getPoint",
                    value: function(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.via;
                        if (this.from === this.to) {
                            var n = this._getCircleData(),
                                i = Gr(n, 3),
                                r = i[0],
                                o = i[1],
                                g = i[2],
                                s = 2 * Math.PI * (1 - t);
                            return { x: r + g * Math.sin(s), y: o + g - g * (1 - Math.cos(s)) }
                        }
                        return { x: Math.pow(1 - t, 2) * this.fromPoint.x + 2 * t * (1 - t) * e.x + Math.pow(t, 2) * this.toPoint.x, y: Math.pow(1 - t, 2) * this.fromPoint.y + 2 * t * (1 - t) * e.y + Math.pow(t, 2) * this.toPoint.y }
                    }
                }, { key: "_findBorderPosition", value: function(t, e) { return this._findBorderPositionBezier(t, e, this.via) } }, { key: "_getDistanceToEdge", value: function(t, e, n, i, r, o) { return this._getDistanceToBezierEdge(t, e, n, i, r, o, this.via) } }]), n
            }(ku);

            function Eu(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var Tu = function(t) {
                ka(n, t);
                var e = Eu(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{ key: "_line", value: function(t, e, n) { this._bezierCurve(t, e, n) } }, { key: "getViaNode", value: function() { return this._getViaCoordinates() } }, {
                    key: "_getViaCoordinates",
                    value: function() {
                        var t, e, n = this.options.smooth.roundness,
                            i = this.options.smooth.type,
                            r = Math.abs(this.from.x - this.to.x),
                            o = Math.abs(this.from.y - this.to.y);
                        if ("discrete" === i || "diagonalCross" === i) {
                            var g, s;
                            g = s = r <= o ? n * o : n * r, this.from.x > this.to.x && (g = -g), this.from.y >= this.to.y && (s = -s);
                            var A = this.from.x + g,
                                a = this.from.y + s;
                            return "discrete" === i && (r <= o ? A = r < n * o ? this.from.x : A : a = o < n * r ? this.from.y : a), { x: A, y: a }
                        }
                        if ("straightCross" === i) {
                            var C = (1 - n) * r,
                                I = (1 - n) * o;
                            return r <= o ? (C = 0, this.from.y < this.to.y && (I = -I)) : (this.from.x < this.to.x && (C = -C), I = 0), { x: this.to.x + C, y: this.to.y + I }
                        }
                        if ("horizontal" === i) { var u = (1 - n) * r; return this.from.x < this.to.x && (u = -u), { x: this.to.x + u, y: this.from.y } }
                        if ("vertical" === i) { var c = (1 - n) * o; return this.from.y < this.to.y && (c = -c), { x: this.from.x, y: this.to.y + c } }
                        if ("curvedCW" === i) {
                            r = this.to.x - this.from.x, o = this.from.y - this.to.y;
                            var l = Math.sqrt(r * r + o * o),
                                h = Math.PI,
                                d = (Math.atan2(o, r) + (.5 * n + .5) * h) % (2 * h);
                            return { x: this.from.x + (.5 * n + .5) * l * Math.sin(d), y: this.from.y + (.5 * n + .5) * l * Math.cos(d) }
                        }
                        if ("curvedCCW" === i) {
                            r = this.to.x - this.from.x, o = this.from.y - this.to.y;
                            var f = Math.sqrt(r * r + o * o),
                                p = Math.PI,
                                v = (Math.atan2(o, r) + (.5 * -n + .5) * p) % (2 * p);
                            return { x: this.from.x + (.5 * n + .5) * f * Math.sin(v), y: this.from.y + (.5 * n + .5) * f * Math.cos(v) }
                        }
                        t = e = r <= o ? n * o : n * r, this.from.x > this.to.x && (t = -t), this.from.y >= this.to.y && (e = -e);
                        var y = this.from.x + t,
                            b = this.from.y + e;
                        return r <= o ? y = this.from.x <= this.to.x ? this.to.x < y ? this.to.x : y : this.to.x > y ? this.to.x : y : b = this.from.y >= this.to.y ? this.to.y > b ? this.to.y : b : this.to.y < b ? this.to.y : b, { x: y, y: b }
                    }
                }, { key: "_findBorderPosition", value: function(t, e) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; return this._findBorderPositionBezier(t, e, n.via) } }, { key: "_getDistanceToEdge", value: function(t, e, n, i, r, o) { var g = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : this._getViaCoordinates(); return this._getDistanceToBezierEdge(t, e, n, i, r, o, g) } }, {
                    key: "getPoint",
                    value: function(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this._getViaCoordinates(),
                            n = t,
                            i = Math.pow(1 - n, 2) * this.fromPoint.x + 2 * n * (1 - n) * e.x + Math.pow(n, 2) * this.toPoint.x,
                            r = Math.pow(1 - n, 2) * this.fromPoint.y + 2 * n * (1 - n) * e.y + Math.pow(n, 2) * this.toPoint.y;
                        return { x: i, y: r }
                    }
                }]), n
            }(ku);

            function Su(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }

            function Du(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var Nu = function(t) {
                ka(n, t);
                var e = Du(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{
                    key: "_line",
                    value: function(t, e, n) {
                        var i = n[0],
                            r = n[1];
                        this._bezierCurve(t, e, i, r)
                    }
                }, {
                    key: "_getViaCoordinates",
                    value: function() {
                        var t, e, n, i, r = this.from.x - this.to.x,
                            o = this.from.y - this.to.y,
                            g = this.options.smooth.roundness;
                        return (Math.abs(r) > Math.abs(o) || !0 === this.options.smooth.forceDirection || "horizontal" === this.options.smooth.forceDirection) && "vertical" !== this.options.smooth.forceDirection ? (e = this.from.y, i = this.to.y, t = this.from.x - g * r, n = this.to.x + g * r) : (e = this.from.y - g * o, i = this.to.y + g * o, t = this.from.x, n = this.to.x), [{ x: t, y: e }, { x: n, y: i }]
                    }
                }, { key: "getViaNode", value: function() { return this._getViaCoordinates() } }, { key: "_findBorderPosition", value: function(t, e) { return this._findBorderPositionBezier(t, e) } }, {
                    key: "_getDistanceToEdge",
                    value: function(t, e, n, i, r, o) {
                        var g = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : this._getViaCoordinates(),
                            s = Gr(g, 2),
                            A = s[0],
                            a = s[1];
                        return this._getDistanceToBezierEdge2(t, e, n, i, r, o, A, a)
                    }
                }, {
                    key: "getPoint",
                    value: function(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this._getViaCoordinates(),
                            n = Gr(e, 2),
                            i = n[0],
                            r = n[1],
                            o = t,
                            g = [Math.pow(1 - o, 3), 3 * o * Math.pow(1 - o, 2), 3 * Math.pow(o, 2) * (1 - o), Math.pow(o, 3)],
                            s = g[0] * this.fromPoint.x + g[1] * i.x + g[2] * r.x + g[3] * this.toPoint.x,
                            A = g[0] * this.fromPoint.y + g[1] * i.y + g[2] * r.y + g[3] * this.toPoint.y;
                        return { x: s, y: A }
                    }
                }]), n
            }(function(t) {
                ka(n, t);
                var e = Su(n);

                function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                return RA(n, [{
                    key: "_getDistanceToBezierEdge2",
                    value: function(t, e, n, i, r, o, g, s) {
                        for (var A = 1e9, a = t, C = e, I = [0, 0, 0, 0], u = 1; u < 10; u++) {
                            var c = .1 * u;
                            I[0] = Math.pow(1 - c, 3), I[1] = 3 * c * Math.pow(1 - c, 2), I[2] = 3 * Math.pow(c, 2) * (1 - c), I[3] = Math.pow(c, 3);
                            var l = I[0] * t + I[1] * g.x + I[2] * s.x + I[3] * n,
                                h = I[0] * e + I[1] * g.y + I[2] * s.y + I[3] * i;
                            if (u > 0) {
                                var d = this._getDistanceToLine(a, C, l, h, r, o);
                                A = d < A ? d : A
                            }
                            a = l, C = h
                        }
                        return A
                    }
                }]), n
            }(ku));

            function Ru(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var Pu = function(t) {
                    ka(n, t);
                    var e = Ru(n);

                    function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                    return RA(n, [{ key: "_line", value: function(t, e) { t.beginPath(), t.moveTo(this.fromPoint.x, this.fromPoint.y), t.lineTo(this.toPoint.x, this.toPoint.y), this.enableShadow(t, e), t.stroke(), this.disableShadow(t, e) } }, { key: "getViaNode", value: function() {} }, { key: "getPoint", value: function(t) { return { x: (1 - t) * this.fromPoint.x + t * this.toPoint.x, y: (1 - t) * this.fromPoint.y + t * this.toPoint.y } } }, {
                        key: "_findBorderPosition",
                        value: function(t, e) {
                            var n = this.to,
                                i = this.from;
                            t.id === this.from.id && (n = this.from, i = this.to);
                            var r = Math.atan2(n.y - i.y, n.x - i.x),
                                o = n.x - i.x,
                                g = n.y - i.y,
                                s = Math.sqrt(o * o + g * g),
                                A = (s - t.distanceToBorder(e, r)) / s;
                            return { x: (1 - A) * i.x + A * n.x, y: (1 - A) * i.y + A * n.y, t: 0 }
                        }
                    }, { key: "_getDistanceToEdge", value: function(t, e, n, i, r, o) { return this._getDistanceToLine(t, e, n, i, r, o) } }]), n
                }(bu),
                Mu = function() {
                    function t(e, n, i, r, o) {
                        if (DA(this, t), void 0 === n) throw new Error("No body provided");
                        this.options = $o(r), this.globalOptions = r, this.defaultOptions = o, this.body = n, this.imagelist = i, this.id = void 0, this.fromId = void 0, this.toId = void 0, this.selected = !1, this.hover = !1, this.labelDirty = !0, this.baseWidth = this.options.width, this.baseFontSize = this.options.font.size, this.from = void 0, this.to = void 0, this.edgeType = void 0, this.connected = !1, this.labelModule = new XC(this.body, this.options, !0), this.setOptions(e)
                    }
                    return RA(t, [{
                        key: "setOptions",
                        value: function(e) {
                            if (e) {
                                var n = void 0 !== e.physics && this.options.physics !== e.physics || void 0 !== e.hidden && (this.options.hidden || !1) !== (e.hidden || !1) || void 0 !== e.from && this.options.from !== e.from || void 0 !== e.to && this.options.to !== e.to;
                                t.parseOptions(this.options, e, !0, this.globalOptions), void 0 !== e.id && (this.id = e.id), void 0 !== e.from && (this.fromId = e.from), void 0 !== e.to && (this.toId = e.to), void 0 !== e.title && (this.title = e.title), void 0 !== e.value && (e.value = BC(e.value));
                                var i = [e, this.options, this.defaultOptions];
                                return this.chooser = ZC("edge", i), this.updateLabelModule(e), n = this.updateEdgeType() || n, this._setInteractionWidths(), this.connect(), n
                            }
                        }
                    }, {
                        key: "getFormattingValues",
                        value: function() {
                            var t = !0 === this.options.arrows.to || !0 === this.options.arrows.to.enabled,
                                e = !0 === this.options.arrows.from || !0 === this.options.arrows.from.enabled,
                                n = !0 === this.options.arrows.middle || !0 === this.options.arrows.middle.enabled,
                                i = this.options.color.inherit,
                                r = { toArrow: t, toArrowScale: this.options.arrows.to.scaleFactor, toArrowType: this.options.arrows.to.type, toArrowSrc: this.options.arrows.to.src, toArrowImageWidth: this.options.arrows.to.imageWidth, toArrowImageHeight: this.options.arrows.to.imageHeight, middleArrow: n, middleArrowScale: this.options.arrows.middle.scaleFactor, middleArrowType: this.options.arrows.middle.type, middleArrowSrc: this.options.arrows.middle.src, middleArrowImageWidth: this.options.arrows.middle.imageWidth, middleArrowImageHeight: this.options.arrows.middle.imageHeight, fromArrow: e, fromArrowScale: this.options.arrows.from.scaleFactor, fromArrowType: this.options.arrows.from.type, fromArrowSrc: this.options.arrows.from.src, fromArrowImageWidth: this.options.arrows.from.imageWidth, fromArrowImageHeight: this.options.arrows.from.imageHeight, arrowStrikethrough: this.options.arrowStrikethrough, color: i ? void 0 : this.options.color.color, inheritsColor: i, opacity: this.options.color.opacity, hidden: this.options.hidden, length: this.options.length, shadow: this.options.shadow.enabled, shadowColor: this.options.shadow.color, shadowSize: this.options.shadow.size, shadowX: this.options.shadow.x, shadowY: this.options.shadow.y, dashes: this.options.dashes, width: this.options.width, background: this.options.background.enabled, backgroundColor: this.options.background.color, backgroundSize: this.options.background.size, backgroundDashes: this.options.background.dashes };
                            if (this.selected || this.hover)
                                if (!0 === this.chooser) { if (this.selected) { var o = this.options.selectionWidth; "function" == typeof o ? r.width = o(r.width) : "number" == typeof o && (r.width += o), r.width = Math.max(r.width, .3 / this.body.view.scale), r.color = this.options.color.highlight, r.shadow = this.options.shadow.enabled } else if (this.hover) { var g = this.options.hoverWidth; "function" == typeof g ? r.width = g(r.width) : "number" == typeof g && (r.width += g), r.width = Math.max(r.width, .3 / this.body.view.scale), r.color = this.options.color.hover, r.shadow = this.options.shadow.enabled } } else "function" == typeof this.chooser && (this.chooser(r, this.options.id, this.selected, this.hover), void 0 !== r.color && (r.inheritsColor = !1), !1 === r.shadow && (r.shadowColor === this.options.shadow.color && r.shadowSize === this.options.shadow.size && r.shadowX === this.options.shadow.x && r.shadowY === this.options.shadow.y || (r.shadow = !0)));
                            else r.shadow = this.options.shadow.enabled, r.width = Math.max(r.width, .3 / this.body.view.scale);
                            return r
                        }
                    }, {
                        key: "updateLabelModule",
                        value: function(t) {
                            var e = [t, this.options, this.globalOptions, this.defaultOptions];
                            this.labelModule.update(this.options, e), void 0 !== this.labelModule.baseSize && (this.baseFontSize = this.labelModule.baseSize)
                        }
                    }, {
                        key: "updateEdgeType",
                        value: function() {
                            var t = this.options.smooth,
                                e = !1,
                                n = !0;
                            return void 0 !== this.edgeType && ((this.edgeType instanceof Ou && !0 === t.enabled && "dynamic" === t.type || this.edgeType instanceof Nu && !0 === t.enabled && "cubicBezier" === t.type || this.edgeType instanceof Tu && !0 === t.enabled && "dynamic" !== t.type && "cubicBezier" !== t.type || this.edgeType instanceof Pu && !1 === t.type.enabled) && (n = !1), !0 === n && (e = this.cleanup())), !0 === n ? !0 === t.enabled ? "dynamic" === t.type ? (e = !0, this.edgeType = new Ou(this.options, this.body, this.labelModule)) : "cubicBezier" === t.type ? this.edgeType = new Nu(this.options, this.body, this.labelModule) : this.edgeType = new Tu(this.options, this.body, this.labelModule) : this.edgeType = new Pu(this.options, this.body, this.labelModule) : this.edgeType.setOptions(this.options), e
                        }
                    }, { key: "connect", value: function() { this.disconnect(), this.from = this.body.nodes[this.fromId] || void 0, this.to = this.body.nodes[this.toId] || void 0, this.connected = void 0 !== this.from && void 0 !== this.to, !0 === this.connected ? (this.from.attachEdge(this), this.to.attachEdge(this)) : (this.from && this.from.detachEdge(this), this.to && this.to.detachEdge(this)), this.edgeType.connect() } }, { key: "disconnect", value: function() { this.from && (this.from.detachEdge(this), this.from = void 0), this.to && (this.to.detachEdge(this), this.to = void 0), this.connected = !1 } }, { key: "getTitle", value: function() { return this.title } }, { key: "isSelected", value: function() { return this.selected } }, { key: "getValue", value: function() { return this.options.value } }, {
                        key: "setValueRange",
                        value: function(t, e, n) {
                            if (void 0 !== this.options.value) {
                                var i = this.options.scaling.customScalingFunction(t, e, n, this.options.value),
                                    r = this.options.scaling.max - this.options.scaling.min;
                                if (!0 === this.options.scaling.label.enabled) {
                                    var o = this.options.scaling.label.max - this.options.scaling.label.min;
                                    this.options.font.size = this.options.scaling.label.min + i * o
                                }
                                this.options.width = this.options.scaling.min + i * r
                            } else this.options.width = this.baseWidth, this.options.font.size = this.baseFontSize;
                            this._setInteractionWidths(), this.updateLabelModule()
                        }
                    }, { key: "_setInteractionWidths", value: function() { "function" == typeof this.options.hoverWidth ? this.edgeType.hoverWidth = this.options.hoverWidth(this.options.width) : this.edgeType.hoverWidth = this.options.hoverWidth + this.options.width, "function" == typeof this.options.selectionWidth ? this.edgeType.selectionWidth = this.options.selectionWidth(this.options.width) : this.edgeType.selectionWidth = this.options.selectionWidth + this.options.width } }, {
                        key: "draw",
                        value: function(t) {
                            var e = this.getFormattingValues();
                            if (!e.hidden) {
                                var n = this.edgeType.getViaNode();
                                this.edgeType.drawLine(t, e, this.selected, this.hover, n), this.drawLabel(t, n)
                            }
                        }
                    }, {
                        key: "drawArrows",
                        value: function(t) {
                            var e = this.getFormattingValues();
                            if (!e.hidden) {
                                var n = this.edgeType.getViaNode(),
                                    i = {};
                                this.edgeType.fromPoint = this.edgeType.from, this.edgeType.toPoint = this.edgeType.to, e.fromArrow && (i.from = this.edgeType.getArrowData(t, "from", n, this.selected, this.hover, e), !1 === e.arrowStrikethrough && (this.edgeType.fromPoint = i.from.core), e.fromArrowSrc && (i.from.image = this.imagelist.load(e.fromArrowSrc)), e.fromArrowImageWidth && (i.from.imageWidth = e.fromArrowImageWidth), e.fromArrowImageHeight && (i.from.imageHeight = e.fromArrowImageHeight)), e.toArrow && (i.to = this.edgeType.getArrowData(t, "to", n, this.selected, this.hover, e), !1 === e.arrowStrikethrough && (this.edgeType.toPoint = i.to.core), e.toArrowSrc && (i.to.image = this.imagelist.load(e.toArrowSrc)), e.toArrowImageWidth && (i.to.imageWidth = e.toArrowImageWidth), e.toArrowImageHeight && (i.to.imageHeight = e.toArrowImageHeight)), e.middleArrow && (i.middle = this.edgeType.getArrowData(t, "middle", n, this.selected, this.hover, e), e.middleArrowSrc && (i.middle.image = this.imagelist.load(e.middleArrowSrc)), e.middleArrowImageWidth && (i.middle.imageWidth = e.middleArrowImageWidth), e.middleArrowImageHeight && (i.middle.imageHeight = e.middleArrowImageHeight)), e.fromArrow && this.edgeType.drawArrowHead(t, e, this.selected, this.hover, i.from), e.middleArrow && this.edgeType.drawArrowHead(t, e, this.selected, this.hover, i.middle), e.toArrow && this.edgeType.drawArrowHead(t, e, this.selected, this.hover, i.to)
                            }
                        }
                    }, {
                        key: "drawLabel",
                        value: function(t, e) {
                            if (void 0 !== this.options.label) {
                                var n, i = this.from,
                                    r = this.to;
                                if (this.labelModule.differentState(this.selected, this.hover) && this.labelModule.getTextSize(t, this.selected, this.hover), i.id != r.id) {
                                    this.labelModule.pointToSelf = !1, n = this.edgeType.getPoint(.5, e), t.save();
                                    var o = this._getRotation(t);
                                    0 != o.angle && (t.translate(o.x, o.y), t.rotate(o.angle)), this.labelModule.draw(t, n.x, n.y, this.selected, this.hover), t.restore()
                                } else {
                                    this.labelModule.pointToSelf = !0;
                                    var g = GC(t, this.options.selfReference.angle, this.options.selfReference.size, i);
                                    n = this._pointOnCircle(g.x, g.y, this.options.selfReference.size, this.options.selfReference.angle), this.labelModule.draw(t, n.x, n.y, this.selected, this.hover)
                                }
                            }
                        }
                    }, {
                        key: "getItemsOnPoint",
                        value: function(t) {
                            var e = [];
                            if (this.labelModule.visible()) {
                                var n = this._getRotation();
                                VC(this.labelModule.getSize(), t, n) && e.push({ edgeId: this.id, labelId: 0 })
                            }
                            var i = { left: t.x, top: t.y };
                            return this.isOverlappingWith(i) && e.push({ edgeId: this.id }), e
                        }
                    }, {
                        key: "isOverlappingWith",
                        value: function(t) {
                            if (this.connected) {
                                var e = this.from.x,
                                    n = this.from.y,
                                    i = this.to.x,
                                    r = this.to.y,
                                    o = t.left,
                                    g = t.top;
                                return this.edgeType.getDistanceToEdge(e, n, i, r, o, g) < 10
                            }
                            return !1
                        }
                    }, {
                        key: "_getRotation",
                        value: function(t) {
                            var e = this.edgeType.getViaNode(),
                                n = this.edgeType.getPoint(.5, e);
                            void 0 !== t && this.labelModule.calculateLabelSize(t, this.selected, this.hover, n.x, n.y);
                            var i = { x: n.x, y: this.labelModule.size.yLine, angle: 0 };
                            if (!this.labelModule.visible()) return i;
                            if ("horizontal" === this.options.font.align) return i;
                            var r = this.from.y - this.to.y,
                                o = this.from.x - this.to.x,
                                g = Math.atan2(r, o);
                            return (g < -1 && o < 0 || g > 0 && o < 0) && (g += Math.PI), i.angle = g, i
                        }
                    }, { key: "_pointOnCircle", value: function(t, e, n, i) { return { x: t + n * Math.cos(i), y: e - n * Math.sin(i) } } }, { key: "select", value: function() { this.selected = !0 } }, { key: "unselect", value: function() { this.selected = !1 } }, { key: "cleanup", value: function() { return this.edgeType.cleanup() } }, { key: "remove", value: function() { this.cleanup(), this.disconnect(), delete this.body.edges[this.id] } }, { key: "endPointsValid", value: function() { return void 0 !== this.body.nodes[this.fromId] && void 0 !== this.body.nodes[this.toId] } }], [{
                        key: "parseOptions",
                        value: function(t, e) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
                                i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},
                                r = arguments.length > 4 && void 0 !== arguments[4] && arguments[4],
                                o = ["endPointOffset", "arrowStrikethrough", "id", "from", "hidden", "hoverWidth", "labelHighlightBold", "length", "line", "opacity", "physics", "scaling", "selectionWidth", "selfReferenceSize", "selfReference", "to", "title", "value", "width", "font", "chosen", "widthConstraint"];
                            if (Mo(o, t, e, n), void 0 !== e.endPointOffset && void 0 !== e.endPointOffset.from && (QA(e.endPointOffset.from) ? t.endPointOffset.from = e.endPointOffset.from : (t.endPointOffset.from = void 0 !== i.endPointOffset.from ? i.endPointOffset.from : 0, console.error("endPointOffset.from is not a valid number"))), void 0 !== e.endPointOffset && void 0 !== e.endPointOffset.to && (QA(e.endPointOffset.to) ? t.endPointOffset.to = e.endPointOffset.to : (t.endPointOffset.to = void 0 !== i.endPointOffset.to ? i.endPointOffset.to : 0, console.error("endPointOffset.to is not a valid number"))), YC(e.label) ? t.label = e.label : YC(t.label) || (t.label = void 0), tg(t, e, "smooth", i), tg(t, e, "shadow", i), tg(t, e, "background", i), void 0 !== e.dashes && null !== e.dashes ? t.dashes = e.dashes : !0 === n && null === e.dashes && (t.dashes = hi(i.dashes)), void 0 !== e.scaling && null !== e.scaling ? (void 0 !== e.scaling.min && (t.scaling.min = e.scaling.min), void 0 !== e.scaling.max && (t.scaling.max = e.scaling.max), tg(t.scaling, e.scaling, "label", i.scaling)) : !0 === n && null === e.scaling && (t.scaling = hi(i.scaling)), void 0 !== e.arrows && null !== e.arrows)
                                if ("string" == typeof e.arrows) {
                                    var g = e.arrows.toLowerCase();
                                    t.arrows.to.enabled = -1 != pr(g).call(g, "to"), t.arrows.middle.enabled = -1 != pr(g).call(g, "middle"), t.arrows.from.enabled = -1 != pr(g).call(g, "from")
                                } else {
                                    if ("object" !== io(e.arrows)) throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:" + ca(e.arrows));
                                    tg(t.arrows, e.arrows, "to", i.arrows), tg(t.arrows, e.arrows, "middle", i.arrows), tg(t.arrows, e.arrows, "from", i.arrows)
                                }
                            else !0 === n && null === e.arrows && (t.arrows = hi(i.arrows));
                            if (void 0 !== e.color && null !== e.color) {
                                var s = Do(e.color) ? { color: e.color, highlight: e.color, hover: e.color, inherit: !1, opacity: 1 } : e.color,
                                    A = t.color;
                                if (r) Fo(A, i.color, !1, n);
                                else
                                    for (var a in A) Object.prototype.hasOwnProperty.call(A, a) && delete A[a];
                                if (Do(A)) A.color = A, A.highlight = A, A.hover = A, A.inherit = !1, void 0 === s.opacity && (A.opacity = 1);
                                else {
                                    var C = !1;
                                    void 0 !== s.color && (A.color = s.color, C = !0), void 0 !== s.highlight && (A.highlight = s.highlight, C = !0), void 0 !== s.hover && (A.hover = s.hover, C = !0), void 0 !== s.inherit && (A.inherit = s.inherit), void 0 !== s.opacity && (A.opacity = Math.min(1, Math.max(0, s.opacity))), !0 === C ? A.inherit = !1 : void 0 === A.inherit && (A.inherit = "from")
                                }
                            } else !0 === n && null === e.color && (t.color = $o(i.color));
                            !0 === n && null === e.font && (t.font = $o(i.font)), Object.prototype.hasOwnProperty.call(e, "selfReferenceSize") && (console.log("The selfReferenceSize property has been deprecated. Please use selfReference property instead. The selfReference can be set like thise selfReference:{size:30, angle:Math.PI / 4}"), t.selfReference.size = e.selfReferenceSize)
                        }
                    }]), t
                }(),
                ju = function() {
                    function t(e, n, i) {
                        var r, o = this;
                        DA(this, t), this.body = e, this.images = n, this.groups = i, this.body.functions.createEdge = tt(r = this.create).call(r, this), this.edgesListeners = { add: function(t, e) { o.add(e.items) }, update: function(t, e) { o.update(e.items) }, remove: function(t, e) { o.remove(e.items) } }, this.options = {}, this.defaultOptions = { arrows: { to: { enabled: !1, scaleFactor: 1, type: "arrow" }, middle: { enabled: !1, scaleFactor: 1, type: "arrow" }, from: { enabled: !1, scaleFactor: 1, type: "arrow" } }, endPointOffset: { from: 0, to: 0 }, arrowStrikethrough: !0, color: { color: "#848484", highlight: "#848484", hover: "#848484", inherit: "from", opacity: 1 }, dashes: !1, font: { color: "#343434", size: 14, face: "arial", background: "none", strokeWidth: 2, strokeColor: "#ffffff", align: "horizontal", multi: !1, vadjust: 0, bold: { mod: "bold" }, boldital: { mod: "bold italic" }, ital: { mod: "italic" }, mono: { mod: "", size: 15, face: "courier new", vadjust: 2 } }, hidden: !1, hoverWidth: 1.5, label: void 0, labelHighlightBold: !0, length: void 0, physics: !0, scaling: { min: 1, max: 15, label: { enabled: !0, min: 14, max: 30, maxVisible: 30, drawThreshold: 5 }, customScalingFunction: function(t, e, n, i) { if (e === t) return .5; var r = 1 / (e - t); return Math.max(0, (i - t) * r) } }, selectionWidth: 1.5, selfReference: { size: 20, angle: Math.PI / 4, renderBehindTheNode: !0 }, shadow: { enabled: !1, color: "rgba(0,0,0,0.5)", size: 10, x: 5, y: 5 }, background: { enabled: !1, color: "rgba(111,111,111,1)", size: 10, dashes: !1 }, smooth: { enabled: !0, type: "dynamic", forceDirection: "none", roundness: .5 }, title: void 0, width: 1, value: void 0 }, Fo(this.options, this.defaultOptions), this.bindEventListeners()
                    }
                    return RA(t, [{
                        key: "bindEventListeners",
                        value: function() {
                            var t, e, n = this;
                            this.body.emitter.on("_forceDisableDynamicCurves", (function(t) {
                                var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
                                "dynamic" === t && (t = "continuous");
                                var i = !1;
                                for (var r in n.body.edges)
                                    if (Object.prototype.hasOwnProperty.call(n.body.edges, r)) {
                                        var o = n.body.edges[r],
                                            g = n.body.data.edges.get(r);
                                        if (null != g) {
                                            var s = g.smooth;
                                            void 0 !== s && !0 === s.enabled && "dynamic" === s.type && (void 0 === t ? o.setOptions({ smooth: !1 }) : o.setOptions({ smooth: { type: t } }), i = !0)
                                        }
                                    }!0 === e && !0 === i && n.body.emitter.emit("_dataChanged")
                            })), this.body.emitter.on("_dataUpdated", (function() { n.reconnectEdges() })), this.body.emitter.on("refreshEdges", tt(t = this.refresh).call(t, this)), this.body.emitter.on("refresh", tt(e = this.refresh).call(e, this)), this.body.emitter.on("destroy", (function() { Vo(n.edgesListeners, (function(t, e) { n.body.data.edges && n.body.data.edges.off(e, t) })), delete n.body.functions.createEdge, delete n.edgesListeners.add, delete n.edgesListeners.update, delete n.edgesListeners.remove, delete n.edgesListeners }))
                        }
                    }, {
                        key: "setOptions",
                        value: function(t) {
                            if (void 0 !== t) {
                                Mu.parseOptions(this.options, t, !0, this.defaultOptions, !0);
                                var e = !1;
                                if (void 0 !== t.smooth)
                                    for (var n in this.body.edges) Object.prototype.hasOwnProperty.call(this.body.edges, n) && (e = this.body.edges[n].updateEdgeType() || e);
                                if (void 0 !== t.font)
                                    for (var i in this.body.edges) Object.prototype.hasOwnProperty.call(this.body.edges, i) && this.body.edges[i].updateLabelModule();
                                void 0 === t.hidden && void 0 === t.physics && !0 !== e || this.body.emitter.emit("_dataChanged")
                            }
                        }
                    }, {
                        key: "setData",
                        value: function(t) {
                            var e = this,
                                n = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
                                i = this.body.data.edges;
                            if (t instanceof DC || t instanceof NC) this.body.data.edges = t;
                            else if (to(t)) this.body.data.edges = new DC, this.body.data.edges.add(t);
                            else {
                                if (t) throw new TypeError("Array or DataSet expected");
                                this.body.data.edges = new DC
                            }
                            if (i && Vo(this.edgesListeners, (function(t, e) { i.off(e, t) })), this.body.edges = {}, this.body.data.edges) {
                                Vo(this.edgesListeners, (function(t, n) { e.body.data.edges.on(n, t) }));
                                var r = this.body.data.edges.getIds();
                                this.add(r, !0)
                            }
                            this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"), !1 === n && this.body.emitter.emit("_dataChanged")
                        }
                    }, {
                        key: "add",
                        value: function(t) {
                            for (var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = this.body.edges, i = this.body.data.edges, r = 0; r < t.length; r++) {
                                var o = t[r],
                                    g = n[o];
                                g && g.disconnect();
                                var s = i.get(o, { showInternalIds: !0 });
                                n[o] = this.create(s)
                            }
                            this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"), !1 === e && this.body.emitter.emit("_dataChanged")
                        }
                    }, {
                        key: "update",
                        value: function(t) {
                            for (var e = this.body.edges, n = this.body.data.edges, i = !1, r = 0; r < t.length; r++) {
                                var o = t[r],
                                    g = n.get(o),
                                    s = e[o];
                                void 0 !== s ? (s.disconnect(), i = s.setOptions(g) || i, s.connect()) : (this.body.edges[o] = this.create(g), i = !0)
                            }!0 === i ? (this.body.emitter.emit("_adjustEdgesForHierarchicalLayout"), this.body.emitter.emit("_dataChanged")) : this.body.emitter.emit("_dataUpdated")
                        }
                    }, {
                        key: "remove",
                        value: function(t) {
                            var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
                            if (0 !== t.length) {
                                var n = this.body.edges;
                                Vo(t, (function(t) {
                                    var e = n[t];
                                    void 0 !== e && e.remove()
                                })), e && this.body.emitter.emit("_dataChanged")
                            }
                        }
                    }, {
                        key: "refresh",
                        value: function() {
                            var t = this;
                            Vo(this.body.edges, (function(e, n) {
                                var i = t.body.data.edges.get(n);
                                void 0 !== i && e.setOptions(i)
                            }))
                        }
                    }, { key: "create", value: function(t) { return new Mu(t, this.body, this.images, this.options, this.defaultOptions) } }, {
                        key: "reconnectEdges",
                        value: function() {
                            var t, e = this.body.nodes,
                                n = this.body.edges;
                            for (t in e) Object.prototype.hasOwnProperty.call(e, t) && (e[t].edges = []);
                            for (t in n)
                                if (Object.prototype.hasOwnProperty.call(n, t)) {
                                    var i = n[t];
                                    i.from = null, i.to = null, i.connect()
                                }
                        }
                    }, {
                        key: "getConnectedNodes",
                        value: function(t) {
                            var e = [];
                            if (void 0 !== this.body.edges[t]) {
                                var n = this.body.edges[t];
                                void 0 !== n.fromId && e.push(n.fromId), void 0 !== n.toId && e.push(n.toId)
                            }
                            return e
                        }
                    }, { key: "_updateState", value: function() { this._addMissingEdges(), this._removeInvalidEdges() } }, {
                        key: "_removeInvalidEdges",
                        value: function() {
                            var t = this,
                                e = [];
                            Vo(this.body.edges, (function(n, i) {
                                var r = t.body.nodes[n.toId],
                                    o = t.body.nodes[n.fromId];
                                void 0 !== r && !0 === r.isCluster || void 0 !== o && !0 === o.isCluster || void 0 !== r && void 0 !== o || e.push(i)
                            })), this.remove(e, !1)
                        }
                    }, {
                        key: "_addMissingEdges",
                        value: function() {
                            var t = this.body.data.edges;
                            if (null != t) {
                                var e = this.body.edges,
                                    n = [];
                                zi(t).call(t, (function(t, i) { void 0 === e[i] && n.push(i) })), this.add(n, !0)
                            }
                        }
                    }]), t
                }(),
                Fu = function() {
                    function t(e, n, i) { DA(this, t), this.body = e, this.physicsBody = n, this.barnesHutTree, this.setOptions(i), this._rng = mo("BARNES HUT SOLVER") }
                    return RA(t, [{ key: "setOptions", value: function(t) { this.options = t, this.thetaInversed = 1 / this.options.theta, this.overlapAvoidanceFactor = 1 - Math.max(0, Math.min(1, this.options.avoidOverlap)) } }, {
                        key: "solve",
                        value: function() {
                            if (0 !== this.options.gravitationalConstant && this.physicsBody.physicsNodeIndices.length > 0) {
                                var t, e = this.body.nodes,
                                    n = this.physicsBody.physicsNodeIndices,
                                    i = n.length,
                                    r = this._formBarnesHutTree(e, n);
                                this.barnesHutTree = r;
                                for (var o = 0; o < i; o++)(t = e[n[o]]).options.mass > 0 && this._getForceContributions(r.root, t)
                            }
                        }
                    }, { key: "_getForceContributions", value: function(t, e) { this._getForceContribution(t.children.NW, e), this._getForceContribution(t.children.NE, e), this._getForceContribution(t.children.SW, e), this._getForceContribution(t.children.SE, e) } }, {
                        key: "_getForceContribution",
                        value: function(t, e) {
                            if (t.childrenCount > 0) {
                                var n = t.centerOfMass.x - e.x,
                                    i = t.centerOfMass.y - e.y,
                                    r = Math.sqrt(n * n + i * i);
                                r * t.calcSize > this.thetaInversed ? this._calculateForces(r, n, i, e, t) : 4 === t.childrenCount ? this._getForceContributions(t, e) : t.children.data.id != e.id && this._calculateForces(r, n, i, e, t)
                            }
                        }
                    }, {
                        key: "_calculateForces",
                        value: function(t, e, n, i, r) {
                            0 === t && (e = t = .1), this.overlapAvoidanceFactor < 1 && i.shape.radius && (t = Math.max(.1 + this.overlapAvoidanceFactor * i.shape.radius, t - i.shape.radius));
                            var o = this.options.gravitationalConstant * r.mass * i.options.mass / Math.pow(t, 3),
                                g = e * o,
                                s = n * o;
                            this.physicsBody.forces[i.id].x += g, this.physicsBody.forces[i.id].y += s
                        }
                    }, {
                        key: "_formBarnesHutTree",
                        value: function(t, e) {
                            for (var n, i = e.length, r = t[e[0]].x, o = t[e[0]].y, g = t[e[0]].x, s = t[e[0]].y, A = 1; A < i; A++) {
                                var a = t[e[A]],
                                    C = a.x,
                                    I = a.y;
                                a.options.mass > 0 && (C < r && (r = C), C > g && (g = C), I < o && (o = I), I > s && (s = I))
                            }
                            var u = Math.abs(g - r) - Math.abs(s - o);
                            u > 0 ? (o -= .5 * u, s += .5 * u) : (r += .5 * u, g -= .5 * u);
                            var c = Math.max(1e-5, Math.abs(g - r)),
                                l = .5 * c,
                                h = .5 * (r + g),
                                d = .5 * (o + s),
                                f = { root: { centerOfMass: { x: 0, y: 0 }, mass: 0, range: { minX: h - l, maxX: h + l, minY: d - l, maxY: d + l }, size: c, calcSize: 1 / c, children: { data: null }, maxWidth: 0, level: 0, childrenCount: 4 } };
                            this._splitBranch(f.root);
                            for (var p = 0; p < i; p++)(n = t[e[p]]).options.mass > 0 && this._placeInTree(f.root, n);
                            return f
                        }
                    }, {
                        key: "_updateBranchMass",
                        value: function(t, e) {
                            var n = t.centerOfMass,
                                i = t.mass + e.options.mass,
                                r = 1 / i;
                            n.x = n.x * t.mass + e.x * e.options.mass, n.x *= r, n.y = n.y * t.mass + e.y * e.options.mass, n.y *= r, t.mass = i;
                            var o = Math.max(Math.max(e.height, e.radius), e.width);
                            t.maxWidth = t.maxWidth < o ? o : t.maxWidth
                        }
                    }, {
                        key: "_placeInTree",
                        value: function(t, e, n) {
                            1 == n && void 0 !== n || this._updateBranchMass(t, e);
                            var i, r = t.children.NW.range;
                            i = r.maxX > e.x ? r.maxY > e.y ? "NW" : "SW" : r.maxY > e.y ? "NE" : "SE", this._placeInRegion(t, e, i)
                        }
                    }, {
                        key: "_placeInRegion",
                        value: function(t, e, n) {
                            var i = t.children[n];
                            switch (i.childrenCount) {
                                case 0:
                                    i.children.data = e, i.childrenCount = 1, this._updateBranchMass(i, e);
                                    break;
                                case 1:
                                    i.children.data.x === e.x && i.children.data.y === e.y ? (e.x += this._rng(), e.y += this._rng()) : (this._splitBranch(i), this._placeInTree(i, e));
                                    break;
                                case 4:
                                    this._placeInTree(i, e)
                            }
                        }
                    }, {
                        key: "_splitBranch",
                        value: function(t) {
                            var e = null;
                            1 === t.childrenCount && (e = t.children.data, t.mass = 0, t.centerOfMass.x = 0, t.centerOfMass.y = 0), t.childrenCount = 4, t.children.data = null, this._insertRegion(t, "NW"), this._insertRegion(t, "NE"), this._insertRegion(t, "SW"), this._insertRegion(t, "SE"), null != e && this._placeInTree(t, e)
                        }
                    }, {
                        key: "_insertRegion",
                        value: function(t, e) {
                            var n, i, r, o, g = .5 * t.size;
                            switch (e) {
                                case "NW":
                                    n = t.range.minX, i = t.range.minX + g, r = t.range.minY, o = t.range.minY + g;
                                    break;
                                case "NE":
                                    n = t.range.minX + g, i = t.range.maxX, r = t.range.minY, o = t.range.minY + g;
                                    break;
                                case "SW":
                                    n = t.range.minX, i = t.range.minX + g, r = t.range.minY + g, o = t.range.maxY;
                                    break;
                                case "SE":
                                    n = t.range.minX + g, i = t.range.maxX, r = t.range.minY + g, o = t.range.maxY
                            }
                            t.children[e] = { centerOfMass: { x: 0, y: 0 }, mass: 0, range: { minX: n, maxX: i, minY: r, maxY: o }, size: .5 * t.size, calcSize: 2 * t.calcSize, children: { data: null }, maxWidth: 0, level: t.level + 1, childrenCount: 0 }
                        }
                    }, { key: "_debug", value: function(t, e) { void 0 !== this.barnesHutTree && (t.lineWidth = 1, this._drawBranch(this.barnesHutTree.root, t, e)) } }, { key: "_drawBranch", value: function(t, e, n) { void 0 === n && (n = "#FF0000"), 4 === t.childrenCount && (this._drawBranch(t.children.NW, e), this._drawBranch(t.children.NE, e), this._drawBranch(t.children.SE, e), this._drawBranch(t.children.SW, e)), e.strokeStyle = n, e.beginPath(), e.moveTo(t.range.minX, t.range.minY), e.lineTo(t.range.maxX, t.range.minY), e.stroke(), e.beginPath(), e.moveTo(t.range.maxX, t.range.minY), e.lineTo(t.range.maxX, t.range.maxY), e.stroke(), e.beginPath(), e.moveTo(t.range.maxX, t.range.maxY), e.lineTo(t.range.minX, t.range.maxY), e.stroke(), e.beginPath(), e.moveTo(t.range.minX, t.range.maxY), e.lineTo(t.range.minX, t.range.minY), e.stroke() } }]), t
                }(),
                zu = function() {
                    function t(e, n, i) { DA(this, t), this._rng = mo("REPULSION SOLVER"), this.body = e, this.physicsBody = n, this.setOptions(i) }
                    return RA(t, [{ key: "setOptions", value: function(t) { this.options = t } }, { key: "solve", value: function() { for (var t, e, n, i, r, o, g, s, A = this.body.nodes, a = this.physicsBody.physicsNodeIndices, C = this.physicsBody.forces, I = this.options.nodeDistance, u = -2 / 3 / I, c = 0; c < a.length - 1; c++) { g = A[a[c]]; for (var l = c + 1; l < a.length; l++) t = (s = A[a[l]]).x - g.x, e = s.y - g.y, 0 === (n = Math.sqrt(t * t + e * e)) && (t = n = .1 * this._rng()), n < 2 * I && (o = n < .5 * I ? 1 : u * n + 4 / 3, i = t * (o /= n), r = e * o, C[g.id].x -= i, C[g.id].y -= r, C[s.id].x += i, C[s.id].y += r) } } }]), t
                }(),
                Lu = function() {
                    function t(e, n, i) { DA(this, t), this.body = e, this.physicsBody = n, this.setOptions(i) }
                    return RA(t, [{ key: "setOptions", value: function(t) { this.options = t, this.overlapAvoidanceFactor = Math.max(0, Math.min(1, this.options.avoidOverlap || 0)) } }, {
                        key: "solve",
                        value: function() {
                            for (var t = this.body.nodes, e = this.physicsBody.physicsNodeIndices, n = this.physicsBody.forces, i = this.options.nodeDistance, r = 0; r < e.length - 1; r++)
                                for (var o = t[e[r]], g = r + 1; g < e.length; g++) {
                                    var s = t[e[g]];
                                    if (o.level === s.level) {
                                        var A = i + this.overlapAvoidanceFactor * ((o.shape.radius || 0) / 2 + (s.shape.radius || 0) / 2),
                                            a = s.x - o.x,
                                            C = s.y - o.y,
                                            I = Math.sqrt(a * a + C * C),
                                            u = void 0;
                                        u = I < A ? -Math.pow(.05 * I, 2) + Math.pow(.05 * A, 2) : 0, 0 !== I && (u /= I);
                                        var c = a * u,
                                            l = C * u;
                                        n[o.id].x -= c, n[o.id].y -= l, n[s.id].x += c, n[s.id].y += l
                                    }
                                }
                        }
                    }]), t
                }(),
                Bu = function() {
                    function t(e, n, i) { DA(this, t), this.body = e, this.physicsBody = n, this.setOptions(i) }
                    return RA(t, [{ key: "setOptions", value: function(t) { this.options = t } }, { key: "solve", value: function() { for (var t, e, n, i, r, o = this.physicsBody.physicsEdgeIndices, g = this.body.edges, s = 0; s < o.length; s++) !0 === (e = g[o[s]]).connected && e.toId !== e.fromId && void 0 !== this.body.nodes[e.toId] && void 0 !== this.body.nodes[e.fromId] && (void 0 !== e.edgeType.via ? (t = void 0 === e.options.length ? this.options.springLength : e.options.length, n = e.to, i = e.edgeType.via, r = e.from, this._calculateSpringForce(n, i, .5 * t), this._calculateSpringForce(i, r, .5 * t)) : (t = void 0 === e.options.length ? 1.5 * this.options.springLength : e.options.length, this._calculateSpringForce(e.from, e.to, t))) } }, {
                        key: "_calculateSpringForce",
                        value: function(t, e, n) {
                            var i = t.x - e.x,
                                r = t.y - e.y,
                                o = Math.max(Math.sqrt(i * i + r * r), .01),
                                g = this.options.springConstant * (n - o) / o,
                                s = i * g,
                                A = r * g;
                            void 0 !== this.physicsBody.forces[t.id] && (this.physicsBody.forces[t.id].x += s, this.physicsBody.forces[t.id].y += A), void 0 !== this.physicsBody.forces[e.id] && (this.physicsBody.forces[e.id].x -= s, this.physicsBody.forces[e.id].y -= A)
                        }
                    }]), t
                }(),
                Zu = function() {
                    function t(e, n, i) { DA(this, t), this.body = e, this.physicsBody = n, this.setOptions(i) }
                    return RA(t, [{ key: "setOptions", value: function(t) { this.options = t } }, {
                        key: "solve",
                        value: function() {
                            for (var t, e, n, i, r, o, g, s, A, a, C = this.body.edges, I = this.physicsBody.physicsEdgeIndices, u = this.physicsBody.physicsNodeIndices, c = this.physicsBody.forces, l = 0; l < u.length; l++) {
                                var h = u[l];
                                c[h].springFx = 0, c[h].springFy = 0
                            }
                            for (var d = 0; d < I.length; d++) !0 === (e = C[I[d]]).connected && (t = void 0 === e.options.length ? this.options.springLength : e.options.length, n = e.from.x - e.to.x, i = e.from.y - e.to.y, s = 0 === (s = Math.sqrt(n * n + i * i)) ? .01 : s, r = n * (g = this.options.springConstant * (t - s) / s), o = i * g, e.to.level != e.from.level ? (void 0 !== c[e.toId] && (c[e.toId].springFx -= r, c[e.toId].springFy -= o), void 0 !== c[e.fromId] && (c[e.fromId].springFx += r, c[e.fromId].springFy += o)) : (void 0 !== c[e.toId] && (c[e.toId].x -= .5 * r, c[e.toId].y -= .5 * o), void 0 !== c[e.fromId] && (c[e.fromId].x += .5 * r, c[e.fromId].y += .5 * o)));
                            g = 1;
                            for (var f = 0; f < u.length; f++) {
                                var p = u[f];
                                A = Math.min(g, Math.max(-g, c[p].springFx)), a = Math.min(g, Math.max(-g, c[p].springFy)), c[p].x += A, c[p].y += a
                            }
                            for (var v = 0, y = 0, b = 0; b < u.length; b++) {
                                var m = u[b];
                                v += c[m].x, y += c[m].y
                            }
                            for (var w = v / u.length, _ = y / u.length, k = 0; k < u.length; k++) {
                                var x = u[k];
                                c[x].x -= w, c[x].y -= _
                            }
                        }
                    }]), t
                }(),
                Vu = function() {
                    function t(e, n, i) { DA(this, t), this.body = e, this.physicsBody = n, this.setOptions(i) }
                    return RA(t, [{ key: "setOptions", value: function(t) { this.options = t } }, { key: "solve", value: function() { for (var t, e, n, i, r = this.body.nodes, o = this.physicsBody.physicsNodeIndices, g = this.physicsBody.forces, s = 0; s < o.length; s++) { t = -(i = r[o[s]]).x, e = -i.y, n = Math.sqrt(t * t + e * e), this._calculateForces(n, t, e, g, i) } } }, {
                        key: "_calculateForces",
                        value: function(t, e, n, i, r) {
                            var o = 0 === t ? 0 : this.options.centralGravity / t;
                            i[r.id].x = e * o, i[r.id].y = n * o
                        }
                    }]), t
                }();

            function Yu(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var Gu = function(t) {
                ka(n, t);
                var e = Yu(n);

                function n(t, i, r) { var o; return DA(this, n), (o = e.call(this, t, i, r))._rng = mo("FORCE ATLAS 2 BASED REPULSION SOLVER"), o }
                return RA(n, [{
                    key: "_calculateForces",
                    value: function(t, e, n, i, r) {
                        0 === t && (e = t = .1 * this._rng()), this.overlapAvoidanceFactor < 1 && i.shape.radius && (t = Math.max(.1 + this.overlapAvoidanceFactor * i.shape.radius, t - i.shape.radius));
                        var o = i.edges.length + 1,
                            g = this.options.gravitationalConstant * r.mass * i.options.mass * o / Math.pow(t, 2),
                            s = e * g,
                            A = n * g;
                        this.physicsBody.forces[i.id].x += s, this.physicsBody.forces[i.id].y += A
                    }
                }]), n
            }(Fu);

            function Uu(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var Wu = function(t) {
                    ka(n, t);
                    var e = Uu(n);

                    function n(t, i, r) { return DA(this, n), e.call(this, t, i, r) }
                    return RA(n, [{
                        key: "_calculateForces",
                        value: function(t, e, n, i, r) {
                            if (t > 0) {
                                var o = r.edges.length + 1,
                                    g = this.options.centralGravity * o * r.options.mass;
                                i[r.id].x = e * g, i[r.id].y = n * g
                            }
                        }
                    }]), n
                }(Vu),
                Hu = function() {
                    function t(e) { DA(this, t), this.body = e, this.physicsBody = { physicsNodeIndices: [], physicsEdgeIndices: [], forces: {}, velocities: {} }, this.physicsEnabled = !0, this.simulationInterval = 1e3 / 60, this.requiresTimeout = !0, this.previousStates = {}, this.referenceState = {}, this.freezeCache = {}, this.renderTimer = void 0, this.adaptiveTimestep = !1, this.adaptiveTimestepEnabled = !1, this.adaptiveCounter = 0, this.adaptiveInterval = 3, this.stabilized = !1, this.startedStabilization = !1, this.stabilizationIterations = 0, this.ready = !1, this.options = {}, this.defaultOptions = { enabled: !0, barnesHut: { theta: .5, gravitationalConstant: -2e3, centralGravity: .3, springLength: 95, springConstant: .04, damping: .09, avoidOverlap: 0 }, forceAtlas2Based: { theta: .5, gravitationalConstant: -50, centralGravity: .01, springConstant: .08, springLength: 100, damping: .4, avoidOverlap: 0 }, repulsion: { centralGravity: .2, springLength: 200, springConstant: .05, nodeDistance: 100, damping: .09, avoidOverlap: 0 }, hierarchicalRepulsion: { centralGravity: 0, springLength: 100, springConstant: .01, nodeDistance: 120, damping: .09 }, maxVelocity: 50, minVelocity: .75, solver: "barnesHut", stabilization: { enabled: !0, iterations: 1e3, updateInterval: 50, onlyDynamicEdges: !1, fit: !0 }, timestep: .5, adaptiveTimestep: !0, wind: { x: 0, y: 0 } }, bt(this.options, this.defaultOptions), this.timestep = .5, this.layoutFailed = !1, this.bindEventListeners() }
                    return RA(t, [{
                        key: "bindEventListeners",
                        value: function() {
                            var t = this;
                            this.body.emitter.on("initPhysics", (function() { t.initPhysics() })), this.body.emitter.on("_layoutFailed", (function() { t.layoutFailed = !0 })), this.body.emitter.on("resetPhysics", (function() { t.stopSimulation(), t.ready = !1 })), this.body.emitter.on("disablePhysics", (function() { t.physicsEnabled = !1, t.stopSimulation() })), this.body.emitter.on("restorePhysics", (function() { t.setOptions(t.options), !0 === t.ready && t.startSimulation() })), this.body.emitter.on("startSimulation", (function() {!0 === t.ready && t.startSimulation() })), this.body.emitter.on("stopSimulation", (function() { t.stopSimulation() })), this.body.emitter.on("destroy", (function() { t.stopSimulation(!1), t.body.emitter.off() })), this.body.emitter.on("_dataChanged", (function() { t.updatePhysicsData() }))
                        }
                    }, {
                        key: "setOptions",
                        value: function(t) {
                            if (void 0 !== t)
                                if (!1 === t) this.options.enabled = !1, this.physicsEnabled = !1, this.stopSimulation();
                                else if (!0 === t) this.options.enabled = !0, this.physicsEnabled = !0, this.startSimulation();
                            else {
                                this.physicsEnabled = !0, jo(["stabilization"], this.options, t), tg(this.options, t, "stabilization"), void 0 === t.enabled && (this.options.enabled = !0), !1 === this.options.enabled && (this.physicsEnabled = !1, this.stopSimulation());
                                var e = this.options.wind;
                                e && (("number" != typeof e.x || XA(e.x)) && (e.x = 0), ("number" != typeof e.y || XA(e.y)) && (e.y = 0)), this.timestep = this.options.timestep
                            }
                            this.init()
                        }
                    }, { key: "init", value: function() { var t; "forceAtlas2Based" === this.options.solver ? (t = this.options.forceAtlas2Based, this.nodesSolver = new Gu(this.body, this.physicsBody, t), this.edgesSolver = new Bu(this.body, this.physicsBody, t), this.gravitySolver = new Wu(this.body, this.physicsBody, t)) : "repulsion" === this.options.solver ? (t = this.options.repulsion, this.nodesSolver = new zu(this.body, this.physicsBody, t), this.edgesSolver = new Bu(this.body, this.physicsBody, t), this.gravitySolver = new Vu(this.body, this.physicsBody, t)) : "hierarchicalRepulsion" === this.options.solver ? (t = this.options.hierarchicalRepulsion, this.nodesSolver = new Lu(this.body, this.physicsBody, t), this.edgesSolver = new Zu(this.body, this.physicsBody, t), this.gravitySolver = new Vu(this.body, this.physicsBody, t)) : (t = this.options.barnesHut, this.nodesSolver = new Fu(this.body, this.physicsBody, t), this.edgesSolver = new Bu(this.body, this.physicsBody, t), this.gravitySolver = new Vu(this.body, this.physicsBody, t)), this.modelOptions = t } }, { key: "initPhysics", value: function() {!0 === this.physicsEnabled && !0 === this.options.enabled ? !0 === this.options.stabilization.enabled ? this.stabilize() : (this.stabilized = !1, this.ready = !0, this.body.emitter.emit("fit", {}, this.layoutFailed), this.startSimulation()) : (this.ready = !0, this.body.emitter.emit("fit")) } }, { key: "startSimulation", value: function() { var t;!0 === this.physicsEnabled && !0 === this.options.enabled ? (this.stabilized = !1, this.adaptiveTimestep = !1, this.body.emitter.emit("_resizeNodes"), void 0 === this.viewFunction && (this.viewFunction = tt(t = this.simulationStep).call(t, this), this.body.emitter.on("initRedraw", this.viewFunction), this.body.emitter.emit("_startRendering"))) : this.body.emitter.emit("_redraw") } }, {
                        key: "stopSimulation",
                        value: function() {
                            var t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];
                            this.stabilized = !0, !0 === t && this._emitStabilized(), void 0 !== this.viewFunction && (this.body.emitter.off("initRedraw", this.viewFunction), this.viewFunction = void 0, !0 === t && this.body.emitter.emit("_stopRendering"))
                        }
                    }, {
                        key: "simulationStep",
                        value: function() {
                            var t = Ur();
                            this.physicsTick(), (Ur() - t < .4 * this.simulationInterval || !0 === this.runDoubleSpeed) && !1 === this.stabilized && (this.physicsTick(), this.runDoubleSpeed = !0), !0 === this.stabilized && this.stopSimulation()
                        }
                    }, {
                        key: "_emitStabilized",
                        value: function() {
                            var t = this,
                                e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.stabilizationIterations;
                            (this.stabilizationIterations > 1 || !0 === this.startedStabilization) && BA((function() { t.body.emitter.emit("stabilized", { iterations: e }), t.startedStabilization = !1, t.stabilizationIterations = 0 }), 0)
                        }
                    }, { key: "physicsStep", value: function() { this.gravitySolver.solve(), this.nodesSolver.solve(), this.edgesSolver.solve(), this.moveNodes() } }, { key: "adjustTimeStep", value: function() {!0 === this._evaluateStepQuality() ? this.timestep = 1.2 * this.timestep : this.timestep / 1.2 < this.options.timestep ? this.timestep = this.options.timestep : (this.adaptiveCounter = -1, this.timestep = Math.max(this.options.timestep, this.timestep / 1.2)) } }, {
                        key: "physicsTick",
                        value: function() {
                            if (this._startStabilizing(), !0 !== this.stabilized) {
                                if (!0 === this.adaptiveTimestep && !0 === this.adaptiveTimestepEnabled) this.adaptiveCounter % this.adaptiveInterval == 0 ? (this.timestep = 2 * this.timestep, this.physicsStep(), this.revert(), this.timestep = .5 * this.timestep, this.physicsStep(), this.physicsStep(), this.adjustTimeStep()) : this.physicsStep(), this.adaptiveCounter += 1;
                                else this.timestep = this.options.timestep, this.physicsStep();
                                !0 === this.stabilized && this.revert(), this.stabilizationIterations++
                            }
                        }
                    }, {
                        key: "updatePhysicsData",
                        value: function() {
                            this.physicsBody.forces = {}, this.physicsBody.physicsNodeIndices = [], this.physicsBody.physicsEdgeIndices = [];
                            var t = this.body.nodes,
                                e = this.body.edges;
                            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && !0 === t[n].options.physics && this.physicsBody.physicsNodeIndices.push(t[n].id);
                            for (var i in e) Object.prototype.hasOwnProperty.call(e, i) && !0 === e[i].options.physics && this.physicsBody.physicsEdgeIndices.push(e[i].id);
                            for (var r = 0; r < this.physicsBody.physicsNodeIndices.length; r++) {
                                var o = this.physicsBody.physicsNodeIndices[r];
                                this.physicsBody.forces[o] = { x: 0, y: 0 }, void 0 === this.physicsBody.velocities[o] && (this.physicsBody.velocities[o] = { x: 0, y: 0 })
                            }
                            for (var g in this.physicsBody.velocities) void 0 === t[g] && delete this.physicsBody.velocities[g]
                        }
                    }, {
                        key: "revert",
                        value: function() {
                            var t = Hr(this.previousStates),
                                e = this.body.nodes,
                                n = this.physicsBody.velocities;
                            this.referenceState = {};
                            for (var i = 0; i < t.length; i++) {
                                var r = t[i];
                                void 0 !== e[r] ? !0 === e[r].options.physics && (this.referenceState[r] = { positions: { x: e[r].x, y: e[r].y } }, n[r].x = this.previousStates[r].vx, n[r].y = this.previousStates[r].vy, e[r].x = this.previousStates[r].x, e[r].y = this.previousStates[r].y) : delete this.previousStates[r]
                            }
                        }
                    }, {
                        key: "_evaluateStepQuality",
                        value: function() {
                            var t, e, n = this.body.nodes,
                                i = this.referenceState;
                            for (var r in this.referenceState)
                                if (Object.prototype.hasOwnProperty.call(this.referenceState, r) && void 0 !== n[r] && (t = n[r].x - i[r].positions.x, e = n[r].y - i[r].positions.y, Math.sqrt(Math.pow(t, 2) + Math.pow(e, 2)) > .3)) return !1;
                            return !0
                        }
                    }, {
                        key: "moveNodes",
                        value: function() {
                            for (var t = this.physicsBody.physicsNodeIndices, e = 0, n = 0, i = 0; i < t.length; i++) {
                                var r = t[i],
                                    o = this._performStep(r);
                                e = Math.max(e, o), n += o
                            }
                            this.adaptiveTimestepEnabled = n / t.length < 5, this.stabilized = e < this.options.minVelocity
                        }
                    }, { key: "calculateComponentVelocity", value: function(t, e, n) { t += (e - this.modelOptions.damping * t) / n * this.timestep; var i = this.options.maxVelocity || 1e9; return Math.abs(t) > i && (t = t > 0 ? i : -i), t } }, {
                        key: "_performStep",
                        value: function(t) {
                            var e = this.body.nodes[t],
                                n = this.physicsBody.forces[t];
                            this.options.wind && (n.x += this.options.wind.x, n.y += this.options.wind.y);
                            var i = this.physicsBody.velocities[t];
                            return this.previousStates[t] = { x: e.x, y: e.y, vx: i.x, vy: i.y }, !1 === e.options.fixed.x ? (i.x = this.calculateComponentVelocity(i.x, n.x, e.options.mass), e.x += i.x * this.timestep) : (n.x = 0, i.x = 0), !1 === e.options.fixed.y ? (i.y = this.calculateComponentVelocity(i.y, n.y, e.options.mass), e.y += i.y * this.timestep) : (n.y = 0, i.y = 0), Math.sqrt(Math.pow(i.x, 2) + Math.pow(i.y, 2))
                        }
                    }, {
                        key: "_freezeNodes",
                        value: function() {
                            var t = this.body.nodes;
                            for (var e in t)
                                if (Object.prototype.hasOwnProperty.call(t, e) && t[e].x && t[e].y) {
                                    var n = t[e].options.fixed;
                                    this.freezeCache[e] = { x: n.x, y: n.y }, n.x = !0, n.y = !0
                                }
                        }
                    }, {
                        key: "_restoreFrozenNodes",
                        value: function() {
                            var t = this.body.nodes;
                            for (var e in t) Object.prototype.hasOwnProperty.call(t, e) && void 0 !== this.freezeCache[e] && (t[e].options.fixed.x = this.freezeCache[e].x, t[e].options.fixed.y = this.freezeCache[e].y);
                            this.freezeCache = {}
                        }
                    }, {
                        key: "stabilize",
                        value: function() {
                            var t = this,
                                e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.options.stabilization.iterations;
                            "number" != typeof e && (e = this.options.stabilization.iterations, console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ", e)), 0 !== this.physicsBody.physicsNodeIndices.length ? (this.adaptiveTimestep = this.options.adaptiveTimestep, this.body.emitter.emit("_resizeNodes"), this.stopSimulation(), this.stabilized = !1, this.body.emitter.emit("_blockRedraw"), this.targetIterations = e, !0 === this.options.stabilization.onlyDynamicEdges && this._freezeNodes(), this.stabilizationIterations = 0, BA((function() { return t._stabilizationBatch() }), 0)) : this.ready = !0
                        }
                    }, { key: "_startStabilizing", value: function() { return !0 !== this.startedStabilization && (this.body.emitter.emit("startStabilizing"), this.startedStabilization = !0, !0) } }, {
                        key: "_stabilizationBatch",
                        value: function() {
                            var t = this,
                                e = function() { return !1 === t.stabilized && t.stabilizationIterations < t.targetIterations },
                                n = function() { t.body.emitter.emit("stabilizationProgress", { iterations: t.stabilizationIterations, total: t.targetIterations }) };
                            this._startStabilizing() && n();
                            for (var i, r = 0; e() && r < this.options.stabilization.updateInterval;) this.physicsTick(), r++;
                            (n(), e()) ? BA(tt(i = this._stabilizationBatch).call(i, this), 0): this._finalizeStabilization()
                        }
                    }, { key: "_finalizeStabilization", value: function() { this.body.emitter.emit("_allowRedraw"), !0 === this.options.stabilization.fit && this.body.emitter.emit("fit"), !0 === this.options.stabilization.onlyDynamicEdges && this._restoreFrozenNodes(), this.body.emitter.emit("stabilizationIterationsDone"), this.body.emitter.emit("_requestRedraw"), !0 === this.stabilized ? this._emitStabilized() : this.startSimulation(), this.ready = !0 } }, {
                        key: "_drawForces",
                        value: function(t) {
                            for (var e = 0; e < this.physicsBody.physicsNodeIndices.length; e++) {
                                var n = this.physicsBody.physicsNodeIndices[e],
                                    i = this.body.nodes[n],
                                    r = this.physicsBody.forces[n],
                                    o = Math.sqrt(Math.pow(r.x, 2) + Math.pow(r.x, 2)),
                                    g = Math.min(Math.max(5, o), 15),
                                    s = 3 * g,
                                    A = Qo((180 - 180 * Math.min(1, Math.max(0, .03 * o))) / 360, 1, 1),
                                    a = { x: i.x + 20 * r.x, y: i.y + 20 * r.y };
                                t.lineWidth = g, t.strokeStyle = A, t.beginPath(), t.moveTo(i.x, i.y), t.lineTo(a.x, a.y), t.stroke();
                                var C = Math.atan2(r.y, r.x);
                                t.fillStyle = A, pu.draw(t, { type: "arrow", point: a, angle: C, length: s }), $C(t).call(t)
                            }
                        }
                    }]), t
                }(),
                Ku = [].reverse,
                Qu = [1, 2];
            W({ target: "Array", proto: !0, forced: String(Qu) === String(Qu.reverse()) }, { reverse: function() { return Ht(this) && (this.length = this.length), Ku.call(this) } });
            var Xu = q("Array").reverse,
                qu = Array.prototype,
                Ju = function(t) { var e = t.reverse; return t === qu || t instanceof Array && e === qu.reverse ? Xu : e },
                $u = function() {
                    function t() { DA(this, t) }
                    return RA(t, null, [{
                        key: "getRange",
                        value: function(t) {
                            var e, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
                                i = 1e9,
                                r = -1e9,
                                o = 1e9,
                                g = -1e9;
                            if (n.length > 0)
                                for (var s = 0; s < n.length; s++) o > (e = t[n[s]]).shape.boundingBox.left && (o = e.shape.boundingBox.left), g < e.shape.boundingBox.right && (g = e.shape.boundingBox.right), i > e.shape.boundingBox.top && (i = e.shape.boundingBox.top), r < e.shape.boundingBox.bottom && (r = e.shape.boundingBox.bottom);
                            return 1e9 === o && -1e9 === g && 1e9 === i && -1e9 === r && (i = 0, r = 0, o = 0, g = 0), { minX: o, maxX: g, minY: i, maxY: r }
                        }
                    }, {
                        key: "getRangeCore",
                        value: function(t) {
                            var e, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
                                i = 1e9,
                                r = -1e9,
                                o = 1e9,
                                g = -1e9;
                            if (n.length > 0)
                                for (var s = 0; s < n.length; s++) o > (e = t[n[s]]).x && (o = e.x), g < e.x && (g = e.x), i > e.y && (i = e.y), r < e.y && (r = e.y);
                            return 1e9 === o && -1e9 === g && 1e9 === i && -1e9 === r && (i = 0, r = 0, o = 0, g = 0), { minX: o, maxX: g, minY: i, maxY: r }
                        }
                    }, { key: "findCenter", value: function(t) { return { x: .5 * (t.maxX + t.minX), y: .5 * (t.maxY + t.minY) } } }, { key: "cloneOptions", value: function(t, e) { var n = {}; return void 0 === e || "node" === e ? (Fo(n, t.options, !0), n.x = t.x, n.y = t.y, n.amountOfConnections = t.edges.length) : Fo(n, t.options, !0), n } }]), t
                }();

            function tc(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var ec = function(t) {
                    ka(n, t);
                    var e = tc(n);

                    function n(t, i, r, o, g, s) { var A; return DA(this, n), (A = e.call(this, t, i, r, o, g, s)).isCluster = !0, A.containedNodes = {}, A.containedEdges = {}, A }
                    return RA(n, [{
                        key: "_openChildCluster",
                        value: function(t) {
                            var e = this,
                                n = this.body.nodes[t];
                            if (void 0 === this.containedNodes[t]) throw new Error("node with id: " + t + " not in current cluster");
                            if (!n.isCluster) throw new Error("node with id: " + t + " is not a cluster");
                            delete this.containedNodes[t], Vo(n.edges, (function(t) { delete e.containedEdges[t.id] })), Vo(n.containedNodes, (function(t, n) { e.containedNodes[n] = t })), n.containedNodes = {}, Vo(n.containedEdges, (function(t, n) { e.containedEdges[n] = t })), n.containedEdges = {}, Vo(n.edges, (function(t) { Vo(e.edges, (function(n) { var i, r, o = pr(i = n.clusteringEdgeReplacingIds).call(i, t.id); - 1 !== o && (Vo(t.clusteringEdgeReplacingIds, (function(t) { n.clusteringEdgeReplacingIds.push(t), e.body.edges[t].edgeReplacedById = n.id })), ag(r = n.clusteringEdgeReplacingIds).call(r, o, 1)) })) })), n.edges = []
                        }
                    }]), n
                }(UI),
                nc = function() {
                    function t(e) {
                        var n = this;
                        DA(this, t), this.body = e, this.clusteredNodes = {}, this.clusteredEdges = {}, this.options = {}, this.defaultOptions = {}, bt(this.options, this.defaultOptions), this.body.emitter.on("_resetData", (function() { n.clusteredNodes = {}, n.clusteredEdges = {} }))
                    }
                    return RA(t, [{
                        key: "clusterByHubsize",
                        value: function(t, e) {
                            void 0 === t ? t = this._getHubSize() : "object" === io(t) && (e = this._checkOptions(t), t = this._getHubSize());
                            for (var n = [], i = 0; i < this.body.nodeIndices.length; i++) {
                                var r = this.body.nodes[this.body.nodeIndices[i]];
                                r.edges.length >= t && n.push(r.id)
                            }
                            for (var o = 0; o < n.length; o++) this.clusterByConnection(n[o], e, !0);
                            this.body.emitter.emit("_dataChanged")
                        }
                    }, {
                        key: "cluster",
                        value: function() {
                            var t = this,
                                e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                                n = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
                            if (void 0 === e.joinCondition) throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");
                            e = this._checkOptions(e);
                            var i = {},
                                r = {};
                            Vo(this.body.nodes, (function(n, o) { n.options && !0 === e.joinCondition(n.options) && (i[o] = n, Vo(n.edges, (function(e) { void 0 === t.clusteredEdges[e.id] && (r[e.id] = e) }))) })), this._cluster(i, r, e, n)
                        }
                    }, {
                        key: "clusterByEdgeCount",
                        value: function(t, e) {
                            var n = this,
                                i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
                            e = this._checkOptions(e);
                            for (var r, o, g, s = [], A = {}, a = function(i) {
                                    var a = {},
                                        C = {},
                                        I = n.body.nodeIndices[i],
                                        u = n.body.nodes[I];
                                    if (void 0 === A[I]) {
                                        g = 0, o = [];
                                        for (var c = 0; c < u.edges.length; c++) r = u.edges[c], void 0 === n.clusteredEdges[r.id] && (r.toId !== r.fromId && g++, o.push(r));
                                        if (g === t) {
                                            for (var l = function(t) { if (void 0 === e.joinCondition || null === e.joinCondition) return !0; var n = $u.cloneOptions(t); return e.joinCondition(n) }, h = !0, d = 0; d < o.length; d++) {
                                                r = o[d];
                                                var f = n._getConnectedId(r, I);
                                                if (!l(u)) { h = !1; break }
                                                C[r.id] = r, a[I] = u, a[f] = n.body.nodes[f], A[I] = !0
                                            }
                                            if (Hr(a).length > 0 && Hr(C).length > 0 && !0 === h) {
                                                var p = function() {
                                                    for (var t = 0; t < s.length; ++t)
                                                        for (var e in a)
                                                            if (void 0 !== s[t].nodes[e]) return s[t]
                                                }();
                                                if (void 0 !== p) { for (var v in a) void 0 === p.nodes[v] && (p.nodes[v] = a[v]); for (var y in C) void 0 === p.edges[y] && (p.edges[y] = C[y]) } else s.push({ nodes: a, edges: C })
                                            }
                                        }
                                    }
                                }, C = 0; C < this.body.nodeIndices.length; C++) a(C);
                            for (var I = 0; I < s.length; I++) this._cluster(s[I].nodes, s[I].edges, e, !1);
                            !0 === i && this.body.emitter.emit("_dataChanged")
                        }
                    }, {
                        key: "clusterOutliers",
                        value: function(t) {
                            var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
                            this.clusterByEdgeCount(1, t, e)
                        }
                    }, {
                        key: "clusterBridges",
                        value: function(t) {
                            var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
                            this.clusterByEdgeCount(2, t, e)
                        }
                    }, {
                        key: "clusterByConnection",
                        value: function(t, e) {
                            var n, i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
                            if (void 0 === t) throw new Error("No nodeId supplied to clusterByConnection!");
                            if (void 0 === this.body.nodes[t]) throw new Error("The nodeId given to clusterByConnection does not exist!");
                            var r = this.body.nodes[t];
                            void 0 === (e = this._checkOptions(e, r)).clusterNodeProperties.x && (e.clusterNodeProperties.x = r.x), void 0 === e.clusterNodeProperties.y && (e.clusterNodeProperties.y = r.y), void 0 === e.clusterNodeProperties.fixed && (e.clusterNodeProperties.fixed = {}, e.clusterNodeProperties.fixed.x = r.options.fixed.x, e.clusterNodeProperties.fixed.y = r.options.fixed.y);
                            var o = {},
                                g = {},
                                s = r.id,
                                A = $u.cloneOptions(r);
                            o[s] = r;
                            for (var a = 0; a < r.edges.length; a++) {
                                var C = r.edges[a];
                                if (void 0 === this.clusteredEdges[C.id]) {
                                    var I = this._getConnectedId(C, s);
                                    if (void 0 === this.clusteredNodes[I])
                                        if (I !== s)
                                            if (void 0 === e.joinCondition) g[C.id] = C, o[I] = this.body.nodes[I];
                                            else { var u = $u.cloneOptions(this.body.nodes[I]);!0 === e.joinCondition(A, u) && (g[C.id] = C, o[I] = this.body.nodes[I]) }
                                    else g[C.id] = C
                                }
                            }
                            var c = $r(n = Hr(o)).call(n, (function(t) { return o[t].id }));
                            for (var l in o)
                                if (Object.prototype.hasOwnProperty.call(o, l))
                                    for (var h = o[l], d = 0; d < h.edges.length; d++) {
                                        var f = h.edges[d];
                                        pr(c).call(c, this._getConnectedId(f, h.id)) > -1 && (g[f.id] = f)
                                    }
                            this._cluster(o, g, e, i)
                        }
                    }, {
                        key: "_createClusterEdges",
                        value: function(t, e, n, i) {
                            for (var r, o, g, s, A, a, C = Hr(t), I = [], u = 0; u < C.length; u++) { g = t[o = C[u]]; for (var c = 0; c < g.edges.length; c++) r = g.edges[c], void 0 === this.clusteredEdges[r.id] && (r.toId == r.fromId ? e[r.id] = r : r.toId == o ? (s = n.id, a = A = r.fromId) : (s = r.toId, A = n.id, a = s), void 0 === t[a] && I.push({ edge: r, fromId: A, toId: s })) }
                            for (var l = [], h = function(t) {
                                    for (var e = 0; e < l.length; e++) {
                                        var n = l[e],
                                            i = t.fromId === n.fromId && t.toId === n.toId,
                                            r = t.fromId === n.toId && t.toId === n.fromId;
                                        if (i || r) return n
                                    }
                                    return null
                                }, d = 0; d < I.length; d++) {
                                var f = I[d],
                                    p = f.edge,
                                    v = h(f);
                                null === v ? (v = this._createClusteredEdge(f.fromId, f.toId, p, i), l.push(v)) : v.clusteringEdgeReplacingIds.push(p.id), this.body.edges[p.id].edgeReplacedById = v.id, this._backupEdgeOptions(p), p.setOptions({ physics: !1 })
                            }
                        }
                    }, { key: "_checkOptions", value: function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return void 0 === t.clusterEdgeProperties && (t.clusterEdgeProperties = {}), void 0 === t.clusterNodeProperties && (t.clusterNodeProperties = {}), t } }, {
                        key: "_cluster",
                        value: function(t, e, n) {
                            var i = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3],
                                r = [];
                            for (var o in t) Object.prototype.hasOwnProperty.call(t, o) && void 0 !== this.clusteredNodes[o] && r.push(o);
                            for (var g = 0; g < r.length; ++g) delete t[r[g]];
                            if (0 != Hr(t).length && (1 != Hr(t).length || 1 == n.clusterNodeProperties.allowSingleNodeCluster)) {
                                var s = Fo({}, n.clusterNodeProperties);
                                if (void 0 !== n.processProperties) {
                                    var A = [];
                                    for (var a in t)
                                        if (Object.prototype.hasOwnProperty.call(t, a)) {
                                            var C = $u.cloneOptions(t[a]);
                                            A.push(C)
                                        }
                                    var I = [];
                                    for (var u in e)
                                        if (Object.prototype.hasOwnProperty.call(e, u) && "clusterEdge:" !== u.substr(0, 12)) {
                                            var c = $u.cloneOptions(e[u], "edge");
                                            I.push(c)
                                        }
                                    if (!(s = n.processProperties(s, A, I))) throw new Error("The processProperties function does not return properties!")
                                }
                                void 0 === s.id && (s.id = "cluster:" + fC());
                                var l = s.id;
                                void 0 === s.label && (s.label = "cluster");
                                var h = void 0;
                                void 0 === s.x && (h = this._getClusterPosition(t), s.x = h.x), void 0 === s.y && (void 0 === h && (h = this._getClusterPosition(t)), s.y = h.y), s.id = l;
                                var d = this.body.functions.createNode(s, ec);
                                d.containedNodes = t, d.containedEdges = e, d.clusterEdgeProperties = n.clusterEdgeProperties, this.body.nodes[s.id] = d, this._clusterEdges(t, e, s, n.clusterEdgeProperties), s.id = void 0, !0 === i && this.body.emitter.emit("_dataChanged")
                            }
                        }
                    }, { key: "_backupEdgeOptions", value: function(t) { void 0 === this.clusteredEdges[t.id] && (this.clusteredEdges[t.id] = { physics: t.options.physics }) } }, {
                        key: "_restoreEdge",
                        value: function(t) {
                            var e = this.clusteredEdges[t.id];
                            void 0 !== e && (t.setOptions({ physics: e.physics }), delete this.clusteredEdges[t.id])
                        }
                    }, { key: "isCluster", value: function(t) { return void 0 !== this.body.nodes[t] ? !0 === this.body.nodes[t].isCluster : (console.log("Node does not exist."), !1) } }, { key: "_getClusterPosition", value: function(t) { for (var e, n = Hr(t), i = t[n[0]].x, r = t[n[0]].x, o = t[n[0]].y, g = t[n[0]].y, s = 1; s < n.length; s++) i = (e = t[n[s]]).x < i ? e.x : i, r = e.x > r ? e.x : r, o = e.y < o ? e.y : o, g = e.y > g ? e.y : g; return { x: .5 * (i + r), y: .5 * (o + g) } } }, {
                        key: "openCluster",
                        value: function(t, e) {
                            var n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2];
                            if (void 0 === t) throw new Error("No clusterNodeId supplied to openCluster.");
                            var i = this.body.nodes[t];
                            if (void 0 === i) throw new Error("The clusterNodeId supplied to openCluster does not exist.");
                            if (!0 !== i.isCluster || void 0 === i.containedNodes || void 0 === i.containedEdges) throw new Error("The node:" + t + " is not a valid cluster.");
                            var r = this.findNode(t),
                                o = pr(r).call(r, t) - 1;
                            if (o >= 0) {
                                var g = r[o],
                                    s = this.body.nodes[g];
                                return s._openChildCluster(t), delete this.body.nodes[t], void(!0 === n && this.body.emitter.emit("_dataChanged"))
                            }
                            var A = i.containedNodes,
                                a = i.containedEdges;
                            if (void 0 !== e && void 0 !== e.releaseFunction && "function" == typeof e.releaseFunction) {
                                var C = {},
                                    I = { x: i.x, y: i.y };
                                for (var u in A)
                                    if (Object.prototype.hasOwnProperty.call(A, u)) {
                                        var c = this.body.nodes[u];
                                        C[u] = { x: c.x, y: c.y }
                                    }
                                var l = e.releaseFunction(I, C);
                                for (var h in A)
                                    if (Object.prototype.hasOwnProperty.call(A, h)) {
                                        var d = this.body.nodes[h];
                                        void 0 !== l[h] && (d.x = void 0 === l[h].x ? i.x : l[h].x, d.y = void 0 === l[h].y ? i.y : l[h].y)
                                    }
                            } else Vo(A, (function(t) {!1 === t.options.fixed.x && (t.x = i.x), !1 === t.options.fixed.y && (t.y = i.y) }));
                            for (var f in A)
                                if (Object.prototype.hasOwnProperty.call(A, f)) {
                                    var p = this.body.nodes[f];
                                    p.vx = i.vx, p.vy = i.vy, p.setOptions({ physics: !0 }), delete this.clusteredNodes[f]
                                }
                            for (var v = [], y = 0; y < i.edges.length; y++) v.push(i.edges[y]);
                            for (var b = 0; b < v.length; b++) {
                                for (var m = v[b], w = this._getConnectedId(m, t), _ = this.clusteredNodes[w], k = 0; k < m.clusteringEdgeReplacingIds.length; k++) {
                                    var x = m.clusteringEdgeReplacingIds[k],
                                        O = this.body.edges[x];
                                    if (void 0 !== O)
                                        if (void 0 !== _) {
                                            var E = this.body.nodes[_.clusterId];
                                            E.containedEdges[O.id] = O, delete a[O.id];
                                            var T = O.fromId,
                                                S = O.toId;
                                            O.toId == w ? S = _.clusterId : T = _.clusterId, this._createClusteredEdge(T, S, O, E.clusterEdgeProperties, { hidden: !1, physics: !0 })
                                        } else this._restoreEdge(O)
                                }
                                m.remove()
                            }
                            for (var D in a) Object.prototype.hasOwnProperty.call(a, D) && this._restoreEdge(a[D]);
                            delete this.body.nodes[t], !0 === n && this.body.emitter.emit("_dataChanged")
                        }
                    }, { key: "getNodesInCluster", value: function(t) { var e = []; if (!0 === this.isCluster(t)) { var n = this.body.nodes[t].containedNodes; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && e.push(this.body.nodes[i].id) } return e } }, {
                        key: "findNode",
                        value: function(t) {
                            for (var e, n = [], i = 0; void 0 !== this.clusteredNodes[t] && i < 100;) {
                                if (void 0 === (e = this.body.nodes[t])) return [];
                                n.push(e.id), t = this.clusteredNodes[t].clusterId, i++
                            }
                            return void 0 === (e = this.body.nodes[t]) ? [] : (n.push(e.id), Ju(n).call(n), n)
                        }
                    }, {
                        key: "updateClusteredNode",
                        value: function(t, e) {
                            if (void 0 === t) throw new Error("No clusteredNodeId supplied to updateClusteredNode.");
                            if (void 0 === e) throw new Error("No newOptions supplied to updateClusteredNode.");
                            if (void 0 === this.body.nodes[t]) throw new Error("The clusteredNodeId supplied to updateClusteredNode does not exist.");
                            this.body.nodes[t].setOptions(e), this.body.emitter.emit("_dataChanged")
                        }
                    }, {
                        key: "updateEdge",
                        value: function(t, e) {
                            if (void 0 === t) throw new Error("No startEdgeId supplied to updateEdge.");
                            if (void 0 === e) throw new Error("No newOptions supplied to updateEdge.");
                            if (void 0 === this.body.edges[t]) throw new Error("The startEdgeId supplied to updateEdge does not exist.");
                            for (var n = this.getClusteredEdges(t), i = 0; i < n.length; i++) { this.body.edges[n[i]].setOptions(e) }
                            this.body.emitter.emit("_dataChanged")
                        }
                    }, { key: "getClusteredEdges", value: function(t) { for (var e = [], n = 0; void 0 !== t && void 0 !== this.body.edges[t] && n < 100;) e.push(this.body.edges[t].id), t = this.body.edges[t].edgeReplacedById, n++; return Ju(e).call(e), e } }, { key: "getBaseEdge", value: function(t) { return this.getBaseEdges(t)[0] } }, {
                        key: "getBaseEdges",
                        value: function(t) {
                            for (var e = [t], n = [], i = [], r = 0; e.length > 0 && r < 100;) {
                                var o = e.pop();
                                if (void 0 !== o) {
                                    var g = this.body.edges[o];
                                    if (void 0 !== g) {
                                        r++;
                                        var s = g.clusteringEdgeReplacingIds;
                                        if (void 0 === s) i.push(o);
                                        else
                                            for (var A = 0; A < s.length; ++A) { var a = s[A]; - 1 === pr(e).call(e, s) && -1 === pr(n).call(n, s) && e.push(a) }
                                        n.push(o)
                                    }
                                }
                            }
                            return i
                        }
                    }, { key: "_getConnectedId", value: function(t, e) { return t.toId != e ? t.toId : (t.fromId, t.fromId) } }, {
                        key: "_getHubSize",
                        value: function() {
                            for (var t = 0, e = 0, n = 0, i = 0, r = 0; r < this.body.nodeIndices.length; r++) {
                                var o = this.body.nodes[this.body.nodeIndices[r]];
                                o.edges.length > i && (i = o.edges.length), t += o.edges.length, e += Math.pow(o.edges.length, 2), n += 1
                            }
                            t /= n;
                            var g = (e /= n) - Math.pow(t, 2),
                                s = Math.sqrt(g),
                                A = Math.floor(t + 2 * s);
                            return A > i && (A = i), A
                        }
                    }, {
                        key: "_createClusteredEdge",
                        value: function(t, e, n, i, r) {
                            var o = $u.cloneOptions(n, "edge");
                            Fo(o, i), o.from = t, o.to = e, o.id = "clusterEdge:" + fC(), void 0 !== r && Fo(o, r);
                            var g = this.body.functions.createEdge(o);
                            return g.clusteringEdgeReplacingIds = [n.id], g.connect(), this.body.edges[g.id] = g, g
                        }
                    }, {
                        key: "_clusterEdges",
                        value: function(t, e, n, i) {
                            if (e instanceof Mu) {
                                var r = e,
                                    o = {};
                                o[r.id] = r, e = o
                            }
                            if (t instanceof UI) {
                                var g = t,
                                    s = {};
                                s[g.id] = g, t = s
                            }
                            if (null == n) throw new Error("_clusterEdges: parameter clusterNode required");
                            for (var A in void 0 === i && (i = n.clusterEdgeProperties), this._createClusterEdges(t, e, n, i), e)
                                if (Object.prototype.hasOwnProperty.call(e, A) && void 0 !== this.body.edges[A]) {
                                    var a = this.body.edges[A];
                                    this._backupEdgeOptions(a), a.setOptions({ physics: !1 })
                                }
                            for (var C in t) Object.prototype.hasOwnProperty.call(t, C) && (this.clusteredNodes[C] = { clusterId: n.id, node: this.body.nodes[C] }, this.body.nodes[C].setOptions({ physics: !1 }))
                        }
                    }, { key: "_getClusterNodeForNode", value: function(t) { if (void 0 !== t) { var e = this.clusteredNodes[t]; if (void 0 !== e) { var n = e.clusterId; if (void 0 !== n) return this.body.nodes[n] } } } }, { key: "_filter", value: function(t, e) { var n = []; return Vo(t, (function(t) { e(t) && n.push(t) })), n } }, {
                        key: "_updateState",
                        value: function() {
                            var t, e = this,
                                n = [],
                                i = {},
                                r = function(t) { Vo(e.body.nodes, (function(e) {!0 === e.isCluster && t(e) })) };
                            for (t in this.clusteredNodes) { if (Object.prototype.hasOwnProperty.call(this.clusteredNodes, t)) void 0 === this.body.nodes[t] && n.push(t) }
                            r((function(t) { for (var e = 0; e < n.length; e++) delete t.containedNodes[n[e]] }));
                            for (var o = 0; o < n.length; o++) delete this.clusteredNodes[n[o]];
                            Vo(this.clusteredEdges, (function(t) {
                                var n = e.body.edges[t];
                                void 0 !== n && n.endPointsValid() || (i[t] = t)
                            })), r((function(t) { Vo(t.containedEdges, (function(t, e) { t.endPointsValid() || i[e] || (i[e] = e) })) })), Vo(this.body.edges, (function(t, n) {
                                var r = !0,
                                    o = t.clusteringEdgeReplacingIds;
                                if (void 0 !== o) {
                                    var g = 0;
                                    Vo(o, (function(t) {
                                        var n = e.body.edges[t];
                                        void 0 !== n && n.endPointsValid() && (g += 1)
                                    })), r = g > 0
                                }
                                t.endPointsValid() && r || (i[n] = n)
                            })), r((function(t) { Vo(i, (function(n) { delete t.containedEdges[n], Vo(t.edges, (function(r, o) { r.id !== n ? r.clusteringEdgeReplacingIds = e._filter(r.clusteringEdgeReplacingIds, (function(t) { return !i[t] })) : t.edges[o] = null })), t.edges = e._filter(t.edges, (function(t) { return null !== t })) })) })), Vo(i, (function(t) { delete e.clusteredEdges[t] })), Vo(i, (function(t) { delete e.body.edges[t] })), Vo(Hr(this.body.edges), (function(t) {
                                var n = e.body.edges[t],
                                    i = e._isClusteredNode(n.fromId) || e._isClusteredNode(n.toId);
                                if (i !== e._isClusteredEdge(n.id))
                                    if (i) {
                                        var r = e._getClusterNodeForNode(n.fromId);
                                        void 0 !== r && e._clusterEdges(e.body.nodes[n.fromId], n, r);
                                        var o = e._getClusterNodeForNode(n.toId);
                                        void 0 !== o && e._clusterEdges(e.body.nodes[n.toId], n, o)
                                    } else delete e._clusterEdges[t], e._restoreEdge(n)
                            }));
                            for (var g = !1, s = !0, A = function() {
                                    var t = [];
                                    r((function(e) {
                                        var n = Hr(e.containedNodes).length,
                                            i = !0 === e.options.allowSingleNodeCluster;
                                        (i && n < 1 || !i && n < 2) && t.push(e.id)
                                    }));
                                    for (var n = 0; n < t.length; ++n) e.openCluster(t[n], {}, !1);
                                    s = t.length > 0, g = g || s
                                }; s;) A();
                            g && this._updateState()
                        }
                    }, { key: "_isClusteredNode", value: function(t) { return void 0 !== this.clusteredNodes[t] } }, { key: "_isClusteredEdge", value: function(t) { return void 0 !== this.clusteredEdges[t] } }]), t
                }();
            var ic = function() {
                    function t(e, n) {
                        var i;
                        DA(this, t), void 0 !== window && (i = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame), window.requestAnimationFrame = void 0 === i ? function(t) { t() } : i, this.body = e, this.canvas = n, this.redrawRequested = !1, this.renderTimer = void 0, this.requiresTimeout = !0, this.renderingActive = !1, this.renderRequests = 0, this.allowRedraw = !0, this.dragging = !1, this.zooming = !1, this.options = {}, this.defaultOptions = { hideEdgesOnDrag: !1, hideEdgesOnZoom: !1, hideNodesOnDrag: !1 }, bt(this.options, this.defaultOptions), this._determineBrowserMethod(), this.bindEventListeners()
                    }
                    return RA(t, [{
                        key: "bindEventListeners",
                        value: function() {
                            var t, e = this;
                            this.body.emitter.on("dragStart", (function() { e.dragging = !0 })), this.body.emitter.on("dragEnd", (function() { e.dragging = !1 })), this.body.emitter.on("zoom", (function() {
                                e.zooming = !0, window.clearTimeout(e.zoomTimeoutId), e.zoomTimeoutId = window.setTimeout((function() {
                                    var t;
                                    e.zooming = !1, tt(t = e._requestRedraw).call(t, e)()
                                }), 250)
                            })), this.body.emitter.on("_resizeNodes", (function() { e._resizeNodes() })), this.body.emitter.on("_redraw", (function() {!1 === e.renderingActive && e._redraw() })), this.body.emitter.on("_blockRedraw", (function() { e.allowRedraw = !1 })), this.body.emitter.on("_allowRedraw", (function() { e.allowRedraw = !0, e.redrawRequested = !1 })), this.body.emitter.on("_requestRedraw", tt(t = this._requestRedraw).call(t, this)), this.body.emitter.on("_startRendering", (function() { e.renderRequests += 1, e.renderingActive = !0, e._startRendering() })), this.body.emitter.on("_stopRendering", (function() { e.renderRequests -= 1, e.renderingActive = e.renderRequests > 0, e.renderTimer = void 0 })), this.body.emitter.on("destroy", (function() { e.renderRequests = 0, e.allowRedraw = !1, e.renderingActive = !1, !0 === e.requiresTimeout ? clearTimeout(e.renderTimer) : window.cancelAnimationFrame(e.renderTimer), e.body.emitter.off() }))
                        }
                    }, { key: "setOptions", value: function(t) { if (void 0 !== t) { Mo(["hideEdgesOnDrag", "hideEdgesOnZoom", "hideNodesOnDrag"], this.options, t) } } }, { key: "_requestNextFrame", value: function(t, e) { if ("undefined" != typeof window) { var n, i = window; return !0 === this.requiresTimeout ? n = i.setTimeout(t, e) : i.requestAnimationFrame && (n = i.requestAnimationFrame(t)), n } } }, { key: "_startRendering", value: function() { var t;!0 === this.renderingActive && (void 0 === this.renderTimer && (this.renderTimer = this._requestNextFrame(tt(t = this._renderStep).call(t, this), this.simulationInterval))) } }, { key: "_renderStep", value: function() {!0 === this.renderingActive && (this.renderTimer = void 0, !0 === this.requiresTimeout && this._startRendering(), this._redraw(), !1 === this.requiresTimeout && this._startRendering()) } }, { key: "redraw", value: function() { this.body.emitter.emit("setSize"), this._redraw() } }, { key: "_requestRedraw", value: function() { var t = this;!0 !== this.redrawRequested && !1 === this.renderingActive && !0 === this.allowRedraw && (this.redrawRequested = !0, this._requestNextFrame((function() { t._redraw(!1) }), 0)) } }, {
                        key: "_redraw",
                        value: function() {
                            var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            if (!0 === this.allowRedraw) {
                                this.body.emitter.emit("initRedraw"), this.redrawRequested = !1, 0 !== this.canvas.frame.canvas.width && 0 !== this.canvas.frame.canvas.height || this.canvas.setSize(), this.canvas.setTransform();
                                var e = this.canvas.getContext(),
                                    n = this.canvas.frame.canvas.clientWidth,
                                    i = this.canvas.frame.canvas.clientHeight;
                                if (e.clearRect(0, 0, n, i), 0 === this.canvas.frame.clientWidth) return;
                                e.save(), e.translate(this.body.view.translation.x, this.body.view.translation.y), e.scale(this.body.view.scale, this.body.view.scale), e.beginPath(), this.body.emitter.emit("beforeDrawing", e), e.closePath(), !1 === t && (!1 === this.dragging || !0 === this.dragging && !1 === this.options.hideEdgesOnDrag) && (!1 === this.zooming || !0 === this.zooming && !1 === this.options.hideEdgesOnZoom) && this._drawEdges(e), (!1 === this.dragging || !0 === this.dragging && !1 === this.options.hideNodesOnDrag) && this._drawNodes(e, t), !1 === t && (!1 === this.dragging || !0 === this.dragging && !1 === this.options.hideEdgesOnDrag) && (!1 === this.zooming || !0 === this.zooming && !1 === this.options.hideEdgesOnZoom) && this._drawArrows(e), !1 === t && this._drawSelectionBox(e), e.beginPath(), this.body.emitter.emit("afterDrawing", e), e.closePath(), e.restore(), !0 === t && e.clearRect(0, 0, n, i)
                            }
                        }
                    }, {
                        key: "_resizeNodes",
                        value: function() {
                            this.canvas.setTransform();
                            var t = this.canvas.getContext();
                            t.save(), t.translate(this.body.view.translation.x, this.body.view.translation.y), t.scale(this.body.view.scale, this.body.view.scale);
                            var e, n = this.body.nodes;
                            for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && ((e = n[i]).resize(t), e.updateBoundingBox(t, e.selected));
                            t.restore()
                        }
                    }, {
                        key: "_drawNodes",
                        value: function(t) {
                            for (var e, n, i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], r = this.body.nodes, o = this.body.nodeIndices, g = [], s = [], A = 20, a = this.canvas.DOMtoCanvas({ x: -A, y: -A }), C = this.canvas.DOMtoCanvas({ x: this.canvas.frame.canvas.clientWidth + A, y: this.canvas.frame.canvas.clientHeight + A }), I = { top: a.y, left: a.x, bottom: C.y, right: C.x }, u = 0; u < o.length; u++)(e = r[o[u]]).hover ? s.push(o[u]) : e.isSelected() ? g.push(o[u]) : !0 === i || !0 === e.isBoundingBoxOverlappingWith(I) ? e.draw(t) : e.updateBoundingBox(t, e.selected);
                            var c = g.length,
                                l = s.length;
                            for (n = 0; n < c; n++)(e = r[g[n]]).draw(t);
                            for (n = 0; n < l; n++)(e = r[s[n]]).draw(t)
                        }
                    }, { key: "_drawEdges", value: function(t) { for (var e = this.body.edges, n = this.body.edgeIndices, i = 0; i < n.length; i++) { var r = e[n[i]];!0 === r.connected && r.draw(t) } } }, { key: "_drawArrows", value: function(t) { for (var e = this.body.edges, n = this.body.edgeIndices, i = 0; i < n.length; i++) { var r = e[n[i]];!0 === r.connected && r.drawArrows(t) } } }, {
                        key: "_determineBrowserMethod",
                        value: function() {
                            if ("undefined" != typeof window) {
                                var t = navigator.userAgent.toLowerCase();
                                this.requiresTimeout = !1, (-1 != pr(t).call(t, "msie 9.0") || -1 != pr(t).call(t, "safari") && pr(t).call(t, "chrome") <= -1) && (this.requiresTimeout = !0)
                            } else this.requiresTimeout = !0
                        }
                    }, {
                        key: "_drawSelectionBox",
                        value: function(t) {
                            if (this.body.selectionBox.show) {
                                t.beginPath();
                                var e = this.body.selectionBox.position.end.x - this.body.selectionBox.position.start.x,
                                    n = this.body.selectionBox.position.end.y - this.body.selectionBox.position.start.y;
                                t.rect(this.body.selectionBox.position.start.x, this.body.selectionBox.position.start.y, e, n), t.fillStyle = "rgba(151, 194, 252, 0.2)", t.fillRect(this.body.selectionBox.position.start.x, this.body.selectionBox.position.start.y, e, n), t.strokeStyle = "rgba(151, 194, 252, 1)", t.stroke()
                            } else t.closePath()
                        }
                    }]), t
                }(),
                rc = F.setInterval;

            function oc(t, e) { e.inputHandler = function(t) { t.isFirst && e(t) }, t.on("hammer.input", e.inputHandler) }

            function gc(t, e) { return e.inputHandler = function(t) { t.isFinal && e(t) }, t.on("hammer.input", e.inputHandler) }
            var sc = function() {
                    function t(e) {
                        var n;
                        DA(this, t), this.body = e, this.pixelRatio = 1, this.resizeTimer = void 0, this.resizeFunction = tt(n = this._onResize).call(n, this), this.cameraState = {}, this.initialized = !1, this.canvasViewCenter = {}, this.options = {}, this.defaultOptions = { autoResize: !0, height: "100%", width: "100%" }, bt(this.options, this.defaultOptions), this.bindEventListeners()
                    }
                    return RA(t, [{
                        key: "bindEventListeners",
                        value: function() {
                            var t, e = this;
                            this.body.emitter.once("resize", (function(t) { 0 !== t.width && (e.body.view.translation.x = .5 * t.width), 0 !== t.height && (e.body.view.translation.y = .5 * t.height) })), this.body.emitter.on("setSize", tt(t = this.setSize).call(t, this)), this.body.emitter.on("destroy", (function() { e.hammerFrame.destroy(), e.hammer.destroy(), e._cleanUp() }))
                        }
                    }, { key: "setOptions", value: function(t) { var e, n, i, r, o, g, s = this; if (void 0 !== t) { Mo(["width", "height", "autoResize"], this.options, t) }!0 === this.options.autoResize && (this._cleanUp(), this.resizeTimer = rc((function() {!0 === s.setSize() && s.body.emitter.emit("_requestRedraw") }), 1e3), this.resizeFunction = tt(e = this._onResize).call(e, this), n = window, i = "resize", r = this.resizeFunction, n.addEventListener ? (void 0 === o && (o = !1), "mousewheel" === i && pr(g = navigator.userAgent).call(g, "Firefox") >= 0 && (i = "DOMMouseScroll"), n.addEventListener(i, r, o)) : n.attachEvent("on" + i, r)) } }, {
                        key: "_cleanUp",
                        value: function() {
                            var t, e, n, i, r;
                            void 0 !== this.resizeTimer && clearInterval(this.resizeTimer), t = window, e = "resize", n = this.resizeFunction, t.removeEventListener ? (void 0 === i && (i = !1), "mousewheel" === e && pr(r = navigator.userAgent).call(r, "Firefox") >= 0 && (e = "DOMMouseScroll"), t.removeEventListener(e, n, i)) : t.detachEvent("on" + e, n), this.resizeFunction = void 0
                        }
                    }, { key: "_onResize", value: function() { this.setSize(), this.body.emitter.emit("_redraw") } }, { key: "_getCameraState", value: function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.pixelRatio;!0 === this.initialized && (this.cameraState.previousWidth = this.frame.canvas.width / t, this.cameraState.previousHeight = this.frame.canvas.height / t, this.cameraState.scale = this.body.view.scale, this.cameraState.position = this.DOMtoCanvas({ x: .5 * this.frame.canvas.width / t, y: .5 * this.frame.canvas.height / t })) } }, {
                        key: "_setCameraState",
                        value: function() {
                            if (void 0 !== this.cameraState.scale && 0 !== this.frame.canvas.clientWidth && 0 !== this.frame.canvas.clientHeight && 0 !== this.pixelRatio && this.cameraState.previousWidth > 0 && this.cameraState.previousHeight > 0) {
                                var t = this.frame.canvas.width / this.pixelRatio / this.cameraState.previousWidth,
                                    e = this.frame.canvas.height / this.pixelRatio / this.cameraState.previousHeight,
                                    n = this.cameraState.scale;
                                1 != t && 1 != e ? n = .5 * this.cameraState.scale * (t + e) : 1 != t ? n = this.cameraState.scale * t : 1 != e && (n = this.cameraState.scale * e), this.body.view.scale = n;
                                var i = this.DOMtoCanvas({ x: .5 * this.frame.canvas.clientWidth, y: .5 * this.frame.canvas.clientHeight }),
                                    r = { x: i.x - this.cameraState.position.x, y: i.y - this.cameraState.position.y };
                                this.body.view.translation.x += r.x * this.body.view.scale, this.body.view.translation.y += r.y * this.body.view.scale
                            }
                        }
                    }, { key: "_prepareValue", value: function(t) { if ("number" == typeof t) return t + "px"; if ("string" == typeof t) { if (-1 !== pr(t).call(t, "%") || -1 !== pr(t).call(t, "px")) return t; if (-1 === pr(t).call(t, "%")) return t + "px" } throw new Error("Could not use the value supplied for width or height:" + t) } }, {
                        key: "_create",
                        value: function() {
                            for (; this.body.container.hasChildNodes();) this.body.container.removeChild(this.body.container.firstChild);
                            if (this.frame = document.createElement("div"), this.frame.className = "vis-network", this.frame.style.position = "relative", this.frame.style.overflow = "hidden", this.frame.tabIndex = 900, this.frame.canvas = document.createElement("canvas"), this.frame.canvas.style.position = "relative", this.frame.appendChild(this.frame.canvas), this.frame.canvas.getContext) this._setPixelRatio(), this.setTransform();
                            else {
                                var t = document.createElement("DIV");
                                t.style.color = "red", t.style.fontWeight = "bold", t.style.padding = "10px", t.innerHTML = "Error: your browser does not support HTML canvas", this.frame.canvas.appendChild(t)
                            }
                            this.body.container.appendChild(this.frame), this.body.view.scale = 1, this.body.view.translation = { x: .5 * this.frame.canvas.clientWidth, y: .5 * this.frame.canvas.clientHeight }, this._bindHammer()
                        }
                    }, {
                        key: "_bindHammer",
                        value: function() {
                            var t = this;
                            void 0 !== this.hammer && this.hammer.destroy(), this.drag = {}, this.pinch = {}, this.hammer = new EA(this.frame.canvas), this.hammer.get("pinch").set({ enable: !0 }), this.hammer.get("pan").set({ threshold: 5, direction: EA.DIRECTION_ALL }), oc(this.hammer, (function(e) { t.body.eventListeners.onTouch(e) })), this.hammer.on("tap", (function(e) { t.body.eventListeners.onTap(e) })), this.hammer.on("doubletap", (function(e) { t.body.eventListeners.onDoubleTap(e) })), this.hammer.on("press", (function(e) { t.body.eventListeners.onHold(e) })), this.hammer.on("panstart", (function(e) { t.body.eventListeners.onDragStart(e) })), this.hammer.on("panmove", (function(e) { t.body.eventListeners.onDrag(e) })), this.hammer.on("panend", (function(e) { t.body.eventListeners.onDragEnd(e) })), this.hammer.on("pinch", (function(e) { t.body.eventListeners.onPinch(e) })), this.frame.canvas.addEventListener("wheel", (function(e) { t.body.eventListeners.onMouseWheel(e) })), this.frame.canvas.addEventListener("mousemove", (function(e) { t.body.eventListeners.onMouseMove(e) })), this.frame.canvas.addEventListener("contextmenu", (function(e) { t.body.eventListeners.onContext(e) })), this.hammerFrame = new EA(this.frame), gc(this.hammerFrame, (function(e) { t.body.eventListeners.onRelease(e) }))
                        }
                    }, {
                        key: "setSize",
                        value: function() {
                            var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.options.width,
                                e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.options.height;
                            t = this._prepareValue(t), e = this._prepareValue(e);
                            var n = !1,
                                i = this.frame.canvas.width,
                                r = this.frame.canvas.height,
                                o = this.pixelRatio;
                            if (this._setPixelRatio(), t != this.options.width || e != this.options.height || this.frame.style.width != t || this.frame.style.height != e) this._getCameraState(o), this.frame.style.width = t, this.frame.style.height = e, this.frame.canvas.style.width = "100%", this.frame.canvas.style.height = "100%", this.frame.canvas.width = Math.round(this.frame.canvas.clientWidth * this.pixelRatio), this.frame.canvas.height = Math.round(this.frame.canvas.clientHeight * this.pixelRatio), this.options.width = t, this.options.height = e, this.canvasViewCenter = { x: .5 * this.frame.clientWidth, y: .5 * this.frame.clientHeight }, n = !0;
                            else {
                                var g = Math.round(this.frame.canvas.clientWidth * this.pixelRatio),
                                    s = Math.round(this.frame.canvas.clientHeight * this.pixelRatio);
                                this.frame.canvas.width === g && this.frame.canvas.height === s || this._getCameraState(o), this.frame.canvas.width !== g && (this.frame.canvas.width = g, n = !0), this.frame.canvas.height !== s && (this.frame.canvas.height = s, n = !0)
                            }
                            return !0 === n && (this.body.emitter.emit("resize", { width: Math.round(this.frame.canvas.width / this.pixelRatio), height: Math.round(this.frame.canvas.height / this.pixelRatio), oldWidth: Math.round(i / this.pixelRatio), oldHeight: Math.round(r / this.pixelRatio) }), this._setCameraState()), this.initialized = !0, n
                        }
                    }, { key: "getContext", value: function() { return this.frame.canvas.getContext("2d") } }, { key: "_determinePixelRatio", value: function() { var t = this.getContext(); if (void 0 === t) throw new Error("Could not get canvax context"); var e = 1; return "undefined" != typeof window && (e = window.devicePixelRatio || 1), e / (t.webkitBackingStorePixelRatio || t.mozBackingStorePixelRatio || t.msBackingStorePixelRatio || t.oBackingStorePixelRatio || t.backingStorePixelRatio || 1) } }, { key: "_setPixelRatio", value: function() { this.pixelRatio = this._determinePixelRatio() } }, {
                        key: "setTransform",
                        value: function() {
                            var t = this.getContext();
                            if (void 0 === t) throw new Error("Could not get canvax context");
                            t.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0)
                        }
                    }, { key: "_XconvertDOMtoCanvas", value: function(t) { return (t - this.body.view.translation.x) / this.body.view.scale } }, { key: "_XconvertCanvasToDOM", value: function(t) { return t * this.body.view.scale + this.body.view.translation.x } }, { key: "_YconvertDOMtoCanvas", value: function(t) { return (t - this.body.view.translation.y) / this.body.view.scale } }, { key: "_YconvertCanvasToDOM", value: function(t) { return t * this.body.view.scale + this.body.view.translation.y } }, { key: "canvasToDOM", value: function(t) { return { x: this._XconvertCanvasToDOM(t.x), y: this._YconvertCanvasToDOM(t.y) } } }, { key: "DOMtoCanvas", value: function(t) { return { x: this._XconvertDOMtoCanvas(t.x), y: this._YconvertDOMtoCanvas(t.y) } } }]), t
                }(),
                Ac = function() {
                    function t(e, n) {
                        var i, r, o = this;
                        DA(this, t), this.body = e, this.canvas = n, this.animationSpeed = 1 / this.renderRefreshRate, this.animationEasingFunction = "easeInOutQuint", this.easingTime = 0, this.sourceScale = 0, this.targetScale = 0, this.sourceTranslation = 0, this.targetTranslation = 0, this.lockedOnNodeId = void 0, this.lockedOnNodeOffset = void 0, this.touchTime = 0, this.viewFunction = void 0, this.body.emitter.on("fit", tt(i = this.fit).call(i, this)), this.body.emitter.on("animationFinished", (function() { o.body.emitter.emit("_stopRendering") })), this.body.emitter.on("unlockNode", tt(r = this.releaseNode).call(r, this))
                    }
                    return RA(t, [{
                        key: "setOptions",
                        value: function() {
                            var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                            this.options = t
                        }
                    }, {
                        key: "fit",
                        value: function() {
                            var t, e, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : { nodes: [] },
                                i = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
                            void 0 !== (n = bt({}, n)).nodes && 0 !== n.nodes.length || (n.nodes = this.body.nodeIndices);
                            var r = this.canvas.frame.canvas.clientWidth,
                                o = this.canvas.frame.canvas.clientHeight;
                            if (0 === r || 0 === o) e = 1, t = $u.getRange(this.body.nodes, n.nodes);
                            else if (!0 === i) {
                                var g = 0;
                                for (var s in this.body.nodes)
                                    if (Object.prototype.hasOwnProperty.call(this.body.nodes, s)) { var A = this.body.nodes[s];!0 === A.predefinedPosition && (g += 1) }
                                if (g > .5 * this.body.nodeIndices.length) return void this.fit(n, !1);
                                t = $u.getRange(this.body.nodes, n.nodes);
                                var a = this.body.nodeIndices.length;
                                e = 12.662 / (a + 7.4147) + .0964822;
                                var C = Math.min(r / 600, o / 600);
                                e *= C
                            } else {
                                this.body.emitter.emit("_resizeNodes"), t = $u.getRange(this.body.nodes, n.nodes);
                                var I = 1.1 * Math.abs(t.maxX - t.minX),
                                    u = 1.1 * Math.abs(t.maxY - t.minY),
                                    c = r / I,
                                    l = o / u;
                                e = c <= l ? c : l
                            }(e > 1 || 0 === e) && (e = 1);
                            var h = $u.findCenter(t),
                                d = { position: h, scale: e, animation: n.animation };
                            this.moveTo(d)
                        }
                    }, {
                        key: "focus",
                        value: function(t) {
                            var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                            if (void 0 !== this.body.nodes[t]) {
                                var n = { x: this.body.nodes[t].x, y: this.body.nodes[t].y };
                                e.position = n, e.lockedOnNode = t, this.moveTo(e)
                            } else console.log("Node: " + t + " cannot be found.")
                        }
                    }, {
                        key: "moveTo",
                        value: function(t) {
                            if (void 0 !== t) {
                                if (null != t.offset) { if (null != t.offset.x) { if (t.offset.x = +t.offset.x, !QA(t.offset.x)) throw new TypeError('The option "offset.x" has to be a finite number.') } else t.offset.x = 0; if (null != t.offset.y) { if (t.offset.y = +t.offset.y, !QA(t.offset.y)) throw new TypeError('The option "offset.y" has to be a finite number.') } else t.offset.x = 0 } else t.offset = { x: 0, y: 0 };
                                if (null != t.position) { if (null != t.position.x) { if (t.position.x = +t.position.x, !QA(t.position.x)) throw new TypeError('The option "position.x" has to be a finite number.') } else t.position.x = 0; if (null != t.position.y) { if (t.position.y = +t.position.y, !QA(t.position.y)) throw new TypeError('The option "position.y" has to be a finite number.') } else t.position.x = 0 } else t.position = this.getViewPosition();
                                if (null != t.scale) { if (t.scale = +t.scale, !(t.scale > 0)) throw new TypeError('The option "scale" has to be a number greater than zero.') } else t.scale = this.body.view.scale;
                                void 0 === t.animation && (t.animation = { duration: 0 }), !1 === t.animation && (t.animation = { duration: 0 }), !0 === t.animation && (t.animation = {}), void 0 === t.animation.duration && (t.animation.duration = 1e3), void 0 === t.animation.easingFunction && (t.animation.easingFunction = "easeInOutQuad"), this.animateView(t)
                            } else t = {}
                        }
                    }, {
                        key: "animateView",
                        value: function(t) {
                            if (void 0 !== t) {
                                this.animationEasingFunction = t.animation.easingFunction, this.releaseNode(), !0 === t.locked && (this.lockedOnNodeId = t.lockedOnNode, this.lockedOnNodeOffset = t.offset), 0 != this.easingTime && this._transitionRedraw(!0), this.sourceScale = this.body.view.scale, this.sourceTranslation = this.body.view.translation, this.targetScale = t.scale, this.body.view.scale = this.targetScale;
                                var e, n, i = this.canvas.DOMtoCanvas({ x: .5 * this.canvas.frame.canvas.clientWidth, y: .5 * this.canvas.frame.canvas.clientHeight }),
                                    r = i.x - t.position.x,
                                    o = i.y - t.position.y;
                                if (this.targetTranslation = { x: this.sourceTranslation.x + r * this.targetScale + t.offset.x, y: this.sourceTranslation.y + o * this.targetScale + t.offset.y }, 0 === t.animation.duration)
                                    if (null != this.lockedOnNodeId) this.viewFunction = tt(e = this._lockedRedraw).call(e, this), this.body.emitter.on("initRedraw", this.viewFunction);
                                    else this.body.view.scale = this.targetScale, this.body.view.translation = this.targetTranslation, this.body.emitter.emit("_requestRedraw");
                                else this.animationSpeed = 1 / (60 * t.animation.duration * .001) || 1 / 60, this.animationEasingFunction = t.animation.easingFunction, this.viewFunction = tt(n = this._transitionRedraw).call(n, this), this.body.emitter.on("initRedraw", this.viewFunction), this.body.emitter.emit("_startRendering")
                            }
                        }
                    }, {
                        key: "_lockedRedraw",
                        value: function() {
                            var t = this.body.nodes[this.lockedOnNodeId].x,
                                e = this.body.nodes[this.lockedOnNodeId].y,
                                n = this.canvas.DOMtoCanvas({ x: .5 * this.canvas.frame.canvas.clientWidth, y: .5 * this.canvas.frame.canvas.clientHeight }),
                                i = n.x - t,
                                r = n.y - e,
                                o = this.body.view.translation,
                                g = { x: o.x + i * this.body.view.scale + this.lockedOnNodeOffset.x, y: o.y + r * this.body.view.scale + this.lockedOnNodeOffset.y };
                            this.body.view.translation = g
                        }
                    }, { key: "releaseNode", value: function() { void 0 !== this.lockedOnNodeId && void 0 !== this.viewFunction && (this.body.emitter.off("initRedraw", this.viewFunction), this.lockedOnNodeId = void 0, this.lockedOnNodeOffset = void 0) } }, {
                        key: "_transitionRedraw",
                        value: function() {
                            var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
                            this.easingTime += this.animationSpeed, this.easingTime = !0 === t ? 1 : this.easingTime;
                            var e = eg[this.animationEasingFunction](this.easingTime);
                            if (this.body.view.scale = this.sourceScale + (this.targetScale - this.sourceScale) * e, this.body.view.translation = { x: this.sourceTranslation.x + (this.targetTranslation.x - this.sourceTranslation.x) * e, y: this.sourceTranslation.y + (this.targetTranslation.y - this.sourceTranslation.y) * e }, this.easingTime >= 1) {
                                var n;
                                if (this.body.emitter.off("initRedraw", this.viewFunction), this.easingTime = 0, null != this.lockedOnNodeId) this.viewFunction = tt(n = this._lockedRedraw).call(n, this), this.body.emitter.on("initRedraw", this.viewFunction);
                                this.body.emitter.emit("animationFinished")
                            }
                        }
                    }, { key: "getScale", value: function() { return this.body.view.scale } }, { key: "getViewPosition", value: function() { return this.canvas.DOMtoCanvas({ x: .5 * this.canvas.frame.canvas.clientWidth, y: .5 * this.canvas.frame.canvas.clientHeight }) } }]), t
                }();
            ts("div.vis-network div.vis-navigation div.vis-button {\n    width:34px;\n    height:34px;\n    -moz-border-radius: 17px;\n    border-radius: 17px;\n    position:absolute;\n    display:inline-block;\n    background-position: 2px 2px;\n    background-repeat:no-repeat;\n    cursor: pointer;\n    -webkit-touch-callout: none;\n    -webkit-user-select: none;\n    -khtml-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n}\n\ndiv.vis-network div.vis-navigation div.vis-button:hover {\n    box-shadow: 0 0 3px 3px rgba(56, 207, 21, 0.30);\n}\n\ndiv.vis-network div.vis-navigation div.vis-button:active {\n    box-shadow: 0 0 1px 3px rgba(56, 207, 21, 0.95);\n}\n\ndiv.vis-network div.vis-navigation div.vis-button.vis-up {\n    background-image: url('data:image/png;base64, ');\n    bottom:50px;\n    left:55px;\n}\ndiv.vis-network div.vis-navigation div.vis-button.vis-down {\n    background-image: url('data:image/png;base64, ');\n    bottom:10px;\n    left:55px;\n}\ndiv.vis-network div.vis-navigation div.vis-button.vis-left {\n    background-image: url('data:image/png;base64, ');\n    bottom:10px;\n    left:15px;\n}\ndiv.vis-network div.vis-navigation div.vis-button.vis-right {\n    background-image: url('data:image/png;base64, ');\n    bottom:10px;\n    left:95px;\n}\ndiv.vis-network div.vis-navigation div.vis-button.vis-zoomIn {\n    background-image: url('data:image/png;base64, ');\n    bottom:10px;\n    right:15px;\n}\ndiv.vis-network div.vis-navigation div.vis-button.vis-zoomOut {\n    background-image: url('data:image/png;base64, ');\n    bottom:10px;\n    right:55px;\n}\ndiv.vis-network div.vis-navigation div.vis-button.vis-zoomExtends {\n    background-image: url('data:image/png;base64, ');\n    bottom:50px;\n    right:15px;\n}\n");
            var ac = function() {
                function t(e, n) {
                    var i = this;
                    DA(this, t), this.body = e, this.canvas = n, this.iconsCreated = !1, this.navigationHammers = [], this.boundFunctions = {}, this.touchTime = 0, this.activated = !1, this.body.emitter.on("activate", (function() { i.activated = !0, i.configureKeyboardBindings() })), this.body.emitter.on("deactivate", (function() { i.activated = !1, i.configureKeyboardBindings() })), this.body.emitter.on("destroy", (function() { void 0 !== i.keycharm && i.keycharm.destroy() })), this.options = {}
                }
                return RA(t, [{ key: "setOptions", value: function(t) { void 0 !== t && (this.options = t, this.create()) } }, { key: "create", value: function() {!0 === this.options.navigationButtons ? !1 === this.iconsCreated && this.loadNavigationElements() : !0 === this.iconsCreated && this.cleanNavigation(), this.configureKeyboardBindings() } }, {
                    key: "cleanNavigation",
                    value: function() {
                        if (0 != this.navigationHammers.length) {
                            for (var t = 0; t < this.navigationHammers.length; t++) this.navigationHammers[t].destroy();
                            this.navigationHammers = []
                        }
                        this.navigationDOM && this.navigationDOM.wrapper && this.navigationDOM.wrapper.parentNode && this.navigationDOM.wrapper.parentNode.removeChild(this.navigationDOM.wrapper), this.iconsCreated = !1
                    }
                }, {
                    key: "loadNavigationElements",
                    value: function() {
                        var t = this;
                        this.cleanNavigation(), this.navigationDOM = {};
                        var e = ["up", "down", "left", "right", "zoomIn", "zoomOut", "zoomExtends"],
                            n = ["_moveUp", "_moveDown", "_moveLeft", "_moveRight", "_zoomIn", "_zoomOut", "_fit"];
                        this.navigationDOM.wrapper = document.createElement("div"), this.navigationDOM.wrapper.className = "vis-navigation", this.canvas.frame.appendChild(this.navigationDOM.wrapper);
                        for (var i = 0; i < e.length; i++) {
                            this.navigationDOM[e[i]] = document.createElement("div"), this.navigationDOM[e[i]].className = "vis-button vis-" + e[i], this.navigationDOM.wrapper.appendChild(this.navigationDOM[e[i]]);
                            var r, o, g = new EA(this.navigationDOM[e[i]]);
                            if ("_fit" === n[i]) oc(g, tt(r = this._fit).call(r, this));
                            else oc(g, tt(o = this.bindToRedraw).call(o, this, n[i]));
                            this.navigationHammers.push(g)
                        }
                        var s = new EA(this.canvas.frame);
                        gc(s, (function() { t._stopMovement() })), this.navigationHammers.push(s), this.iconsCreated = !0
                    }
                }, {
                    key: "bindToRedraw",
                    value: function(t) {
                        var e;
                        void 0 === this.boundFunctions[t] && (this.boundFunctions[t] = tt(e = this[t]).call(e, this), this.body.emitter.on("initRedraw", this.boundFunctions[t]), this.body.emitter.emit("_startRendering"))
                    }
                }, { key: "unbindFromRedraw", value: function(t) { void 0 !== this.boundFunctions[t] && (this.body.emitter.off("initRedraw", this.boundFunctions[t]), this.body.emitter.emit("_stopRendering"), delete this.boundFunctions[t]) } }, {
                    key: "_fit",
                    value: function() {
                        (new Date).valueOf() - this.touchTime > 700 && (this.body.emitter.emit("fit", { duration: 700 }), this.touchTime = (new Date).valueOf())
                    }
                }, {
                    key: "_stopMovement",
                    value: function() {
                        for (var t in this.boundFunctions) Object.prototype.hasOwnProperty.call(this.boundFunctions, t) && (this.body.emitter.off("initRedraw", this.boundFunctions[t]), this.body.emitter.emit("_stopRendering"));
                        this.boundFunctions = {}
                    }
                }, { key: "_moveUp", value: function() { this.body.view.translation.y += this.options.keyboard.speed.y } }, { key: "_moveDown", value: function() { this.body.view.translation.y -= this.options.keyboard.speed.y } }, { key: "_moveLeft", value: function() { this.body.view.translation.x += this.options.keyboard.speed.x } }, { key: "_moveRight", value: function() { this.body.view.translation.x -= this.options.keyboard.speed.x } }, {
                    key: "_zoomIn",
                    value: function() {
                        var t = this.body.view.scale,
                            e = this.body.view.scale * (1 + this.options.keyboard.speed.zoom),
                            n = this.body.view.translation,
                            i = e / t,
                            r = (1 - i) * this.canvas.canvasViewCenter.x + n.x * i,
                            o = (1 - i) * this.canvas.canvasViewCenter.y + n.y * i;
                        this.body.view.scale = e, this.body.view.translation = { x: r, y: o }, this.body.emitter.emit("zoom", { direction: "+", scale: this.body.view.scale, pointer: null })
                    }
                }, {
                    key: "_zoomOut",
                    value: function() {
                        var t = this.body.view.scale,
                            e = this.body.view.scale / (1 + this.options.keyboard.speed.zoom),
                            n = this.body.view.translation,
                            i = e / t,
                            r = (1 - i) * this.canvas.canvasViewCenter.x + n.x * i,
                            o = (1 - i) * this.canvas.canvasViewCenter.y + n.y * i;
                        this.body.view.scale = e, this.body.view.translation = { x: r, y: o }, this.body.emitter.emit("zoom", { direction: "-", scale: this.body.view.scale, pointer: null })
                    }
                }, {
                    key: "configureKeyboardBindings",
                    value: function() {
                        var t, e, n, i, r, o, g, s, A, a, C, I, u, c, l, h, d, f, p, v, y, b, m, w, _ = this;
                        (void 0 !== this.keycharm && this.keycharm.destroy(), !0 === this.options.keyboard.enabled) && (!0 === this.options.keyboard.bindToWindow ? this.keycharm = es({ container: window, preventDefault: !0 }) : this.keycharm = es({ container: this.canvas.frame, preventDefault: !0 }), this.keycharm.reset(), !0 === this.activated && (tt(t = this.keycharm).call(t, "up", (function() { _.bindToRedraw("_moveUp") }), "keydown"), tt(e = this.keycharm).call(e, "down", (function() { _.bindToRedraw("_moveDown") }), "keydown"), tt(n = this.keycharm).call(n, "left", (function() { _.bindToRedraw("_moveLeft") }), "keydown"), tt(i = this.keycharm).call(i, "right", (function() { _.bindToRedraw("_moveRight") }), "keydown"), tt(r = this.keycharm).call(r, "=", (function() { _.bindToRedraw("_zoomIn") }), "keydown"), tt(o = this.keycharm).call(o, "num+", (function() { _.bindToRedraw("_zoomIn") }), "keydown"), tt(g = this.keycharm).call(g, "num-", (function() { _.bindToRedraw("_zoomOut") }), "keydown"), tt(s = this.keycharm).call(s, "-", (function() { _.bindToRedraw("_zoomOut") }), "keydown"), tt(A = this.keycharm).call(A, "[", (function() { _.bindToRedraw("_zoomOut") }), "keydown"), tt(a = this.keycharm).call(a, "]", (function() { _.bindToRedraw("_zoomIn") }), "keydown"), tt(C = this.keycharm).call(C, "pageup", (function() { _.bindToRedraw("_zoomIn") }), "keydown"), tt(I = this.keycharm).call(I, "pagedown", (function() { _.bindToRedraw("_zoomOut") }), "keydown"), tt(u = this.keycharm).call(u, "up", (function() { _.unbindFromRedraw("_moveUp") }), "keyup"), tt(c = this.keycharm).call(c, "down", (function() { _.unbindFromRedraw("_moveDown") }), "keyup"), tt(l = this.keycharm).call(l, "left", (function() { _.unbindFromRedraw("_moveLeft") }), "keyup"), tt(h = this.keycharm).call(h, "right", (function() { _.unbindFromRedraw("_moveRight") }), "keyup"), tt(d = this.keycharm).call(d, "=", (function() { _.unbindFromRedraw("_zoomIn") }), "keyup"), tt(f = this.keycharm).call(f, "num+", (function() { _.unbindFromRedraw("_zoomIn") }), "keyup"), tt(p = this.keycharm).call(p, "num-", (function() { _.unbindFromRedraw("_zoomOut") }), "keyup"), tt(v = this.keycharm).call(v, "-", (function() { _.unbindFromRedraw("_zoomOut") }), "keyup"), tt(y = this.keycharm).call(y, "[", (function() { _.unbindFromRedraw("_zoomOut") }), "keyup"), tt(b = this.keycharm).call(b, "]", (function() { _.unbindFromRedraw("_zoomIn") }), "keyup"), tt(m = this.keycharm).call(m, "pageup", (function() { _.unbindFromRedraw("_zoomIn") }), "keyup"), tt(w = this.keycharm).call(w, "pagedown", (function() { _.unbindFromRedraw("_zoomOut") }), "keyup")))
                    }
                }]), t
            }();
            ts("div.vis-tooltip {\n  position: absolute;\n  visibility: hidden;\n  padding: 5px;\n  white-space: nowrap;\n\n  font-family: verdana;\n  font-size:14px;\n  color:#000000;\n  background-color: #f5f4ed;\n\n  -moz-border-radius: 3px;\n  -webkit-border-radius: 3px;\n  border-radius: 3px;\n  border: 1px solid #808074;\n\n  box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);\n  pointer-events: none;\n\n  z-index: 5;\n}\n");
            var Cc = function() {
                    function t(e, n) { DA(this, t), this.container = e, this.overflowMethod = n || "cap", this.x = 0, this.y = 0, this.padding = 5, this.hidden = !1, this.frame = document.createElement("div"), this.frame.className = "vis-tooltip", this.container.appendChild(this.frame) }
                    return RA(t, [{ key: "setPosition", value: function(t, e) { this.x = Yi(t), this.y = Yi(e) } }, { key: "setText", value: function(t) { t instanceof Element ? (this.frame.innerHTML = "", this.frame.appendChild(t)) : this.frame.innerHTML = t } }, {
                        key: "show",
                        value: function(t) {
                            if (void 0 === t && (t = !0), !0 === t) {
                                var e = this.frame.clientHeight,
                                    n = this.frame.clientWidth,
                                    i = this.frame.parentNode.clientHeight,
                                    r = this.frame.parentNode.clientWidth,
                                    o = 0,
                                    g = 0;
                                if ("flip" == this.overflowMethod) {
                                    var s = !1,
                                        A = !0;
                                    this.y - e < this.padding && (A = !1), this.x + n > r - this.padding && (s = !0), o = s ? this.x - n : this.x, g = A ? this.y - e : this.y
                                } else(g = this.y - e) + e + this.padding > i && (g = i - e - this.padding), g < this.padding && (g = this.padding), (o = this.x) + n + this.padding > r && (o = r - n - this.padding), o < this.padding && (o = this.padding);
                                this.frame.style.left = o + "px", this.frame.style.top = g + "px", this.frame.style.visibility = "visible", this.hidden = !1
                            } else this.hide()
                        }
                    }, { key: "hide", value: function() { this.hidden = !0, this.frame.style.left = "0", this.frame.style.top = "0", this.frame.style.visibility = "hidden" } }, { key: "destroy", value: function() { this.frame.parentNode.removeChild(this.frame) } }]), t
                }(),
                Ic = function() {
                    function t(e, n, i) {
                        var r, o, g, s, A, a, C, I, u, c, l, h, d;
                        DA(this, t), this.body = e, this.canvas = n, this.selectionHandler = i, this.navigationHandler = new ac(e, n), this.body.eventListeners.onTap = tt(r = this.onTap).call(r, this), this.body.eventListeners.onTouch = tt(o = this.onTouch).call(o, this), this.body.eventListeners.onDoubleTap = tt(g = this.onDoubleTap).call(g, this), this.body.eventListeners.onHold = tt(s = this.onHold).call(s, this), this.body.eventListeners.onDragStart = tt(A = this.onDragStart).call(A, this), this.body.eventListeners.onDrag = tt(a = this.onDrag).call(a, this), this.body.eventListeners.onDragEnd = tt(C = this.onDragEnd).call(C, this), this.body.eventListeners.onMouseWheel = tt(I = this.onMouseWheel).call(I, this), this.body.eventListeners.onPinch = tt(u = this.onPinch).call(u, this), this.body.eventListeners.onMouseMove = tt(c = this.onMouseMove).call(c, this), this.body.eventListeners.onRelease = tt(l = this.onRelease).call(l, this), this.body.eventListeners.onContext = tt(h = this.onContext).call(h, this), this.touchTime = 0, this.drag = {}, this.pinch = {}, this.popup = void 0, this.popupObj = void 0, this.popupTimer = void 0, this.body.functions.getPointer = tt(d = this.getPointer).call(d, this), this.options = {}, this.defaultOptions = { dragNodes: !0, dragView: !0, hover: !1, keyboard: { enabled: !1, speed: { x: 10, y: 10, zoom: .02 }, bindToWindow: !0 }, navigationButtons: !1, tooltipDelay: 300, zoomView: !0, zoomSpeed: 1 }, bt(this.options, this.defaultOptions), this.bindEventListeners()
                    }
                    return RA(t, [{
                        key: "bindEventListeners",
                        value: function() {
                            var t = this;
                            this.body.emitter.on("destroy", (function() { clearTimeout(t.popupTimer), delete t.body.functions.getPointer }))
                        }
                    }, {
                        key: "setOptions",
                        value: function(t) {
                            if (void 0 !== t) { jo(["hideEdgesOnDrag", "hideEdgesOnZoom", "hideNodesOnDrag", "keyboard", "multiselect", "selectable", "selectConnectedEdges"], this.options, t), tg(this.options, t, "keyboard"), t.tooltip && (bt(this.options.tooltip, t.tooltip), t.tooltip.color && (this.options.tooltip.color = Wo(t.tooltip.color))) }
                            this.navigationHandler.setOptions(this.options)
                        }
                    }, { key: "getPointer", value: function(t) { return { x: t.x - (e = this.canvas.frame.canvas, e.getBoundingClientRect().left), y: t.y - Zo(this.canvas.frame.canvas) }; var e } }, {
                        key: "onTouch",
                        value: function(t) {
                            (new Date).valueOf() - this.touchTime > 50 && (this.drag.pointer = this.getPointer(t.center), this.drag.pinched = !1, this.pinch.scale = this.body.view.scale, this.touchTime = (new Date).valueOf())
                        }
                    }, {
                        key: "onTap",
                        value: function(t) {
                            var e = this.getPointer(t.center),
                                n = this.selectionHandler.options.multiselect && (t.changedPointers[0].ctrlKey || t.changedPointers[0].metaKey);
                            this.checkSelectionChanges(e, t, n), this.selectionHandler._generateClickEvent("click", t, e)
                        }
                    }, {
                        key: "onDoubleTap",
                        value: function(t) {
                            var e = this.getPointer(t.center);
                            this.selectionHandler._generateClickEvent("doubleClick", t, e)
                        }
                    }, {
                        key: "onHold",
                        value: function(t) {
                            var e = this.getPointer(t.center),
                                n = this.selectionHandler.options.multiselect;
                            this.checkSelectionChanges(e, t, n), this.selectionHandler._generateClickEvent("click", t, e), this.selectionHandler._generateClickEvent("hold", t, e)
                        }
                    }, {
                        key: "onRelease",
                        value: function(t) {
                            if ((new Date).valueOf() - this.touchTime > 10) {
                                var e = this.getPointer(t.center);
                                this.selectionHandler._generateClickEvent("release", t, e), this.touchTime = (new Date).valueOf()
                            }
                        }
                    }, {
                        key: "onContext",
                        value: function(t) {
                            var e = this.getPointer({ x: t.clientX, y: t.clientY });
                            this.selectionHandler._generateClickEvent("oncontext", t, e)
                        }
                    }, {
                        key: "checkSelectionChanges",
                        value: function(t, e) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
                                i = this.selectionHandler.getSelection(),
                                r = !1;
                            r = !0 === n ? this.selectionHandler.selectAdditionalOnPoint(t) : this.selectionHandler.selectOnPoint(t);
                            var o = this.selectionHandler.getSelection(),
                                g = this._determineDifference(i, o),
                                s = this._determineDifference(o, i);
                            g.edges.length > 0 && (this.selectionHandler._generateClickEvent("deselectEdge", e, t, i), r = !0), g.nodes.length > 0 && (this.selectionHandler._generateClickEvent("deselectNode", e, t, i), r = !0), s.nodes.length > 0 && (this.selectionHandler._generateClickEvent("selectNode", e, t), r = !0), s.edges.length > 0 && (this.selectionHandler._generateClickEvent("selectEdge", e, t), r = !0), !0 === r && this.selectionHandler._generateClickEvent("select", e, t)
                        }
                    }, { key: "_determineDifference", value: function(t, e) { var n = function(t, e) { for (var n = [], i = 0; i < t.length; i++) { var r = t[i]; - 1 === pr(e).call(e, r) && n.push(r) } return n }; return { nodes: n(t.nodes, e.nodes), edges: n(t.edges, e.edges) } } }, {
                        key: "onDragStart",
                        value: function(t) {
                            if (!this.drag.dragging) {
                                void 0 === this.drag.pointer && this.onTouch(t);
                                var e = this.selectionHandler.getNodeAt(this.drag.pointer);
                                if (this.drag.dragging = !0, this.drag.selection = [], this.drag.translation = bt({}, this.body.view.translation), this.drag.nodeId = void 0, t.srcEvent.shiftKey) {
                                    this.body.selectionBox.show = !0;
                                    var n = this.getPointer(t.center);
                                    this.body.selectionBox.position.start = { x: this.canvas._XconvertDOMtoCanvas(n.x), y: this.canvas._YconvertDOMtoCanvas(n.y) }, this.body.selectionBox.position.end = { x: this.canvas._XconvertDOMtoCanvas(n.x), y: this.canvas._YconvertDOMtoCanvas(n.y) }
                                }
                                if (void 0 !== e && !0 === this.options.dragNodes) {
                                    this.drag.nodeId = e.id, !1 === e.isSelected() && (this.selectionHandler.unselectAll(), this.selectionHandler.selectObject(e)), this.selectionHandler._generateClickEvent("dragStart", t, this.drag.pointer);
                                    var i = this.selectionHandler.selectionObj.nodes;
                                    for (var r in i)
                                        if (Object.prototype.hasOwnProperty.call(i, r)) {
                                            var o = i[r],
                                                g = { id: o.id, node: o, x: o.x, y: o.y, xFixed: o.options.fixed.x, yFixed: o.options.fixed.y };
                                            o.options.fixed.x = !0, o.options.fixed.y = !0, this.drag.selection.push(g)
                                        }
                                } else this.selectionHandler._generateClickEvent("dragStart", t, this.drag.pointer, void 0, !0)
                            }
                        }
                    }, {
                        key: "onDrag",
                        value: function(t) {
                            var e = this;
                            if (!0 !== this.drag.pinched) {
                                this.body.emitter.emit("unlockNode");
                                var n = this.getPointer(t.center),
                                    i = this.drag.selection;
                                if (i && i.length && !0 === this.options.dragNodes) {
                                    this.selectionHandler._generateClickEvent("dragging", t, n);
                                    var r = n.x - this.drag.pointer.x,
                                        o = n.y - this.drag.pointer.y;
                                    zi(i).call(i, (function(t) { var n = t.node;!1 === t.xFixed && (n.x = e.canvas._XconvertDOMtoCanvas(e.canvas._XconvertCanvasToDOM(t.x) + r)), !1 === t.yFixed && (n.y = e.canvas._YconvertDOMtoCanvas(e.canvas._YconvertCanvasToDOM(t.y) + o)) })), this.body.emitter.emit("startSimulation")
                                } else {
                                    if (t.srcEvent.shiftKey) {
                                        if (this.selectionHandler._generateClickEvent("dragging", t, n, void 0, !0), void 0 === this.drag.pointer) return void this.onDragStart(t);
                                        this.body.selectionBox.position.end = { x: this.canvas._XconvertDOMtoCanvas(n.x), y: this.canvas._YconvertDOMtoCanvas(n.y) }, this.body.emitter.emit("_requestRedraw")
                                    }
                                    if (!0 === this.options.dragView && !t.srcEvent.shiftKey) {
                                        if (this.selectionHandler._generateClickEvent("dragging", t, n, void 0, !0), void 0 === this.drag.pointer) return void this.onDragStart(t);
                                        var g = n.x - this.drag.pointer.x,
                                            s = n.y - this.drag.pointer.y;
                                        this.body.view.translation = { x: this.drag.translation.x + g, y: this.drag.translation.y + s }, this.body.emitter.emit("_requestRedraw")
                                    }
                                }
                            }
                        }
                    }, {
                        key: "onDragEnd",
                        value: function(t) {
                            var e = this;
                            if (this.drag.dragging = !1, this.body.selectionBox.show) {
                                var n;
                                this.body.selectionBox.show = !1;
                                var i = this.body.selectionBox.position,
                                    r = { minX: Math.min(i.start.x, i.end.x), minY: Math.min(i.start.y, i.end.y), maxX: Math.max(i.start.x, i.end.x), maxY: Math.max(i.start.y, i.end.y) },
                                    o = sr(n = this.body.nodeIndices).call(n, (function(t) { var n = e.body.nodes[t]; return n.x >= r.minX && n.x <= r.maxX && n.y >= r.minY && n.y <= r.maxY }));
                                zi(o).call(o, (function(t) { return e.selectionHandler.selectObject(e.body.nodes[t]) })), this.selectionHandler._generateClickEvent("dragEnd", t, this.getPointer(t.center), void 0, !0), this.body.emitter.emit("_requestRedraw")
                            } else {
                                var g = this.drag.selection;
                                g && g.length ? (zi(g).call(g, (function(t) { t.node.options.fixed.x = t.xFixed, t.node.options.fixed.y = t.yFixed })), this.selectionHandler._generateClickEvent("dragEnd", t, this.getPointer(t.center)), this.body.emitter.emit("startSimulation")) : (this.selectionHandler._generateClickEvent("dragEnd", t, this.getPointer(t.center), void 0, !0), this.body.emitter.emit("_requestRedraw"))
                            }
                        }
                    }, {
                        key: "onPinch",
                        value: function(t) {
                            var e = this.getPointer(t.center);
                            this.drag.pinched = !0, void 0 === this.pinch.scale && (this.pinch.scale = 1);
                            var n = this.pinch.scale * t.scale;
                            this.zoom(n, e)
                        }
                    }, {
                        key: "zoom",
                        value: function(t, e) {
                            if (!0 === this.options.zoomView) {
                                var n = this.body.view.scale;
                                t < 1e-5 && (t = 1e-5), t > 10 && (t = 10);
                                var i = void 0;
                                void 0 !== this.drag && !0 === this.drag.dragging && (i = this.canvas.DOMtoCanvas(this.drag.pointer));
                                var r = this.body.view.translation,
                                    o = t / n,
                                    g = (1 - o) * e.x + r.x * o,
                                    s = (1 - o) * e.y + r.y * o;
                                if (this.body.view.scale = t, this.body.view.translation = { x: g, y: s }, null != i) {
                                    var A = this.canvas.canvasToDOM(i);
                                    this.drag.pointer.x = A.x, this.drag.pointer.y = A.y
                                }
                                this.body.emitter.emit("_requestRedraw"), n < t ? this.body.emitter.emit("zoom", { direction: "+", scale: this.body.view.scale, pointer: e }) : this.body.emitter.emit("zoom", { direction: "-", scale: this.body.view.scale, pointer: e })
                            }
                        }
                    }, {
                        key: "onMouseWheel",
                        value: function(t) {
                            if (!0 === this.options.zoomView) {
                                if (0 !== t.deltaY) {
                                    var e = this.body.view.scale;
                                    e *= 1 + (t.deltaY < 0 ? 1 : -1) * (.1 * this.options.zoomSpeed);
                                    var n = this.getPointer({ x: t.clientX, y: t.clientY });
                                    this.zoom(e, n)
                                }
                                t.preventDefault()
                            }
                        }
                    }, {
                        key: "onMouseMove",
                        value: function(t) {
                            var e = this,
                                n = this.getPointer({ x: t.clientX, y: t.clientY }),
                                i = !1;
                            void 0 !== this.popup && (!1 === this.popup.hidden && this._checkHidePopup(n), !1 === this.popup.hidden && (i = !0, this.popup.setPosition(n.x + 3, n.y - 5), this.popup.show())), !1 === this.options.keyboard.bindToWindow && !0 === this.options.keyboard.enabled && this.canvas.frame.focus(), !1 === i && (void 0 !== this.popupTimer && (clearInterval(this.popupTimer), this.popupTimer = void 0), this.drag.dragging || (this.popupTimer = BA((function() { return e._checkShowPopup(n) }), this.options.tooltipDelay))), !0 === this.options.hover && this.selectionHandler.hoverObject(t, n)
                        }
                    }, {
                        key: "_checkShowPopup",
                        value: function(t) {
                            var e = this.canvas._XconvertDOMtoCanvas(t.x),
                                n = this.canvas._YconvertDOMtoCanvas(t.y),
                                i = { left: e, top: n, right: e, bottom: n },
                                r = void 0 === this.popupObj ? void 0 : this.popupObj.id,
                                o = !1,
                                g = "node";
                            if (void 0 === this.popupObj) {
                                for (var s, A = this.body.nodeIndices, a = this.body.nodes, C = [], I = 0; I < A.length; I++) !0 === (s = a[A[I]]).isOverlappingWith(i) && (o = !0, void 0 !== s.getTitle() && C.push(A[I]));
                                C.length > 0 && (this.popupObj = a[C[C.length - 1]], o = !0)
                            }
                            if (void 0 === this.popupObj && !1 === o) {
                                for (var u, c = this.body.edgeIndices, l = this.body.edges, h = [], d = 0; d < c.length; d++) !0 === (u = l[c[d]]).isOverlappingWith(i) && !0 === u.connected && void 0 !== u.getTitle() && h.push(c[d]);
                                h.length > 0 && (this.popupObj = l[h[h.length - 1]], g = "edge")
                            }
                            void 0 !== this.popupObj ? this.popupObj.id !== r && (void 0 === this.popup && (this.popup = new Cc(this.canvas.frame)), this.popup.popupTargetType = g, this.popup.popupTargetId = this.popupObj.id, this.popup.setPosition(t.x + 3, t.y - 5), this.popup.setText(this.popupObj.getTitle()), this.popup.show(), this.body.emitter.emit("showPopup", this.popupObj.id)) : void 0 !== this.popup && (this.popup.hide(), this.body.emitter.emit("hidePopup"))
                        }
                    }, {
                        key: "_checkHidePopup",
                        value: function(t) {
                            var e = this.selectionHandler._pointerToPositionObject(t),
                                n = !1;
                            if ("node" === this.popup.popupTargetType) {
                                if (void 0 !== this.body.nodes[this.popup.popupTargetId] && !0 === (n = this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e))) {
                                    var i = this.selectionHandler.getNodeAt(t);
                                    n = void 0 !== i && i.id === this.popup.popupTargetId
                                }
                            } else void 0 === this.selectionHandler.getNodeAt(t) && void 0 !== this.body.edges[this.popup.popupTargetId] && (n = this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));
                            !1 === n && (this.popupObj = void 0, this.popup.hide(), this.body.emitter.emit("hidePopup"))
                        }
                    }]), t
                }(),
                uc = function() {
                    function t(e, n) {
                        var i = this;
                        DA(this, t), this.body = e, this.canvas = n, this.selectionObj = { nodes: [], edges: [] }, this.hoverObj = { nodes: {}, edges: {} }, this.options = {}, this.defaultOptions = { multiselect: !1, selectable: !0, selectConnectedEdges: !0, hoverConnectedEdges: !0 }, bt(this.options, this.defaultOptions), this.body.emitter.on("_dataChanged", (function() { i.updateSelection() }))
                    }
                    return RA(t, [{ key: "setOptions", value: function(t) { if (void 0 !== t) { Mo(["multiselect", "hoverConnectedEdges", "selectable", "selectConnectedEdges"], this.options, t) } } }, {
                        key: "selectOnPoint",
                        value: function(t) {
                            var e = !1;
                            if (!0 === this.options.selectable) {
                                var n = this.getNodeAt(t) || this.getEdgeAt(t);
                                this.unselectAll(), void 0 !== n && (e = this.selectObject(n)), this.body.emitter.emit("_requestRedraw")
                            }
                            return e
                        }
                    }, {
                        key: "selectAdditionalOnPoint",
                        value: function(t) {
                            var e = !1;
                            if (!0 === this.options.selectable) {
                                var n = this.getNodeAt(t) || this.getEdgeAt(t);
                                void 0 !== n && (e = !0, !0 === n.isSelected() ? this.deselectObject(n) : this.selectObject(n), this.body.emitter.emit("_requestRedraw"))
                            }
                            return e
                        }
                    }, { key: "_initBaseEvent", value: function(t, e) { var n = {}; return n.pointer = { DOM: { x: e.x, y: e.y }, canvas: this.canvas.DOMtoCanvas(e) }, n.event = t, n } }, {
                        key: "_generateClickEvent",
                        value: function(t, e, n, i) {
                            var r = arguments.length > 4 && void 0 !== arguments[4] && arguments[4],
                                o = this._initBaseEvent(e, n);
                            if (!0 === r) o.nodes = [], o.edges = [];
                            else {
                                var g = this.getSelection();
                                o.nodes = g.nodes, o.edges = g.edges
                            }
                            void 0 !== i && (o.previousSelection = i), "click" == t && (o.items = this.getClickedItems(n)), void 0 !== e.controlEdge && (o.controlEdge = e.controlEdge), this.body.emitter.emit(t, o)
                        }
                    }, { key: "selectObject", value: function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.options.selectConnectedEdges; return void 0 !== t && (t instanceof UI && !0 === e && this._selectConnectedEdges(t), t.select(), this._addToSelection(t), !0) } }, { key: "deselectObject", value: function(t) {!0 === t.isSelected() && (t.selected = !1, this._removeFromSelection(t)) } }, {
                        key: "_getAllNodesOverlappingWith",
                        value: function(t) {
                            for (var e = [], n = this.body.nodes, i = 0; i < this.body.nodeIndices.length; i++) {
                                var r = this.body.nodeIndices[i];
                                n[r].isOverlappingWith(t) && e.push(r)
                            }
                            return e
                        }
                    }, { key: "_pointerToPositionObject", value: function(t) { var e = this.canvas.DOMtoCanvas(t); return { left: e.x - 1, top: e.y + 1, right: e.x + 1, bottom: e.y - 1 } } }, {
                        key: "getNodeAt",
                        value: function(t) {
                            var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1],
                                n = this._pointerToPositionObject(t),
                                i = this._getAllNodesOverlappingWith(n);
                            return i.length > 0 ? !0 === e ? this.body.nodes[i[i.length - 1]] : i[i.length - 1] : void 0
                        }
                    }, {
                        key: "_getEdgesOverlappingWith",
                        value: function(t, e) {
                            for (var n = this.body.edges, i = 0; i < this.body.edgeIndices.length; i++) {
                                var r = this.body.edgeIndices[i];
                                n[r].isOverlappingWith(t) && e.push(r)
                            }
                        }
                    }, { key: "_getAllEdgesOverlappingWith", value: function(t) { var e = []; return this._getEdgesOverlappingWith(t, e), e } }, {
                        key: "getEdgeAt",
                        value: function(t) {
                            for (var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], n = this.canvas.DOMtoCanvas(t), i = 10, r = null, o = this.body.edges, g = 0; g < this.body.edgeIndices.length; g++) {
                                var s = this.body.edgeIndices[g],
                                    A = o[s];
                                if (A.connected) {
                                    var a = A.from.x,
                                        C = A.from.y,
                                        I = A.to.x,
                                        u = A.to.y,
                                        c = A.edgeType.getDistanceToEdge(a, C, I, u, n.x, n.y);
                                    c < i && (r = s, i = c)
                                }
                            }
                            return null !== r ? !0 === e ? this.body.edges[r] : r : void 0
                        }
                    }, { key: "_addToSelection", value: function(t) { t instanceof UI ? this.selectionObj.nodes[t.id] = t : this.selectionObj.edges[t.id] = t } }, { key: "_addToHover", value: function(t) { t instanceof UI ? this.hoverObj.nodes[t.id] = t : this.hoverObj.edges[t.id] = t } }, { key: "_removeFromSelection", value: function(t) { t instanceof UI ? (delete this.selectionObj.nodes[t.id], this._unselectConnectedEdges(t)) : delete this.selectionObj.edges[t.id] } }, {
                        key: "unselectAll",
                        value: function() {
                            for (var t in this.selectionObj.nodes) Object.prototype.hasOwnProperty.call(this.selectionObj.nodes, t) && this.selectionObj.nodes[t].unselect();
                            for (var e in this.selectionObj.edges) Object.prototype.hasOwnProperty.call(this.selectionObj.edges, e) && this.selectionObj.edges[e].unselect();
                            this.selectionObj = { nodes: {}, edges: {} }
                        }
                    }, { key: "_getSelectedNodeCount", value: function() { var t = 0; for (var e in this.selectionObj.nodes) Object.prototype.hasOwnProperty.call(this.selectionObj.nodes, e) && (t += 1); return t } }, {
                        key: "_getSelectedNode",
                        value: function() {
                            for (var t in this.selectionObj.nodes)
                                if (Object.prototype.hasOwnProperty.call(this.selectionObj.nodes, t)) return this.selectionObj.nodes[t]
                        }
                    }, {
                        key: "_getSelectedEdge",
                        value: function() {
                            for (var t in this.selectionObj.edges)
                                if (Object.prototype.hasOwnProperty.call(this.selectionObj.edges, t)) return this.selectionObj.edges[t]
                        }
                    }, { key: "_getSelectedEdgeCount", value: function() { var t = 0; for (var e in this.selectionObj.edges) Object.prototype.hasOwnProperty.call(this.selectionObj.edges, e) && (t += 1); return t } }, { key: "_getSelectedObjectCount", value: function() { var t = 0; for (var e in this.selectionObj.nodes) Object.prototype.hasOwnProperty.call(this.selectionObj.nodes, e) && (t += 1); for (var n in this.selectionObj.edges) Object.prototype.hasOwnProperty.call(this.selectionObj.edges, n) && (t += 1); return t } }, {
                        key: "_selectionIsEmpty",
                        value: function() {
                            for (var t in this.selectionObj.nodes)
                                if (Object.prototype.hasOwnProperty.call(this.selectionObj.nodes, t)) return !1;
                            for (var e in this.selectionObj.edges)
                                if (Object.prototype.hasOwnProperty.call(this.selectionObj.edges, e)) return !1;
                            return !0
                        }
                    }, {
                        key: "_clusterInSelection",
                        value: function() {
                            for (var t in this.selectionObj.nodes)
                                if (Object.prototype.hasOwnProperty.call(this.selectionObj.nodes, t) && this.selectionObj.nodes[t].clusterSize > 1) return !0;
                            return !1
                        }
                    }, {
                        key: "_selectConnectedEdges",
                        value: function(t) {
                            for (var e = 0; e < t.edges.length; e++) {
                                var n = t.edges[e];
                                n.select(), this._addToSelection(n)
                            }
                        }
                    }, {
                        key: "_hoverConnectedEdges",
                        value: function(t) {
                            for (var e = 0; e < t.edges.length; e++) {
                                var n = t.edges[e];
                                n.hover = !0, this._addToHover(n)
                            }
                        }
                    }, {
                        key: "_unselectConnectedEdges",
                        value: function(t) {
                            for (var e = 0; e < t.edges.length; e++) {
                                var n = t.edges[e];
                                n.unselect(), this._removeFromSelection(n)
                            }
                        }
                    }, { key: "emitBlurEvent", value: function(t, e, n) { var i = this._initBaseEvent(t, e);!0 === n.hover && (n.hover = !1, n instanceof UI ? (i.node = n.id, this.body.emitter.emit("blurNode", i)) : (i.edge = n.id, this.body.emitter.emit("blurEdge", i))) } }, {
                        key: "emitHoverEvent",
                        value: function(t, e, n) {
                            var i = this._initBaseEvent(t, e),
                                r = !1;
                            return !1 === n.hover && (n.hover = !0, this._addToHover(n), r = !0, n instanceof UI ? (i.node = n.id, this.body.emitter.emit("hoverNode", i)) : (i.edge = n.id, this.body.emitter.emit("hoverEdge", i))), r
                        }
                    }, {
                        key: "hoverObject",
                        value: function(t, e) {
                            var n = this.getNodeAt(e);
                            void 0 === n && (n = this.getEdgeAt(e));
                            var i = !1;
                            for (var r in this.hoverObj.nodes) Object.prototype.hasOwnProperty.call(this.hoverObj.nodes, r) && (void 0 === n || n instanceof UI && n.id != r || n instanceof Mu) && (this.emitBlurEvent(t, e, this.hoverObj.nodes[r]), delete this.hoverObj.nodes[r], i = !0);
                            for (var o in this.hoverObj.edges) Object.prototype.hasOwnProperty.call(this.hoverObj.edges, o) && (!0 === i ? (this.hoverObj.edges[o].hover = !1, delete this.hoverObj.edges[o]) : (void 0 === n || n instanceof Mu && n.id != o || n instanceof UI && !n.hover) && (this.emitBlurEvent(t, e, this.hoverObj.edges[o]), delete this.hoverObj.edges[o], i = !0));
                            if (void 0 !== n) {
                                var g = Hr(this.hoverObj.edges).length,
                                    s = Hr(this.hoverObj.nodes).length;
                                (i || n instanceof Mu && 0 === g && 0 === s || n instanceof UI && 0 === g && 0 === s) && (i = this.emitHoverEvent(t, e, n)), n instanceof UI && !0 === this.options.hoverConnectedEdges && this._hoverConnectedEdges(n)
                            }!0 === i && this.body.emitter.emit("_requestRedraw")
                        }
                    }, { key: "getSelection", value: function() { return { nodes: this.getSelectedNodes(), edges: this.getSelectedEdges() } } }, {
                        key: "getSelectedNodes",
                        value: function() {
                            var t = [];
                            if (!0 === this.options.selectable)
                                for (var e in this.selectionObj.nodes) Object.prototype.hasOwnProperty.call(this.selectionObj.nodes, e) && t.push(this.selectionObj.nodes[e].id);
                            return t
                        }
                    }, {
                        key: "getSelectedEdges",
                        value: function() {
                            var t = [];
                            if (!0 === this.options.selectable)
                                for (var e in this.selectionObj.edges) Object.prototype.hasOwnProperty.call(this.selectionObj.edges, e) && t.push(this.selectionObj.edges[e].id);
                            return t
                        }
                    }, {
                        key: "setSelection",
                        value: function(t) {
                            var e, n, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                            if (!t || !t.nodes && !t.edges) throw "Selection must be an object with nodes and/or edges properties";
                            if ((i.unselectAll || void 0 === i.unselectAll) && this.unselectAll(), t.nodes)
                                for (e = 0; e < t.nodes.length; e++) {
                                    n = t.nodes[e];
                                    var r = this.body.nodes[n];
                                    if (!r) throw new RangeError('Node with id "' + n + '" not found');
                                    this.selectObject(r, i.highlightEdges)
                                }
                            if (t.edges)
                                for (e = 0; e < t.edges.length; e++) {
                                    n = t.edges[e];
                                    var o = this.body.edges[n];
                                    if (!o) throw new RangeError('Edge with id "' + n + '" not found');
                                    this.selectObject(o)
                                }
                            this.body.emitter.emit("_requestRedraw")
                        }
                    }, {
                        key: "selectNodes",
                        value: function(t) {
                            var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
                            if (!t || void 0 === t.length) throw "Selection must be an array with ids";
                            this.setSelection({ nodes: t }, { highlightEdges: e })
                        }
                    }, {
                        key: "selectEdges",
                        value: function(t) {
                            if (!t || void 0 === t.length) throw "Selection must be an array with ids";
                            this.setSelection({ edges: t })
                        }
                    }, { key: "updateSelection", value: function() { for (var t in this.selectionObj.nodes) Object.prototype.hasOwnProperty.call(this.selectionObj.nodes, t) && (Object.prototype.hasOwnProperty.call(this.body.nodes, t) || delete this.selectionObj.nodes[t]); for (var e in this.selectionObj.edges) Object.prototype.hasOwnProperty.call(this.selectionObj.edges, e) && (Object.prototype.hasOwnProperty.call(this.body.edges, e) || delete this.selectionObj.edges[e]) } }, {
                        key: "getClickedItems",
                        value: function(t) {
                            for (var e = this.canvas.DOMtoCanvas(t), n = [], i = this.body.nodeIndices, r = this.body.nodes, o = i.length - 1; o >= 0; o--) {
                                var g = r[i[o]].getItemsOnPoint(e);
                                n.push.apply(n, g)
                            }
                            for (var s = this.body.edgeIndices, A = this.body.edges, a = s.length - 1; a >= 0; a--) {
                                var C = A[s[a]].getItemsOnPoint(e);
                                n.push.apply(n, C)
                            }
                            return n
                        }
                    }]), t
                }(),
                cc = r((function(t, e) {
                    ! function(t) {
                        t.__esModule = !0, t.sort = function(t, e, n, g) {
                            if (!Array.isArray(t)) throw new TypeError("Can only sort arrays");
                            e ? "function" != typeof e && (g = n, n = e, e = i) : e = i, n || (n = 0), g || (g = t.length);
                            var s = g - n;
                            if (!(s < 2)) {
                                var a = 0;
                                if (s < 32) return a = r(t, n, g, e), void o(t, n, g, n + a, e);
                                var C = new A(t, e),
                                    I = function(t) { for (var e = 0; t >= 32;) e |= 1 & t, t >>= 1; return t + e }(s);
                                do {
                                    if ((a = r(t, n, g, e)) < I) {
                                        var u = s;
                                        u > I && (u = I), o(t, n, n + u, n + a, e), a = u
                                    }
                                    C.pushRun(n, a), C.mergeRuns(), s -= a, n += a
                                } while (0 !== s);
                                C.forceMergeRuns()
                            }
                        };
                        var e = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9];

                        function n(t) { return t < 1e5 ? t < 100 ? t < 10 ? 0 : 1 : t < 1e4 ? t < 1e3 ? 2 : 3 : 4 : t < 1e7 ? t < 1e6 ? 5 : 6 : t < 1e9 ? t < 1e8 ? 7 : 8 : 9 }

                        function i(t, i) {
                            if (t === i) return 0;
                            if (~~t === t && ~~i === i) {
                                if (0 === t || 0 === i) return t < i ? -1 : 1;
                                if (t < 0 || i < 0) {
                                    if (i >= 0) return -1;
                                    if (t >= 0) return 1;
                                    t = -t, i = -i
                                }
                                var r = n(t),
                                    o = n(i),
                                    g = 0;
                                return r < o ? (t *= e[o - r - 1], i /= 10, g = -1) : r > o && (i *= e[r - o - 1], t /= 10, g = 1), t === i ? g : t < i ? -1 : 1
                            }
                            var s = String(t),
                                A = String(i);
                            return s === A ? 0 : s < A ? -1 : 1
                        }

                        function r(t, e, n, i) {
                            var r = e + 1;
                            if (r === n) return 1;
                            if (i(t[r++], t[e]) < 0) {
                                for (; r < n && i(t[r], t[r - 1]) < 0;) r++;
                                ! function(t, e, n) {
                                    for (n--; e < n;) {
                                        var i = t[e];
                                        t[e++] = t[n], t[n--] = i
                                    }
                                }(t, e, r)
                            } else
                                for (; r < n && i(t[r], t[r - 1]) >= 0;) r++;
                            return r - e
                        }

                        function o(t, e, n, i, r) {
                            for (i === e && i++; i < n; i++) {
                                for (var o = t[i], g = e, s = i; g < s;) {
                                    var A = g + s >>> 1;
                                    r(o, t[A]) < 0 ? s = A : g = A + 1
                                }
                                var a = i - g;
                                switch (a) {
                                    case 3:
                                        t[g + 3] = t[g + 2];
                                    case 2:
                                        t[g + 2] = t[g + 1];
                                    case 1:
                                        t[g + 1] = t[g];
                                        break;
                                    default:
                                        for (; a > 0;) t[g + a] = t[g + a - 1], a--
                                }
                                t[g] = o
                            }
                        }

                        function g(t, e, n, i, r, o) {
                            var g = 0,
                                s = 0,
                                A = 1;
                            if (o(t, e[n + r]) > 0) {
                                for (s = i - r; A < s && o(t, e[n + r + A]) > 0;) g = A, (A = 1 + (A << 1)) <= 0 && (A = s);
                                A > s && (A = s), g += r, A += r
                            } else {
                                for (s = r + 1; A < s && o(t, e[n + r - A]) <= 0;) g = A, (A = 1 + (A << 1)) <= 0 && (A = s);
                                A > s && (A = s);
                                var a = g;
                                g = r - A, A = r - a
                            }
                            for (g++; g < A;) {
                                var C = g + (A - g >>> 1);
                                o(t, e[n + C]) > 0 ? g = C + 1 : A = C
                            }
                            return A
                        }

                        function s(t, e, n, i, r, o) {
                            var g = 0,
                                s = 0,
                                A = 1;
                            if (o(t, e[n + r]) < 0) {
                                for (s = r + 1; A < s && o(t, e[n + r - A]) < 0;) g = A, (A = 1 + (A << 1)) <= 0 && (A = s);
                                A > s && (A = s);
                                var a = g;
                                g = r - A, A = r - a
                            } else {
                                for (s = i - r; A < s && o(t, e[n + r + A]) >= 0;) g = A, (A = 1 + (A << 1)) <= 0 && (A = s);
                                A > s && (A = s), g += r, A += r
                            }
                            for (g++; g < A;) {
                                var C = g + (A - g >>> 1);
                                o(t, e[n + C]) < 0 ? A = C : g = C + 1
                            }
                            return A
                        }
                        var A = function() {
                            function t(e, n) {! function(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") }(this, t), this.array = null, this.compare = null, this.minGallop = 7, this.length = 0, this.tmpStorageLength = 256, this.stackLength = 0, this.runStart = null, this.runLength = null, this.stackSize = 0, this.array = e, this.compare = n, this.length = e.length, this.length < 512 && (this.tmpStorageLength = this.length >>> 1), this.tmp = new Array(this.tmpStorageLength), this.stackLength = this.length < 120 ? 5 : this.length < 1542 ? 10 : this.length < 119151 ? 19 : 40, this.runStart = new Array(this.stackLength), this.runLength = new Array(this.stackLength) }
                            return t.prototype.pushRun = function(t, e) { this.runStart[this.stackSize] = t, this.runLength[this.stackSize] = e, this.stackSize += 1 }, t.prototype.mergeRuns = function() {
                                for (; this.stackSize > 1;) {
                                    var t = this.stackSize - 2;
                                    if (t >= 1 && this.runLength[t - 1] <= this.runLength[t] + this.runLength[t + 1] || t >= 2 && this.runLength[t - 2] <= this.runLength[t] + this.runLength[t - 1]) this.runLength[t - 1] < this.runLength[t + 1] && t--;
                                    else if (this.runLength[t] > this.runLength[t + 1]) break;
                                    this.mergeAt(t)
                                }
                            }, t.prototype.forceMergeRuns = function() {
                                for (; this.stackSize > 1;) {
                                    var t = this.stackSize - 2;
                                    t > 0 && this.runLength[t - 1] < this.runLength[t + 1] && t--, this.mergeAt(t)
                                }
                            }, t.prototype.mergeAt = function(t) {
                                var e = this.compare,
                                    n = this.array,
                                    i = this.runStart[t],
                                    r = this.runLength[t],
                                    o = this.runStart[t + 1],
                                    A = this.runLength[t + 1];
                                this.runLength[t] = r + A, t === this.stackSize - 3 && (this.runStart[t + 1] = this.runStart[t + 2], this.runLength[t + 1] = this.runLength[t + 2]), this.stackSize--;
                                var a = s(n[o], n, i, r, 0, e);
                                i += a, 0 != (r -= a) && 0 !== (A = g(n[i + r - 1], n, o, A, A - 1, e)) && (r <= A ? this.mergeLow(i, r, o, A) : this.mergeHigh(i, r, o, A))
                            }, t.prototype.mergeLow = function(t, e, n, i) {
                                var r = this.compare,
                                    o = this.array,
                                    A = this.tmp,
                                    a = 0;
                                for (a = 0; a < e; a++) A[a] = o[t + a];
                                var C = 0,
                                    I = n,
                                    u = t;
                                if (o[u++] = o[I++], 0 != --i)
                                    if (1 !== e) {
                                        for (var c = this.minGallop;;) {
                                            var l = 0,
                                                h = 0,
                                                d = !1;
                                            do { if (r(o[I], A[C]) < 0) { if (o[u++] = o[I++], h++, l = 0, 0 == --i) { d = !0; break } } else if (o[u++] = A[C++], l++, h = 0, 1 == --e) { d = !0; break } } while ((l | h) < c);
                                            if (d) break;
                                            do {
                                                if (0 !== (l = s(o[I], A, C, e, 0, r))) { for (a = 0; a < l; a++) o[u + a] = A[C + a]; if (u += l, C += l, (e -= l) <= 1) { d = !0; break } }
                                                if (o[u++] = o[I++], 0 == --i) { d = !0; break }
                                                if (0 !== (h = g(A[C], o, I, i, 0, r))) { for (a = 0; a < h; a++) o[u + a] = o[I + a]; if (u += h, I += h, 0 == (i -= h)) { d = !0; break } }
                                                if (o[u++] = A[C++], 1 == --e) { d = !0; break }
                                                c--
                                            } while (l >= 7 || h >= 7);
                                            if (d) break;
                                            c < 0 && (c = 0), c += 2
                                        }
                                        if (this.minGallop = c, c < 1 && (this.minGallop = 1), 1 === e) {
                                            for (a = 0; a < i; a++) o[u + a] = o[I + a];
                                            o[u + i] = A[C]
                                        } else { if (0 === e) throw new Error("mergeLow preconditions were not respected"); for (a = 0; a < e; a++) o[u + a] = A[C + a] }
                                    } else {
                                        for (a = 0; a < i; a++) o[u + a] = o[I + a];
                                        o[u + i] = A[C]
                                    }
                                else
                                    for (a = 0; a < e; a++) o[u + a] = A[C + a]
                            }, t.prototype.mergeHigh = function(t, e, n, i) {
                                var r = this.compare,
                                    o = this.array,
                                    A = this.tmp,
                                    a = 0;
                                for (a = 0; a < i; a++) A[a] = o[n + a];
                                var C = t + e - 1,
                                    I = i - 1,
                                    u = n + i - 1,
                                    c = 0,
                                    l = 0;
                                if (o[u--] = o[C--], 0 != --e)
                                    if (1 !== i) {
                                        for (var h = this.minGallop;;) {
                                            var d = 0,
                                                f = 0,
                                                p = !1;
                                            do { if (r(A[I], o[C]) < 0) { if (o[u--] = o[C--], d++, f = 0, 0 == --e) { p = !0; break } } else if (o[u--] = A[I--], f++, d = 0, 1 == --i) { p = !0; break } } while ((d | f) < h);
                                            if (p) break;
                                            do {
                                                if (0 != (d = e - s(A[I], o, t, e, e - 1, r))) { for (e -= d, l = 1 + (u -= d), c = 1 + (C -= d), a = d - 1; a >= 0; a--) o[l + a] = o[c + a]; if (0 === e) { p = !0; break } }
                                                if (o[u--] = A[I--], 1 == --i) { p = !0; break }
                                                if (0 != (f = i - g(o[C], A, 0, i, i - 1, r))) { for (i -= f, l = 1 + (u -= f), c = 1 + (I -= f), a = 0; a < f; a++) o[l + a] = A[c + a]; if (i <= 1) { p = !0; break } }
                                                if (o[u--] = o[C--], 0 == --e) { p = !0; break }
                                                h--
                                            } while (d >= 7 || f >= 7);
                                            if (p) break;
                                            h < 0 && (h = 0), h += 2
                                        }
                                        if (this.minGallop = h, h < 1 && (this.minGallop = 1), 1 === i) {
                                            for (l = 1 + (u -= e), c = 1 + (C -= e), a = e - 1; a >= 0; a--) o[l + a] = o[c + a];
                                            o[u] = A[I]
                                        } else { if (0 === i) throw new Error("mergeHigh preconditions were not respected"); for (c = u - (i - 1), a = 0; a < i; a++) o[c + a] = A[a] }
                                    } else {
                                        for (l = 1 + (u -= e), c = 1 + (C -= e), a = e - 1; a >= 0; a--) o[l + a] = o[c + a];
                                        o[u] = A[I]
                                    }
                                else
                                    for (c = u - (i - 1), a = 0; a < i; a++) o[c + a] = A[a]
                            }, t
                        }()
                    }(e)
                }));

            function lc(t) {
                var e = function() { if ("undefined" == typeof Reflect || !na) return !1; if (na.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(na(Date, [], (function() {}))), !0 } catch (t) { return !1 } }();
                return function() {
                    var n, i = Ea(t);
                    if (e) {
                        var r = Ea(this).constructor;
                        n = na(i, arguments, r)
                    } else n = i.apply(this, arguments);
                    return xa(this, n)
                }
            }
            var hc = function() {
                    function t() { DA(this, t) }
                    return RA(t, [{ key: "abstract", value: function() { throw new Error("Can't instantiate abstract class!") } }, { key: "fake_use", value: function() {} }, { key: "curveType", value: function() { return this.abstract() } }, { key: "getPosition", value: function(t) { return this.fake_use(t), this.abstract() } }, {
                        key: "setPosition",
                        value: function(t, e) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0;
                            this.fake_use(t, e, n), this.abstract()
                        }
                    }, { key: "getTreeSize", value: function(t) { return this.fake_use(t), this.abstract() } }, { key: "sort", value: function(t) { this.fake_use(t), this.abstract() } }, { key: "fix", value: function(t, e) { this.fake_use(t, e), this.abstract() } }, { key: "shift", value: function(t, e) { this.fake_use(t, e), this.abstract() } }]), t
                }(),
                dc = function(t) {
                    ka(n, t);
                    var e = lc(n);

                    function n(t) { var i; return DA(this, n), (i = e.call(this)).layout = t, i }
                    return RA(n, [{ key: "curveType", value: function() { return "horizontal" } }, { key: "getPosition", value: function(t) { return t.x } }, {
                        key: "setPosition",
                        value: function(t, e) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0;
                            void 0 !== n && this.layout.hierarchical.addToOrdering(t, n), t.x = e
                        }
                    }, { key: "getTreeSize", value: function(t) { var e = this.layout.hierarchical.getTreeSize(this.layout.body.nodes, t); return { min: e.min_x, max: e.max_x } } }, { key: "sort", value: function(t) { cc.sort(t, (function(t, e) { return t.x - e.x })) } }, { key: "fix", value: function(t, e) { t.y = this.layout.options.hierarchical.levelSeparation * e, t.options.fixed.y = !0 } }, { key: "shift", value: function(t, e) { this.layout.body.nodes[t].x += e } }]), n
                }(hc),
                fc = function(t) {
                    ka(n, t);
                    var e = lc(n);

                    function n(t) { var i; return DA(this, n), (i = e.call(this)).layout = t, i }
                    return RA(n, [{ key: "curveType", value: function() { return "vertical" } }, { key: "getPosition", value: function(t) { return t.y } }, {
                        key: "setPosition",
                        value: function(t, e) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0;
                            void 0 !== n && this.layout.hierarchical.addToOrdering(t, n), t.y = e
                        }
                    }, { key: "getTreeSize", value: function(t) { var e = this.layout.hierarchical.getTreeSize(this.layout.body.nodes, t); return { min: e.min_y, max: e.max_y } } }, { key: "sort", value: function(t) { cc.sort(t, (function(t, e) { return t.y - e.y })) } }, { key: "fix", value: function(t, e) { t.x = this.layout.options.hierarchical.levelSeparation * e, t.options.fixed.x = !0 } }, { key: "shift", value: function(t, e) { this.layout.body.nodes[t].y += e } }]), n
                }(hc),
                pc = We.every,
                vc = xi("every"),
                yc = Si("every");
            W({ target: "Array", proto: !0, forced: !vc || !yc }, { every: function(t) { return pc(this, t, arguments.length > 1 ? arguments[1] : void 0) } });
            var bc = q("Array").every,
                mc = Array.prototype,
                wc = function(t) { var e = t.every; return t === mc || t instanceof Array && e === mc.every ? bc : e };

            function _c(t, e) {
                var n;
                if (void 0 === co || null == ei(t)) {
                    if (to(t) || (n = function(t, e) { var n; if (!t) return; if ("string" == typeof t) return kc(t, e); var i = oo(n = Object.prototype.toString.call(t)).call(n, 8, -1); "Object" === i && t.constructor && (i = t.constructor.name); if ("Map" === i || "Set" === i) return ui(t); if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return kc(t, e) }(t)) || e && t && "number" == typeof t.length) {
                        n && (t = n);
                        var i = 0,
                            r = function() {};
                        return { s: r, n: function() { return i >= t.length ? { done: !0 } : { done: !1, value: t[i++] } }, e: function(t) { throw t }, f: r }
                    }
                    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
                }
                var o, g = !0,
                    s = !1;
                return { s: function() { n = ti(t) }, n: function() { var t = n.next(); return g = t.done, t }, e: function(t) { s = !0, o = t }, f: function() { try { g || null == n.return || n.return() } finally { if (s) throw o } } }
            }

            function kc(t, e) {
                (null == e || e > t.length) && (e = t.length);
                for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];
                return i
            }

            function xc(t, e) {
                var n = new $a;
                return zi(t).call(t, (function(t) {
                    var e;
                    zi(e = t.edges).call(e, (function(t) { t.connected && n.add(t) }))
                })), zi(n).call(n, (function(t) {
                    var n = t.from.id,
                        i = t.to.id;
                    null == e[n] && (e[n] = 0), (null == e[i] || e[n] >= e[i]) && (e[i] = e[n] + 1)
                })), e
            }

            function Oc(t, e, n, i, r) {
                var o, g = i.size,
                    s = n + "Id",
                    A = "to" === n ? 1 : -1,
                    a = _c(i);
                try {
                    var C = function() {
                        var a = Gr(o.value, 2),
                            C = a[0],
                            I = a[1];
                        if (!i.has(C) || !t(I)) return "continue";
                        r[C] = 0;
                        for (var u = [I], c = 0, l = void 0, h = function() {
                                var t, o;
                                if (!i.has(C)) return "continue";
                                var a = r[l.id] + A;
                                if (zi(t = sr(o = l.edges).call(o, (function(t) { return t.connected && t.to !== t.from && t[n] !== l && i.has(t.toId) && i.has(t.fromId) }))).call(t, (function(t) {
                                        var i = t[s],
                                            o = r[i];
                                        (null == o || e(a, o)) && (r[i] = a, u.push(t[n]))
                                    })), c > g) return { v: { v: xc(i, r) } };
                                ++c
                            }; l = u.pop();) {
                            var d = h();
                            switch (d) {
                                case "continue":
                                    continue;
                                default:
                                    if ("object" === io(d)) return d.v
                            }
                        }
                    };
                    for (a.s(); !(o = a.n()).done;) {
                        var I = C();
                        switch (I) {
                            case "continue":
                                continue;
                            default:
                                if ("object" === io(I)) return I.v
                        }
                    }
                } catch (t) { a.e(t) } finally { a.f() }
                return r
            }
            var Ec = function() {
                    function t() { DA(this, t), this.childrenReference = {}, this.parentReference = {}, this.trees = {}, this.distributionOrdering = {}, this.levels = {}, this.distributionIndex = {}, this.isTree = !1, this.treeIndex = -1 }
                    return RA(t, [{ key: "addRelation", value: function(t, e) { void 0 === this.childrenReference[t] && (this.childrenReference[t] = []), this.childrenReference[t].push(e), void 0 === this.parentReference[e] && (this.parentReference[e] = []), this.parentReference[e].push(t) } }, {
                        key: "checkIfTree",
                        value: function() {
                            for (var t in this.parentReference)
                                if (this.parentReference[t].length > 1) return void(this.isTree = !1);
                            this.isTree = !0
                        }
                    }, { key: "numTrees", value: function() { return this.treeIndex + 1 } }, { key: "setTreeIndex", value: function(t, e) { void 0 !== e && void 0 === this.trees[t.id] && (this.trees[t.id] = e, this.treeIndex = Math.max(e, this.treeIndex)) } }, { key: "ensureLevel", value: function(t) { void 0 === this.levels[t] && (this.levels[t] = 0) } }, {
                        key: "getMaxLevel",
                        value: function(t) {
                            var e = this,
                                n = {};
                            return function t(i) {
                                if (void 0 !== n[i]) return n[i];
                                var r = e.levels[i];
                                if (e.childrenReference[i]) {
                                    var o = e.childrenReference[i];
                                    if (o.length > 0)
                                        for (var g = 0; g < o.length; g++) r = Math.max(r, t(o[g]))
                                }
                                return n[i] = r, r
                            }(t)
                        }
                    }, { key: "levelDownstream", value: function(t, e) { void 0 === this.levels[e.id] && (void 0 === this.levels[t.id] && (this.levels[t.id] = 0), this.levels[e.id] = this.levels[t.id] + 1) } }, { key: "setMinLevelToZero", value: function(t) { var e = 1e9; for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && void 0 !== this.levels[n] && (e = Math.min(this.levels[n], e)); for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && void 0 !== this.levels[i] && (this.levels[i] -= e) } }, {
                        key: "getTreeSize",
                        value: function(t, e) {
                            var n = 1e9,
                                i = -1e9,
                                r = 1e9,
                                o = -1e9;
                            for (var g in this.trees)
                                if (Object.prototype.hasOwnProperty.call(this.trees, g) && this.trees[g] === e) {
                                    var s = t[g];
                                    n = Math.min(s.x, n), i = Math.max(s.x, i), r = Math.min(s.y, r), o = Math.max(s.y, o)
                                }
                            return { min_x: n, max_x: i, min_y: r, max_y: o }
                        }
                    }, {
                        key: "hasSameParent",
                        value: function(t, e) {
                            var n = this.parentReference[t.id],
                                i = this.parentReference[e.id];
                            if (void 0 === n || void 0 === i) return !1;
                            for (var r = 0; r < n.length; r++)
                                for (var o = 0; o < i.length; o++)
                                    if (n[r] == i[o]) return !0;
                            return !1
                        }
                    }, { key: "inSameSubNetwork", value: function(t, e) { return this.trees[t.id] === this.trees[e.id] } }, { key: "getLevels", value: function() { return Hr(this.distributionOrdering) } }, {
                        key: "addToOrdering",
                        value: function(t, e) {
                            void 0 === this.distributionOrdering[e] && (this.distributionOrdering[e] = []);
                            var n = !1,
                                i = this.distributionOrdering[e];
                            for (var r in i)
                                if (i[r] === t) { n = !0; break }
                            n || (this.distributionOrdering[e].push(t), this.distributionIndex[t.id] = this.distributionOrdering[e].length - 1)
                        }
                    }]), t
                }(),
                Tc = function() {
                    function t(e) { DA(this, t), this.body = e, this._resetRNG(Math.random() + ":" + Ur()), this.setPhysics = !1, this.options = {}, this.optionsBackup = { physics: {} }, this.defaultOptions = { randomSeed: void 0, improvedLayout: !0, clusterThreshold: 150, hierarchical: { enabled: !1, levelSeparation: 150, nodeSpacing: 100, treeSpacing: 200, blockShifting: !0, edgeMinimization: !0, parentCentralization: !0, direction: "UD", sortMethod: "hubsize" } }, bt(this.options, this.defaultOptions), this.bindEventListeners() }
                    return RA(t, [{
                        key: "bindEventListeners",
                        value: function() {
                            var t = this;
                            this.body.emitter.on("_dataChanged", (function() { t.setupHierarchicalLayout() })), this.body.emitter.on("_dataLoaded", (function() { t.layoutNetwork() })), this.body.emitter.on("_resetHierarchicalLayout", (function() { t.setupHierarchicalLayout() })), this.body.emitter.on("_adjustEdgesForHierarchicalLayout", (function() {
                                if (!0 === t.options.hierarchical.enabled) {
                                    var e = t.direction.curveType();
                                    t.body.emitter.emit("_forceDisableDynamicCurves", e, !1)
                                }
                            }))
                        }
                    }, {
                        key: "setOptions",
                        value: function(t, e) {
                            if (void 0 !== t) {
                                var n = this.options.hierarchical,
                                    i = n.enabled;
                                if (Mo(["randomSeed", "improvedLayout", "clusterThreshold"], this.options, t), tg(this.options, t, "hierarchical"), void 0 !== t.randomSeed && this._resetRNG(t.randomSeed), !0 === n.enabled) return !0 === i && this.body.emitter.emit("refresh", !0), "RL" === n.direction || "DU" === n.direction ? n.levelSeparation > 0 && (n.levelSeparation *= -1) : n.levelSeparation < 0 && (n.levelSeparation *= -1), this.setDirectionStrategy(), this.body.emitter.emit("_resetHierarchicalLayout"), this.adaptAllOptionsForHierarchicalLayout(e);
                                if (!0 === i) return this.body.emitter.emit("refresh"), Fo(e, this.optionsBackup)
                            }
                            return e
                        }
                    }, { key: "_resetRNG", value: function(t) { this.initialRandomSeed = t, this._rng = mo(this.initialRandomSeed) } }, {
                        key: "adaptAllOptionsForHierarchicalLayout",
                        value: function(t) {
                            if (!0 === this.options.hierarchical.enabled) {
                                var e = this.optionsBackup.physics;
                                void 0 === t.physics || !0 === t.physics ? (t.physics = { enabled: void 0 === e.enabled || e.enabled, solver: "hierarchicalRepulsion" }, e.enabled = void 0 === e.enabled || e.enabled, e.solver = e.solver || "barnesHut") : "object" === io(t.physics) ? (e.enabled = void 0 === t.physics.enabled || t.physics.enabled, e.solver = t.physics.solver || "barnesHut", t.physics.solver = "hierarchicalRepulsion") : !1 !== t.physics && (e.solver = "barnesHut", t.physics = { solver: "hierarchicalRepulsion" });
                                var n = this.direction.curveType();
                                if (void 0 === t.edges) this.optionsBackup.edges = { smooth: { enabled: !0, type: "dynamic" } }, t.edges = { smooth: !1 };
                                else if (void 0 === t.edges.smooth) this.optionsBackup.edges = { smooth: { enabled: !0, type: "dynamic" } }, t.edges.smooth = !1;
                                else if ("boolean" == typeof t.edges.smooth) this.optionsBackup.edges = { smooth: t.edges.smooth }, t.edges.smooth = { enabled: t.edges.smooth, type: n };
                                else {
                                    var i = t.edges.smooth;
                                    void 0 !== i.type && "dynamic" !== i.type && (n = i.type), this.optionsBackup.edges = { smooth: { enabled: void 0 === i.enabled || i.enabled, type: void 0 === i.type ? "dynamic" : i.type, roundness: void 0 === i.roundness ? .5 : i.roundness, forceDirection: void 0 !== i.forceDirection && i.forceDirection } }, t.edges.smooth = { enabled: void 0 === i.enabled || i.enabled, type: n, roundness: void 0 === i.roundness ? .5 : i.roundness, forceDirection: void 0 !== i.forceDirection && i.forceDirection }
                                }
                                this.body.emitter.emit("_forceDisableDynamicCurves", n)
                            }
                            return t
                        }
                    }, {
                        key: "positionInitially",
                        value: function(t) {
                            if (!0 !== this.options.hierarchical.enabled) {
                                this._resetRNG(this.initialRandomSeed);
                                for (var e = t.length + 50, n = 0; n < t.length; n++) {
                                    var i = t[n],
                                        r = 2 * Math.PI * this._rng();
                                    void 0 === i.x && (i.x = e * Math.cos(r)), void 0 === i.y && (i.y = e * Math.sin(r))
                                }
                            }
                        }
                    }, {
                        key: "layoutNetwork",
                        value: function() {
                            if (!0 !== this.options.hierarchical.enabled && !0 === this.options.improvedLayout) {
                                for (var t = this.body.nodeIndices, e = 0, n = 0; n < t.length; n++) {!0 === this.body.nodes[t[n]].predefinedPosition && (e += 1) }
                                if (e < .5 * t.length) {
                                    var i = 0,
                                        r = this.options.clusterThreshold,
                                        o = { clusterNodeProperties: { shape: "ellipse", label: "", group: "", font: { multi: !1 } }, clusterEdgeProperties: { label: "", font: { multi: !1 }, smooth: { enabled: !1 } } };
                                    if (t.length > r) {
                                        for (var g = t.length; t.length > r && i <= 10;) { i += 1; var s = t.length; if (i % 3 == 0 ? this.body.modules.clustering.clusterBridges(o) : this.body.modules.clustering.clusterOutliers(o), s == t.length && i % 3 != 0) return this._declusterAll(), this.body.emitter.emit("_layoutFailed"), void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.") }
                                        this.body.modules.kamadaKawai.setOptions({ springLength: Math.max(150, 2 * g) })
                                    }
                                    i > 10 && console.info("The clustering didn't succeed within the amount of interations allowed, progressing with partial result."), this.body.modules.kamadaKawai.solve(t, this.body.edgeIndices, !0), this._shiftToCenter();
                                    for (var A = 0; A < t.length; A++) { var a = this.body.nodes[t[A]];!1 === a.predefinedPosition && (a.x += 70 * (.5 - this._rng()), a.y += 70 * (.5 - this._rng())) }
                                    this._declusterAll(), this.body.emitter.emit("_repositionBezierNodes")
                                }
                            }
                        }
                    }, {
                        key: "_shiftToCenter",
                        value: function() {
                            for (var t = $u.getRangeCore(this.body.nodes, this.body.nodeIndices), e = $u.findCenter(t), n = 0; n < this.body.nodeIndices.length; n++) {
                                var i = this.body.nodes[this.body.nodeIndices[n]];
                                i.x -= e.x, i.y -= e.y
                            }
                        }
                    }, { key: "_declusterAll", value: function() { for (var t = !0; !0 === t;) { t = !1; for (var e = 0; e < this.body.nodeIndices.length; e++) !0 === this.body.nodes[this.body.nodeIndices[e]].isCluster && (t = !0, this.body.modules.clustering.openCluster(this.body.nodeIndices[e], {}, !1));!0 === t && this.body.emitter.emit("_dataChanged") } } }, { key: "getSeed", value: function() { return this.initialRandomSeed } }, {
                        key: "setupHierarchicalLayout",
                        value: function() {
                            if (!0 === this.options.hierarchical.enabled && this.body.nodeIndices.length > 0) {
                                var t, e, n = !1,
                                    i = !1;
                                for (e in this.lastNodeOnLevel = {}, this.hierarchical = new Ec, this.body.nodes) Object.prototype.hasOwnProperty.call(this.body.nodes, e) && (void 0 !== (t = this.body.nodes[e]).options.level ? (n = !0, this.hierarchical.levels[e] = t.options.level) : i = !0);
                                if (!0 === i && !0 === n) throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");
                                if (!0 === i) { var r = this.options.hierarchical.sortMethod; "hubsize" === r ? this._determineLevelsByHubsize() : "directed" === r ? this._determineLevelsDirected() : "custom" === r && this._determineLevelsCustomCallback() }
                                for (var o in this.body.nodes) Object.prototype.hasOwnProperty.call(this.body.nodes, o) && this.hierarchical.ensureLevel(o);
                                var g = this._getDistribution();
                                this._generateMap(), this._placeNodesByHierarchy(g), this._condenseHierarchy(), this._shiftToCenter()
                            }
                        }
                    }, {
                        key: "_condenseHierarchy",
                        value: function() {
                            var t = this,
                                e = !1,
                                n = {},
                                i = function(e, n) { var i = t.hierarchical.trees; for (var r in i) Object.prototype.hasOwnProperty.call(i, r) && i[r] === e && t.direction.shift(r, n) },
                                r = function() { for (var e = [], n = 0; n < t.hierarchical.numTrees(); n++) e.push(t.direction.getTreeSize(n)); return e },
                                o = function e(n, i) {
                                    if (!i[n.id] && (i[n.id] = !0, t.hierarchical.childrenReference[n.id])) {
                                        var r = t.hierarchical.childrenReference[n.id];
                                        if (r.length > 0)
                                            for (var o = 0; o < r.length; o++) e(t.body.nodes[r[o]], i)
                                    }
                                },
                                g = function(e) {
                                    var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1e9,
                                        i = 1e9,
                                        r = 1e9,
                                        o = 1e9,
                                        g = -1e9;
                                    for (var s in e)
                                        if (Object.prototype.hasOwnProperty.call(e, s)) {
                                            var A = t.body.nodes[s],
                                                a = t.hierarchical.levels[A.id],
                                                C = t.direction.getPosition(A),
                                                I = t._getSpaceAroundNode(A, e),
                                                u = Gr(I, 2),
                                                c = u[0],
                                                l = u[1];
                                            i = Math.min(c, i), r = Math.min(l, r), a <= n && (o = Math.min(C, o), g = Math.max(C, g))
                                        }
                                    return [o, g, i, r]
                                },
                                s = function(e, n) {
                                    var i = t.hierarchical.getMaxLevel(e.id),
                                        r = t.hierarchical.getMaxLevel(n.id);
                                    return Math.min(i, r)
                                },
                                A = function(e, n, i) {
                                    for (var r = t.hierarchical, o = 0; o < n.length; o++) {
                                        var g = n[o],
                                            s = r.distributionOrdering[g];
                                        if (s.length > 1)
                                            for (var A = 0; A < s.length - 1; A++) {
                                                var a = s[A],
                                                    C = s[A + 1];
                                                r.hasSameParent(a, C) && r.inSameSubNetwork(a, C) && e(a, C, i)
                                            }
                                    }
                                },
                                a = function(n, i) {
                                    var r = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
                                        A = t.direction.getPosition(n),
                                        a = t.direction.getPosition(i),
                                        C = Math.abs(a - A),
                                        I = t.options.hierarchical.nodeSpacing;
                                    if (C > I) {
                                        var u = {},
                                            c = {};
                                        o(n, u), o(i, c);
                                        var l = s(n, i),
                                            h = g(u, l),
                                            d = g(c, l),
                                            f = h[1],
                                            p = d[0],
                                            v = d[2],
                                            y = Math.abs(f - p);
                                        if (y > I) {
                                            var b = f - p + I;
                                            b < -v + I && (b = -v + I), b < 0 && (t._shiftBlock(i.id, b), e = !0, !0 === r && t._centerParent(i))
                                        }
                                    }
                                },
                                C = function(i, r) {
                                    for (var s = r.id, A = r.edges, a = t.hierarchical.levels[r.id], C = t.options.hierarchical.levelSeparation * t.options.hierarchical.levelSeparation, I = {}, u = [], c = 0; c < A.length; c++) {
                                        var l = A[c];
                                        if (l.toId != l.fromId) {
                                            var h = l.toId == s ? l.from : l.to;
                                            I[A[c].id] = h, t.hierarchical.levels[h.id] < a && u.push(l)
                                        }
                                    }
                                    var d = function(e, n) {
                                            for (var i = 0, r = 0; r < n.length; r++)
                                                if (void 0 !== I[n[r].id]) {
                                                    var o = t.direction.getPosition(I[n[r].id]) - e;
                                                    i += o / Math.sqrt(o * o + C)
                                                }
                                            return i
                                        },
                                        f = function(e, n) {
                                            for (var i = 0, r = 0; r < n.length; r++)
                                                if (void 0 !== I[n[r].id]) {
                                                    var o = t.direction.getPosition(I[n[r].id]) - e;
                                                    i -= C * Math.pow(o * o + C, -1.5)
                                                }
                                            return i
                                        },
                                        p = function(e, n) {
                                            for (var i = t.direction.getPosition(r), o = {}, g = 0; g < e; g++) {
                                                var s = d(i, n),
                                                    A = f(i, n);
                                                if (void 0 !== o[i -= Math.max(-40, Math.min(40, Math.round(s / A)))]) break;
                                                o[i] = g
                                            }
                                            return i
                                        },
                                        v = p(i, u);
                                    ! function(i) {
                                        var s = t.direction.getPosition(r);
                                        if (void 0 === n[r.id]) {
                                            var A = {};
                                            o(r, A), n[r.id] = A
                                        }
                                        var a = g(n[r.id]),
                                            C = a[2],
                                            I = a[3],
                                            u = i - s,
                                            c = 0;
                                        u > 0 ? c = Math.min(u, I - t.options.hierarchical.nodeSpacing) : u < 0 && (c = -Math.min(-u, C - t.options.hierarchical.nodeSpacing)), 0 != c && (t._shiftBlock(r.id, c), e = !0)
                                    }(v),
                                    function(n) {
                                        var i = t.direction.getPosition(r),
                                            o = t._getSpaceAroundNode(r),
                                            g = Gr(o, 2),
                                            s = g[0],
                                            A = g[1],
                                            a = n - i,
                                            C = i;
                                        a > 0 ? C = Math.min(i + (A - t.options.hierarchical.nodeSpacing), n) : a < 0 && (C = Math.max(i - (s - t.options.hierarchical.nodeSpacing), n)), C !== i && (t.direction.setPosition(r, C), e = !0)
                                    }(v = p(i, A))
                                };
                            !0 === this.options.hierarchical.blockShifting && (function(n) {
                                    var i = t.hierarchical.getLevels();
                                    i = Ju(i).call(i);
                                    for (var r = 0; r < n && (e = !1, A(a, i, !0), !0 === e); r++);
                                }(5), function() { for (var e in t.body.nodes) Object.prototype.hasOwnProperty.call(t.body.nodes, e) && t._centerParent(t.body.nodes[e]) }()), !0 === this.options.hierarchical.edgeMinimization && function(n) {
                                    var i = t.hierarchical.getLevels();
                                    i = Ju(i).call(i);
                                    for (var r = 0; r < n; r++) {
                                        e = !1;
                                        for (var o = 0; o < i.length; o++)
                                            for (var g = i[o], s = t.hierarchical.distributionOrdering[g], A = 0; A < s.length; A++) C(1e3, s[A]);
                                        if (!0 !== e) break
                                    }
                                }(20), !0 === this.options.hierarchical.parentCentralization && function() {
                                    var e = t.hierarchical.getLevels();
                                    e = Ju(e).call(e);
                                    for (var n = 0; n < e.length; n++)
                                        for (var i = e[n], r = t.hierarchical.distributionOrdering[i], o = 0; o < r.length; o++) t._centerParent(r[o])
                                }(),
                                function() { for (var e = r(), n = 0, o = 0; o < e.length - 1; o++) { n += e[o].max - e[o + 1].min + t.options.hierarchical.treeSpacing, i(o + 1, n) } }()
                        }
                    }, {
                        key: "_getSpaceAroundNode",
                        value: function(t, e) {
                            var n = !0;
                            void 0 === e && (n = !1);
                            var i = this.hierarchical.levels[t.id];
                            if (void 0 !== i) {
                                var r = this.hierarchical.distributionIndex[t.id],
                                    o = this.direction.getPosition(t),
                                    g = this.hierarchical.distributionOrdering[i],
                                    s = 1e9,
                                    A = 1e9;
                                if (0 !== r) { var a = g[r - 1]; if (!0 === n && void 0 === e[a.id] || !1 === n) s = o - this.direction.getPosition(a) }
                                if (r != g.length - 1) {
                                    var C = g[r + 1];
                                    if (!0 === n && void 0 === e[C.id] || !1 === n) {
                                        var I = this.direction.getPosition(C);
                                        A = Math.min(A, I - o)
                                    }
                                }
                                return [s, A]
                            }
                            return [0, 0]
                        }
                    }, {
                        key: "_centerParent",
                        value: function(t) {
                            if (this.hierarchical.parentReference[t.id])
                                for (var e = this.hierarchical.parentReference[t.id], n = 0; n < e.length; n++) {
                                    var i = e[n],
                                        r = this.body.nodes[i],
                                        o = this.hierarchical.childrenReference[i];
                                    if (void 0 !== o) {
                                        var g = this._getCenterPosition(o),
                                            s = this.direction.getPosition(r),
                                            A = this._getSpaceAroundNode(r),
                                            a = Gr(A, 2),
                                            C = a[0],
                                            I = a[1],
                                            u = s - g;
                                        (u < 0 && Math.abs(u) < I - this.options.hierarchical.nodeSpacing || u > 0 && Math.abs(u) < C - this.options.hierarchical.nodeSpacing) && this.direction.setPosition(r, g)
                                    }
                                }
                        }
                    }, {
                        key: "_placeNodesByHierarchy",
                        value: function(t) {
                            for (var e in this.positionedNodes = {}, t)
                                if (Object.prototype.hasOwnProperty.call(t, e)) {
                                    var n, i = Hr(t[e]);
                                    i = this._indexArrayToNodes(i), ja(n = this.direction).call(n, i);
                                    for (var r = 0, o = 0; o < i.length; o++) {
                                        var g = i[o];
                                        if (void 0 === this.positionedNodes[g.id]) {
                                            var s = this.options.hierarchical.nodeSpacing,
                                                A = s * r;
                                            r > 0 && (A = this.direction.getPosition(i[o - 1]) + s), this.direction.setPosition(g, A, e), this._validatePositionAndContinue(g, e, A), r++
                                        }
                                    }
                                }
                        }
                    }, {
                        key: "_placeBranchNodes",
                        value: function(t, e) {
                            var n, i = this.hierarchical.childrenReference[t];
                            if (void 0 !== i) {
                                for (var r = [], o = 0; o < i.length; o++) r.push(this.body.nodes[i[o]]);
                                ja(n = this.direction).call(n, r);
                                for (var g = 0; g < r.length; g++) {
                                    var s = r[g],
                                        A = this.hierarchical.levels[s.id];
                                    if (!(A > e && void 0 === this.positionedNodes[s.id])) return;
                                    var a = this.options.hierarchical.nodeSpacing,
                                        C = void 0;
                                    C = 0 === g ? this.direction.getPosition(this.body.nodes[t]) : this.direction.getPosition(r[g - 1]) + a, this.direction.setPosition(s, C, A), this._validatePositionAndContinue(s, A, C)
                                }
                                var I = this._getCenterPosition(r);
                                this.direction.setPosition(this.body.nodes[t], I, e)
                            }
                        }
                    }, {
                        key: "_validatePositionAndContinue",
                        value: function(t, e, n) {
                            if (this.hierarchical.isTree) {
                                if (void 0 !== this.lastNodeOnLevel[e]) {
                                    var i = this.direction.getPosition(this.body.nodes[this.lastNodeOnLevel[e]]);
                                    if (n - i < this.options.hierarchical.nodeSpacing) {
                                        var r = i + this.options.hierarchical.nodeSpacing - n,
                                            o = this._findCommonParent(this.lastNodeOnLevel[e], t.id);
                                        this._shiftBlock(o.withChild, r)
                                    }
                                }
                                this.lastNodeOnLevel[e] = t.id, this.positionedNodes[t.id] = !0, this._placeBranchNodes(t.id, e)
                            }
                        }
                    }, { key: "_indexArrayToNodes", value: function(t) { for (var e = [], n = 0; n < t.length; n++) e.push(this.body.nodes[t[n]]); return e } }, {
                        key: "_getDistribution",
                        value: function() {
                            var t, e, n = {};
                            for (t in this.body.nodes)
                                if (Object.prototype.hasOwnProperty.call(this.body.nodes, t)) {
                                    e = this.body.nodes[t];
                                    var i = void 0 === this.hierarchical.levels[t] ? 0 : this.hierarchical.levels[t];
                                    this.direction.fix(e, i), void 0 === n[i] && (n[i] = {}), n[i][t] = e
                                }
                            return n
                        }
                    }, {
                        key: "_getActiveEdges",
                        value: function(t) {
                            var e = this,
                                n = [];
                            return Vo(t.edges, (function(t) { var i; - 1 !== pr(i = e.body.edgeIndices).call(i, t.id) && n.push(t) })), n
                        }
                    }, {
                        key: "_getHubSizes",
                        value: function() {
                            var t = this,
                                e = {};
                            Vo(this.body.nodeIndices, (function(n) {
                                var i = t.body.nodes[n],
                                    r = t._getActiveEdges(i).length;
                                e[r] = !0
                            }));
                            var n = [];
                            return Vo(e, (function(t) { n.push(Number(t)) })), ja(cc).call(cc, n, (function(t, e) { return e - t })), n
                        }
                    }, {
                        key: "_determineLevelsByHubsize",
                        value: function() {
                            for (var t = this, e = function(e, n) { t.hierarchical.levelDownstream(e, n) }, n = this._getHubSizes(), i = function(i) {
                                    var r = n[i];
                                    if (0 === r) return "break";
                                    Vo(t.body.nodeIndices, (function(n) {
                                        var i = t.body.nodes[n];
                                        r === t._getActiveEdges(i).length && t._crawlNetwork(e, n)
                                    }))
                                }, r = 0; r < n.length; ++r) { if ("break" === i(r)) break }
                        }
                    }, {
                        key: "_determineLevelsCustomCallback",
                        value: function() {
                            var t = this;
                            this._crawlNetwork((function(e, n, i) {
                                var r = t.hierarchical.levels[e.id];
                                void 0 === r && (r = t.hierarchical.levels[e.id] = 1e5);
                                var o = ($u.cloneOptions(e, "node"), $u.cloneOptions(n, "node"), void $u.cloneOptions(i, "edge"));
                                t.hierarchical.levels[n.id] = r + o
                            })), this.hierarchical.setMinLevelToZero(this.body.nodes)
                        }
                    }, {
                        key: "_determineLevelsDirected",
                        value: function() {
                            var t, e = this,
                                n = IC(t = this.body.nodeIndices).call(t, (function(t, n) { return t.set(n, e.body.nodes[n]), t }), new tC),
                                i = this.hierarchical.levels;
                            "roots" === this.options.hierarchical.shakeTowards ? this.hierarchical.levels = function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : hi(null); return Oc((function(e) { var n, i; return wc(n = sr(i = e.edges).call(i, (function(e) { return t.has(e.toId) }))).call(n, (function(t) { return t.from === e })) }), (function(t, e) { return e < t }), "to", t, e) }(n, i) : this.hierarchical.levels = function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : hi(null); return Oc((function(e) { var n, i; return wc(n = sr(i = e.edges).call(i, (function(e) { return t.has(e.toId) }))).call(n, (function(t) { return t.to === e })) }), (function(t, e) { return e > t }), "from", t, e) }(n, i), this.hierarchical.setMinLevelToZero(this.body.nodes)
                        }
                    }, {
                        key: "_generateMap",
                        value: function() {
                            var t = this;
                            this._crawlNetwork((function(e, n) { t.hierarchical.levels[n.id] > t.hierarchical.levels[e.id] && t.hierarchical.addRelation(e.id, n.id) })), this.hierarchical.checkIfTree()
                        }
                    }, {
                        key: "_crawlNetwork",
                        value: function() {
                            var t = this,
                                e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : function() {},
                                n = arguments.length > 1 ? arguments[1] : void 0,
                                i = {},
                                r = function n(r, o) {
                                    if (void 0 === i[r.id]) {
                                        var g;
                                        t.hierarchical.setTreeIndex(r, o), i[r.id] = !0;
                                        for (var s = t._getActiveEdges(r), A = 0; A < s.length; A++) { var a = s[A];!0 === a.connected && (g = a.toId == r.id ? a.from : a.to, r.id != g.id && (e(r, g, a), n(g, o))) }
                                    }
                                };
                            if (void 0 === n)
                                for (var o = 0, g = 0; g < this.body.nodeIndices.length; g++) {
                                    var s = this.body.nodeIndices[g];
                                    if (void 0 === i[s]) {
                                        var A = this.body.nodes[s];
                                        r(A, o), o += 1
                                    }
                                } else {
                                    var a = this.body.nodes[n];
                                    if (void 0 === a) return void console.error("Node not found:", n);
                                    r(a)
                                }
                        }
                    }, {
                        key: "_shiftBlock",
                        value: function(t, e) {
                            var n = this,
                                i = {};
                            ! function t(r) {
                                if (!i[r]) {
                                    i[r] = !0, n.direction.shift(r, e);
                                    var o = n.hierarchical.childrenReference[r];
                                    if (void 0 !== o)
                                        for (var g = 0; g < o.length; g++) t(o[g])
                                }
                            }(t)
                        }
                    }, {
                        key: "_findCommonParent",
                        value: function(t, e) {
                            var n = this,
                                i = {};
                            return function t(e, i) {
                                    var r = n.hierarchical.parentReference[i];
                                    if (void 0 !== r)
                                        for (var o = 0; o < r.length; o++) {
                                            var g = r[o];
                                            e[g] = !0, t(e, g)
                                        }
                                }(i, t),
                                function t(e, i) {
                                    var r = n.hierarchical.parentReference[i];
                                    if (void 0 !== r)
                                        for (var o = 0; o < r.length; o++) { var g = r[o]; if (void 0 !== e[g]) return { foundParent: g, withChild: i }; var s = t(e, g); if (null !== s.foundParent) return s }
                                    return { foundParent: null, withChild: i }
                                }(i, e)
                        }
                    }, {
                        key: "setDirectionStrategy",
                        value: function() {
                            var t = "UD" === this.options.hierarchical.direction || "DU" === this.options.hierarchical.direction;
                            this.direction = t ? new dc(this) : new fc(this)
                        }
                    }, {
                        key: "_getCenterPosition",
                        value: function(t) {
                            for (var e = 1e9, n = -1e9, i = 0; i < t.length; i++) {
                                var r = void 0;
                                if (void 0 !== t[i].id) r = t[i];
                                else {
                                    var o = t[i];
                                    r = this.body.nodes[o]
                                }
                                var g = this.direction.getPosition(r);
                                e = Math.min(e, g), n = Math.max(n, g)
                            }
                            return .5 * (e + n)
                        }
                    }]), t
                }();
            ts("div.vis-network div.vis-manipulation {\n  box-sizing: content-box;\n\n  border-width: 0;\n  border-bottom: 1px;\n  border-style:solid;\n  border-color: #d6d9d8;\n  background: #ffffff; /* Old browsers */\n  background: -moz-linear-gradient(top,  #ffffff 0%, #fcfcfc 48%, #fafafa 50%, #fcfcfc 100%); /* FF3.6+ */\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(48%,#fcfcfc), color-stop(50%,#fafafa), color-stop(100%,#fcfcfc)); /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(top,  #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* Chrome10+,Safari5.1+ */\n  background: -o-linear-gradient(top,  #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* Opera 11.10+ */\n  background: -ms-linear-gradient(top,  #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* IE10+ */\n  background: linear-gradient(to bottom,  #ffffff 0%,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%); /* W3C */\n  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#fcfcfc',GradientType=0 ); /* IE6-9 */\n\n  padding-top:4px;\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 28px;\n}\n\ndiv.vis-network div.vis-edit-mode {\n  position:absolute;\n  left: 0;\n  top: 5px;\n  height: 30px;\n}\n\n/* FIXME: shouldn't the vis-close button be a child of the vis-manipulation div? */\n\ndiv.vis-network div.vis-close {\n  position:absolute;\n  right: 0;\n  top: 0;\n  width: 30px;\n  height: 30px;\n\n  background-position: 20px 3px;\n  background-repeat: no-repeat;\n  background-image: url('data:image/png;base64, ');\n  cursor: pointer;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\ndiv.vis-network div.vis-close:hover {\n  opacity: 0.6;\n}\n\ndiv.vis-network div.vis-manipulation div.vis-button,\ndiv.vis-network div.vis-edit-mode div.vis-button {\n  float:left;\n  font-family: verdana;\n  font-size: 12px;\n  -moz-border-radius: 15px;\n  border-radius: 15px;\n  display:inline-block;\n  background-position: 0px 0px;\n  background-repeat:no-repeat;\n  height:24px;\n  margin-left: 10px;\n  /*vertical-align:middle;*/\n  cursor: pointer;\n  padding: 0px 8px 0px 8px;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n  -khtml-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n}\n\ndiv.vis-network div.vis-manipulation div.vis-button:hover {\n  box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.20);\n}\n\ndiv.vis-network div.vis-manipulation div.vis-button:active {\n  box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.50);\n}\n\ndiv.vis-network div.vis-manipulation div.vis-button.vis-back {\n  background-image: url('data:image/png;base64, ');\n}\n\ndiv.vis-network div.vis-manipulation div.vis-button.vis-none:hover {\n  box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.0);\n  cursor: default;\n}\ndiv.vis-network div.vis-manipulation div.vis-button.vis-none:active {\n  box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.0);\n}\ndiv.vis-network div.vis-manipulation div.vis-button.vis-none {\n  padding: 0;\n}\ndiv.vis-network div.vis-manipulation div.notification {\n  margin: 2px;\n  font-weight: bold;\n}\n\ndiv.vis-network div.vis-manipulation div.vis-button.vis-add {\n  background-image: url('data:image/png;base64, ');\n}\n\ndiv.vis-network div.vis-manipulation div.vis-button.vis-edit,\ndiv.vis-network div.vis-edit-mode div.vis-button.vis-edit {\n  background-image: url('data:image/png;base64, ');\n}\n\ndiv.vis-network div.vis-edit-mode div.vis-button.vis-edit.vis-edit-mode {\n  background-color: #fcfcfc;\n  border: 1px solid #cccccc;\n}\n\ndiv.vis-network div.vis-manipulation div.vis-button.vis-connect {\n  background-image: url('data:image/png;base64, ');\n}\n\ndiv.vis-network div.vis-manipulation div.vis-button.vis-delete {\n  background-image: url('data:image/png;base64, ');\n}\n/* top right bottom left */\ndiv.vis-network div.vis-manipulation div.vis-label,\ndiv.vis-network div.vis-edit-mode div.vis-label {\n  margin: 0 0 0 23px;\n  line-height: 25px;\n}\ndiv.vis-network div.vis-manipulation div.vis-separator-line {\n  float:left;\n  display:inline-block;\n  width:1px;\n  height:21px;\n  background-color: #bdbdbd;\n  margin: 0px 7px 0 15px; /*top right bottom left*/\n}\n\n/* TODO: is this redundant?\ndiv.network-navigation_wrapper {\n  position: absolute;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n}\n*/\n");
            var Sc = function() {
                function t(e, n, i, r) {
                    var o, g, s = this;
                    DA(this, t), this.body = e, this.canvas = n, this.selectionHandler = i, this.interactionHandler = r, this.editMode = !1, this.manipulationDiv = void 0, this.editModeDiv = void 0, this.closeDiv = void 0, this.manipulationHammers = [], this.temporaryUIFunctions = {}, this.temporaryEventFunctions = [], this.touchTime = 0, this.temporaryIds = { nodes: [], edges: [] }, this.guiEnabled = !1, this.inMode = !1, this.selectedControlNode = void 0, this.options = {}, this.defaultOptions = { enabled: !1, initiallyActive: !1, addNode: !0, addEdge: !0, editNode: void 0, editEdge: !0, deleteNode: !0, deleteEdge: !0, controlNodeStyle: { shape: "dot", size: 6, color: { background: "#ff0000", border: "#3c3c3c", highlight: { background: "#07f968", border: "#3c3c3c" } }, borderWidth: 2, borderWidthSelected: 2 } }, bt(this.options, this.defaultOptions), this.body.emitter.on("destroy", (function() { s._clean() })), this.body.emitter.on("_dataChanged", tt(o = this._restore).call(o, this)), this.body.emitter.on("_resetData", tt(g = this._restore).call(g, this))
                }
                return RA(t, [{ key: "_restore", value: function() {!1 !== this.inMode && (!0 === this.options.initiallyActive ? this.enableEditMode() : this.disableEditMode()) } }, { key: "setOptions", value: function(t, e, n) { void 0 !== e && (void 0 !== e.locale ? this.options.locale = e.locale : this.options.locale = n.locale, void 0 !== e.locales ? this.options.locales = e.locales : this.options.locales = n.locales), void 0 !== t && ("boolean" == typeof t ? this.options.enabled = t : (this.options.enabled = !0, Fo(this.options, t)), !0 === this.options.initiallyActive && (this.editMode = !0), this._setup()) } }, { key: "toggleEditMode", value: function() {!0 === this.editMode ? this.disableEditMode() : this.enableEditMode() } }, { key: "enableEditMode", value: function() { this.editMode = !0, this._clean(), !0 === this.guiEnabled && (this.manipulationDiv.style.display = "block", this.closeDiv.style.display = "block", this.editModeDiv.style.display = "none", this.showManipulatorToolbar()) } }, { key: "disableEditMode", value: function() { this.editMode = !1, this._clean(), !0 === this.guiEnabled && (this.manipulationDiv.style.display = "none", this.closeDiv.style.display = "none", this.editModeDiv.style.display = "block", this._createEditButton()) } }, {
                    key: "showManipulatorToolbar",
                    value: function() {
                        if (this._clean(), this.manipulationDOM = {}, !0 === this.guiEnabled) {
                            var t, e;
                            this.editMode = !0, this.manipulationDiv.style.display = "block", this.closeDiv.style.display = "block";
                            var n = this.selectionHandler._getSelectedNodeCount(),
                                i = this.selectionHandler._getSelectedEdgeCount(),
                                r = n + i,
                                o = this.options.locales[this.options.locale],
                                g = !1;
                            !1 !== this.options.addNode && (this._createAddNodeButton(o), g = !0), !1 !== this.options.addEdge && (!0 === g ? this._createSeperator(1) : g = !0, this._createAddEdgeButton(o)), 1 === n && "function" == typeof this.options.editNode ? (!0 === g ? this._createSeperator(2) : g = !0, this._createEditNodeButton(o)) : 1 === i && 0 === n && !1 !== this.options.editEdge && (!0 === g ? this._createSeperator(3) : g = !0, this._createEditEdgeButton(o)), 0 !== r && (n > 0 && !1 !== this.options.deleteNode || 0 === n && !1 !== this.options.deleteEdge) && (!0 === g && this._createSeperator(4), this._createDeleteButton(o)), this._bindHammerToDiv(this.closeDiv, tt(t = this.toggleEditMode).call(t, this)), this._temporaryBindEvent("select", tt(e = this.showManipulatorToolbar).call(e, this))
                        }
                        this.body.emitter.emit("_redraw")
                    }
                }, {
                    key: "addNodeMode",
                    value: function() {
                        var t;
                        if (!0 !== this.editMode && this.enableEditMode(), this._clean(), this.inMode = "addNode", !0 === this.guiEnabled) {
                            var e, n = this.options.locales[this.options.locale];
                            this.manipulationDOM = {}, this._createBackButton(n), this._createSeperator(), this._createDescription(n.addDescription || this.options.locales.en.addDescription), this._bindHammerToDiv(this.closeDiv, tt(e = this.toggleEditMode).call(e, this))
                        }
                        this._temporaryBindEvent("click", tt(t = this._performAddNode).call(t, this))
                    }
                }, {
                    key: "editNode",
                    value: function() {
                        var t = this;
                        !0 !== this.editMode && this.enableEditMode(), this._clean();
                        var e = this.selectionHandler._getSelectedNode();
                        if (void 0 !== e) {
                            if (this.inMode = "editNode", "function" != typeof this.options.editNode) throw new Error("No function has been configured to handle the editing of nodes.");
                            if (!0 !== e.isCluster) {
                                var n = Fo({}, e.options, !1);
                                if (n.x = e.x, n.y = e.y, 2 !== this.options.editNode.length) throw new Error("The function for edit does not support two arguments (data, callback)");
                                this.options.editNode(n, (function(e) { null != e && "editNode" === t.inMode && t.body.data.nodes.getDataSet().update(e), t.showManipulatorToolbar() }))
                            } else alert(this.options.locales[this.options.locale].editClusterError || this.options.locales.en.editClusterError)
                        } else this.showManipulatorToolbar()
                    }
                }, {
                    key: "addEdgeMode",
                    value: function() {
                        var t, e, n, i, r;
                        if (!0 !== this.editMode && this.enableEditMode(), this._clean(), this.inMode = "addEdge", !0 === this.guiEnabled) {
                            var o, g = this.options.locales[this.options.locale];
                            this.manipulationDOM = {}, this._createBackButton(g), this._createSeperator(), this._createDescription(g.edgeDescription || this.options.locales.en.edgeDescription), this._bindHammerToDiv(this.closeDiv, tt(o = this.toggleEditMode).call(o, this))
                        }
                        this._temporaryBindUI("onTouch", tt(t = this._handleConnect).call(t, this)), this._temporaryBindUI("onDragEnd", tt(e = this._finishConnect).call(e, this)), this._temporaryBindUI("onDrag", tt(n = this._dragControlNode).call(n, this)), this._temporaryBindUI("onRelease", tt(i = this._finishConnect).call(i, this)), this._temporaryBindUI("onDragStart", tt(r = this._dragStartEdge).call(r, this)), this._temporaryBindUI("onHold", (function() {}))
                    }
                }, {
                    key: "editEdgeMode",
                    value: function() {
                        if (!0 !== this.editMode && this.enableEditMode(), this._clean(), this.inMode = "editEdge", "object" !== io(this.options.editEdge) || "function" != typeof this.options.editEdge.editWithoutDrag || (this.edgeBeingEditedId = this.selectionHandler.getSelectedEdges()[0], void 0 === this.edgeBeingEditedId)) {
                            if (!0 === this.guiEnabled) {
                                var t, e = this.options.locales[this.options.locale];
                                this.manipulationDOM = {}, this._createBackButton(e), this._createSeperator(), this._createDescription(e.editEdgeDescription || this.options.locales.en.editEdgeDescription), this._bindHammerToDiv(this.closeDiv, tt(t = this.toggleEditMode).call(t, this))
                            }
                            if (this.edgeBeingEditedId = this.selectionHandler.getSelectedEdges()[0], void 0 !== this.edgeBeingEditedId) {
                                var n, i, r, o, g = this.body.edges[this.edgeBeingEditedId],
                                    s = this._getNewTargetNode(g.from.x, g.from.y),
                                    A = this._getNewTargetNode(g.to.x, g.to.y);
                                this.temporaryIds.nodes.push(s.id), this.temporaryIds.nodes.push(A.id), this.body.nodes[s.id] = s, this.body.nodeIndices.push(s.id), this.body.nodes[A.id] = A, this.body.nodeIndices.push(A.id), this._temporaryBindUI("onTouch", tt(n = this._controlNodeTouch).call(n, this)), this._temporaryBindUI("onTap", (function() {})), this._temporaryBindUI("onHold", (function() {})), this._temporaryBindUI("onDragStart", tt(i = this._controlNodeDragStart).call(i, this)), this._temporaryBindUI("onDrag", tt(r = this._controlNodeDrag).call(r, this)), this._temporaryBindUI("onDragEnd", tt(o = this._controlNodeDragEnd).call(o, this)), this._temporaryBindUI("onMouseMove", (function() {})), this._temporaryBindEvent("beforeDrawing", (function(t) { var e = g.edgeType.findBorderPositions(t);!1 === s.selected && (s.x = e.from.x, s.y = e.from.y), !1 === A.selected && (A.x = e.to.x, A.y = e.to.y) })), this.body.emitter.emit("_redraw")
                            } else this.showManipulatorToolbar()
                        } else {
                            var a = this.body.edges[this.edgeBeingEditedId];
                            this._performEditEdge(a.from.id, a.to.id)
                        }
                    }
                }, {
                    key: "deleteSelected",
                    value: function() {
                        var t = this;
                        !0 !== this.editMode && this.enableEditMode(), this._clean(), this.inMode = "delete";
                        var e = this.selectionHandler.getSelectedNodes(),
                            n = this.selectionHandler.getSelectedEdges(),
                            i = void 0;
                        if (e.length > 0) {
                            for (var r = 0; r < e.length; r++)
                                if (!0 === this.body.nodes[e[r]].isCluster) return void alert(this.options.locales[this.options.locale].deleteClusterError || this.options.locales.en.deleteClusterError);
                                "function" == typeof this.options.deleteNode && (i = this.options.deleteNode)
                        } else n.length > 0 && "function" == typeof this.options.deleteEdge && (i = this.options.deleteEdge);
                        if ("function" == typeof i) {
                            var o = { nodes: e, edges: n };
                            if (2 !== i.length) throw new Error("The function for delete does not support two arguments (data, callback)");
                            i(o, (function(e) { null != e && "delete" === t.inMode ? (t.body.data.edges.getDataSet().remove(e.edges), t.body.data.nodes.getDataSet().remove(e.nodes), t.body.emitter.emit("startSimulation"), t.showManipulatorToolbar()) : (t.body.emitter.emit("startSimulation"), t.showManipulatorToolbar()) }))
                        } else this.body.data.edges.getDataSet().remove(n), this.body.data.nodes.getDataSet().remove(e), this.body.emitter.emit("startSimulation"), this.showManipulatorToolbar()
                    }
                }, { key: "_setup", value: function() {!0 === this.options.enabled ? (this.guiEnabled = !0, this._createWrappers(), !1 === this.editMode ? this._createEditButton() : this.showManipulatorToolbar()) : (this._removeManipulationDOM(), this.guiEnabled = !1) } }, { key: "_createWrappers", value: function() { void 0 === this.manipulationDiv && (this.manipulationDiv = document.createElement("div"), this.manipulationDiv.className = "vis-manipulation", !0 === this.editMode ? this.manipulationDiv.style.display = "block" : this.manipulationDiv.style.display = "none", this.canvas.frame.appendChild(this.manipulationDiv)), void 0 === this.editModeDiv && (this.editModeDiv = document.createElement("div"), this.editModeDiv.className = "vis-edit-mode", !0 === this.editMode ? this.editModeDiv.style.display = "none" : this.editModeDiv.style.display = "block", this.canvas.frame.appendChild(this.editModeDiv)), void 0 === this.closeDiv && (this.closeDiv = document.createElement("div"), this.closeDiv.className = "vis-close", this.closeDiv.style.display = this.manipulationDiv.style.display, this.canvas.frame.appendChild(this.closeDiv)) } }, {
                    key: "_getNewTargetNode",
                    value: function(t, e) {
                        var n = Fo({}, this.options.controlNodeStyle);
                        n.id = "targetNode" + fC(), n.hidden = !1, n.physics = !1, n.x = t, n.y = e;
                        var i = this.body.functions.createNode(n);
                        return i.shape.boundingBox = { left: t, right: t, top: e, bottom: e }, i
                    }
                }, {
                    key: "_createEditButton",
                    value: function() {
                        var t;
                        this._clean(), this.manipulationDOM = {}, So(this.editModeDiv);
                        var e = this.options.locales[this.options.locale],
                            n = this._createButton("editMode", "vis-button vis-edit vis-edit-mode", e.edit || this.options.locales.en.edit);
                        this.editModeDiv.appendChild(n), this._bindHammerToDiv(n, tt(t = this.toggleEditMode).call(t, this))
                    }
                }, { key: "_clean", value: function() { this.inMode = !1, !0 === this.guiEnabled && (So(this.editModeDiv), So(this.manipulationDiv), this._cleanManipulatorHammers()), this._cleanupTemporaryNodesAndEdges(), this._unbindTemporaryUIs(), this._unbindTemporaryEvents(), this.body.emitter.emit("restorePhysics") } }, {
                    key: "_cleanManipulatorHammers",
                    value: function() {
                        if (0 != this.manipulationHammers.length) {
                            for (var t = 0; t < this.manipulationHammers.length; t++) this.manipulationHammers[t].destroy();
                            this.manipulationHammers = []
                        }
                    }
                }, { key: "_removeManipulationDOM", value: function() { this._clean(), So(this.manipulationDiv), So(this.editModeDiv), So(this.closeDiv), this.manipulationDiv && this.canvas.frame.removeChild(this.manipulationDiv), this.editModeDiv && this.canvas.frame.removeChild(this.editModeDiv), this.closeDiv && this.canvas.frame.removeChild(this.closeDiv), this.manipulationDiv = void 0, this.editModeDiv = void 0, this.closeDiv = void 0 } }, {
                    key: "_createSeperator",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1;
                        this.manipulationDOM["seperatorLineDiv" + t] = document.createElement("div"), this.manipulationDOM["seperatorLineDiv" + t].className = "vis-separator-line", this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv" + t])
                    }
                }, {
                    key: "_createAddNodeButton",
                    value: function(t) {
                        var e, n = this._createButton("addNode", "vis-button vis-add", t.addNode || this.options.locales.en.addNode);
                        this.manipulationDiv.appendChild(n), this._bindHammerToDiv(n, tt(e = this.addNodeMode).call(e, this))
                    }
                }, {
                    key: "_createAddEdgeButton",
                    value: function(t) {
                        var e, n = this._createButton("addEdge", "vis-button vis-connect", t.addEdge || this.options.locales.en.addEdge);
                        this.manipulationDiv.appendChild(n), this._bindHammerToDiv(n, tt(e = this.addEdgeMode).call(e, this))
                    }
                }, {
                    key: "_createEditNodeButton",
                    value: function(t) {
                        var e, n = this._createButton("editNode", "vis-button vis-edit", t.editNode || this.options.locales.en.editNode);
                        this.manipulationDiv.appendChild(n), this._bindHammerToDiv(n, tt(e = this.editNode).call(e, this))
                    }
                }, {
                    key: "_createEditEdgeButton",
                    value: function(t) {
                        var e, n = this._createButton("editEdge", "vis-button vis-edit", t.editEdge || this.options.locales.en.editEdge);
                        this.manipulationDiv.appendChild(n), this._bindHammerToDiv(n, tt(e = this.editEdgeMode).call(e, this))
                    }
                }, {
                    key: "_createDeleteButton",
                    value: function(t) {
                        var e, n;
                        n = this.options.rtl ? "vis-button vis-delete-rtl" : "vis-button vis-delete";
                        var i = this._createButton("delete", n, t.del || this.options.locales.en.del);
                        this.manipulationDiv.appendChild(i), this._bindHammerToDiv(i, tt(e = this.deleteSelected).call(e, this))
                    }
                }, {
                    key: "_createBackButton",
                    value: function(t) {
                        var e, n = this._createButton("back", "vis-button vis-back", t.back || this.options.locales.en.back);
                        this.manipulationDiv.appendChild(n), this._bindHammerToDiv(n, tt(e = this.showManipulatorToolbar).call(e, this))
                    }
                }, { key: "_createButton", value: function(t, e, n) { var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "vis-label"; return this.manipulationDOM[t + "Div"] = document.createElement("div"), this.manipulationDOM[t + "Div"].className = e, this.manipulationDOM[t + "Label"] = document.createElement("div"), this.manipulationDOM[t + "Label"].className = i, this.manipulationDOM[t + "Label"].innerHTML = n, this.manipulationDOM[t + "Div"].appendChild(this.manipulationDOM[t + "Label"]), this.manipulationDOM[t + "Div"] } }, { key: "_createDescription", value: function(t) { this.manipulationDiv.appendChild(this._createButton("description", "vis-button vis-none", t)) } }, { key: "_temporaryBindEvent", value: function(t, e) { this.temporaryEventFunctions.push({ event: t, boundFunction: e }), this.body.emitter.on(t, e) } }, {
                    key: "_temporaryBindUI",
                    value: function(t, e) {
                        if (void 0 === this.body.eventListeners[t]) throw new Error("This UI function does not exist. Typo? You tried: " + t + " possible are: " + ca(Hr(this.body.eventListeners)));
                        this.temporaryUIFunctions[t] = this.body.eventListeners[t], this.body.eventListeners[t] = e
                    }
                }, {
                    key: "_unbindTemporaryUIs",
                    value: function() {
                        for (var t in this.temporaryUIFunctions) Object.prototype.hasOwnProperty.call(this.temporaryUIFunctions, t) && (this.body.eventListeners[t] = this.temporaryUIFunctions[t], delete this.temporaryUIFunctions[t]);
                        this.temporaryUIFunctions = {}
                    }
                }, {
                    key: "_unbindTemporaryEvents",
                    value: function() {
                        for (var t = 0; t < this.temporaryEventFunctions.length; t++) {
                            var e = this.temporaryEventFunctions[t].event,
                                n = this.temporaryEventFunctions[t].boundFunction;
                            this.body.emitter.off(e, n)
                        }
                        this.temporaryEventFunctions = []
                    }
                }, {
                    key: "_bindHammerToDiv",
                    value: function(t, e) {
                        var n = new EA(t, {});
                        oc(n, e), this.manipulationHammers.push(n)
                    }
                }, {
                    key: "_cleanupTemporaryNodesAndEdges",
                    value: function() {
                        for (var t = 0; t < this.temporaryIds.edges.length; t++) {
                            var e;
                            this.body.edges[this.temporaryIds.edges[t]].disconnect(), delete this.body.edges[this.temporaryIds.edges[t]];
                            var n, i = pr(e = this.body.edgeIndices).call(e, this.temporaryIds.edges[t]);
                            if (-1 !== i) ag(n = this.body.edgeIndices).call(n, i, 1)
                        }
                        for (var r = 0; r < this.temporaryIds.nodes.length; r++) {
                            var o;
                            delete this.body.nodes[this.temporaryIds.nodes[r]];
                            var g, s = pr(o = this.body.nodeIndices).call(o, this.temporaryIds.nodes[r]);
                            if (-1 !== s) ag(g = this.body.nodeIndices).call(g, s, 1)
                        }
                        this.temporaryIds = { nodes: [], edges: [] }
                    }
                }, { key: "_controlNodeTouch", value: function(t) { this.selectionHandler.unselectAll(), this.lastTouch = this.body.functions.getPointer(t.center), this.lastTouch.translation = bt({}, this.body.view.translation) } }, {
                    key: "_controlNodeDragStart",
                    value: function(t) {
                        var e = this.lastTouch,
                            n = this.selectionHandler._pointerToPositionObject(e),
                            i = this.body.nodes[this.temporaryIds.nodes[0]],
                            r = this.body.nodes[this.temporaryIds.nodes[1]],
                            o = this.body.edges[this.edgeBeingEditedId];
                        this.selectedControlNode = void 0;
                        var g = i.isOverlappingWith(n),
                            s = r.isOverlappingWith(n);
                        !0 === g ? (this.selectedControlNode = i, o.edgeType.from = i) : !0 === s && (this.selectedControlNode = r, o.edgeType.to = r), void 0 !== this.selectedControlNode && this.selectionHandler.selectObject(this.selectedControlNode), this.body.emitter.emit("_redraw")
                    }
                }, {
                    key: "_controlNodeDrag",
                    value: function(t) {
                        this.body.emitter.emit("disablePhysics");
                        var e = this.body.functions.getPointer(t.center),
                            n = this.canvas.DOMtoCanvas(e);
                        void 0 !== this.selectedControlNode ? (this.selectedControlNode.x = n.x, this.selectedControlNode.y = n.y) : this.interactionHandler.onDrag(t), this.body.emitter.emit("_redraw")
                    }
                }, {
                    key: "_controlNodeDragEnd",
                    value: function(t) {
                        var e = this.body.functions.getPointer(t.center),
                            n = this.selectionHandler._pointerToPositionObject(e),
                            i = this.body.edges[this.edgeBeingEditedId];
                        if (void 0 !== this.selectedControlNode) {
                            this.selectionHandler.unselectAll();
                            for (var r = this.selectionHandler._getAllNodesOverlappingWith(n), o = void 0, g = r.length - 1; g >= 0; g--)
                                if (r[g] !== this.selectedControlNode.id) { o = this.body.nodes[r[g]]; break }
                            if (void 0 !== o && void 0 !== this.selectedControlNode)
                                if (!0 === o.isCluster) alert(this.options.locales[this.options.locale].createEdgeError || this.options.locales.en.createEdgeError);
                                else {
                                    var s = this.body.nodes[this.temporaryIds.nodes[0]];
                                    this.selectedControlNode.id === s.id ? this._performEditEdge(o.id, i.to.id) : this._performEditEdge(i.from.id, o.id)
                                }
                            else i.updateEdgeType(), this.body.emitter.emit("restorePhysics");
                            this.body.emitter.emit("_redraw")
                        }
                    }
                }, {
                    key: "_handleConnect",
                    value: function(t) {
                        if ((new Date).valueOf() - this.touchTime > 100) {
                            this.lastTouch = this.body.functions.getPointer(t.center), this.lastTouch.translation = bt({}, this.body.view.translation), this.interactionHandler.drag.pointer = this.lastTouch, this.interactionHandler.drag.translation = this.lastTouch.translation;
                            var e = this.lastTouch,
                                n = this.selectionHandler.getNodeAt(e);
                            if (void 0 !== n)
                                if (!0 === n.isCluster) alert(this.options.locales[this.options.locale].createEdgeError || this.options.locales.en.createEdgeError);
                                else {
                                    var i = this._getNewTargetNode(n.x, n.y);
                                    this.body.nodes[i.id] = i, this.body.nodeIndices.push(i.id);
                                    var r = this.body.functions.createEdge({ id: "connectionEdge" + fC(), from: n.id, to: i.id, physics: !1, smooth: { enabled: !0, type: "continuous", roundness: .5 } });
                                    this.body.edges[r.id] = r, this.body.edgeIndices.push(r.id), this.temporaryIds.nodes.push(i.id), this.temporaryIds.edges.push(r.id)
                                }
                            this.touchTime = (new Date).valueOf()
                        }
                    }
                }, {
                    key: "_dragControlNode",
                    value: function(t) {
                        var e = this.body.functions.getPointer(t.center),
                            n = this.selectionHandler._pointerToPositionObject(e),
                            i = void 0;
                        void 0 !== this.temporaryIds.edges[0] && (i = this.body.edges[this.temporaryIds.edges[0]].fromId);
                        for (var r = this.selectionHandler._getAllNodesOverlappingWith(n), o = void 0, g = r.length - 1; g >= 0; g--) { var s; if (-1 === pr(s = this.temporaryIds.nodes).call(s, r[g])) { o = this.body.nodes[r[g]]; break } }
                        if (t.controlEdge = { from: i, to: o ? o.id : void 0 }, this.selectionHandler._generateClickEvent("controlNodeDragging", t, e), void 0 !== this.temporaryIds.nodes[0]) {
                            var A = this.body.nodes[this.temporaryIds.nodes[0]];
                            A.x = this.canvas._XconvertDOMtoCanvas(e.x), A.y = this.canvas._YconvertDOMtoCanvas(e.y), this.body.emitter.emit("_redraw")
                        } else this.interactionHandler.onDrag(t)
                    }
                }, {
                    key: "_finishConnect",
                    value: function(t) {
                        var e = this.body.functions.getPointer(t.center),
                            n = this.selectionHandler._pointerToPositionObject(e),
                            i = void 0;
                        void 0 !== this.temporaryIds.edges[0] && (i = this.body.edges[this.temporaryIds.edges[0]].fromId);
                        for (var r = this.selectionHandler._getAllNodesOverlappingWith(n), o = void 0, g = r.length - 1; g >= 0; g--) { var s; if (-1 === pr(s = this.temporaryIds.nodes).call(s, r[g])) { o = this.body.nodes[r[g]]; break } }
                        this._cleanupTemporaryNodesAndEdges(), void 0 !== o && (!0 === o.isCluster ? alert(this.options.locales[this.options.locale].createEdgeError || this.options.locales.en.createEdgeError) : void 0 !== this.body.nodes[i] && void 0 !== this.body.nodes[o.id] && this._performAddEdge(i, o.id)), t.controlEdge = { from: i, to: o ? o.id : void 0 }, this.selectionHandler._generateClickEvent("controlNodeDragEnd", t, e), this.body.emitter.emit("_redraw")
                    }
                }, {
                    key: "_dragStartEdge",
                    value: function(t) {
                        var e = this.lastTouch;
                        this.selectionHandler._generateClickEvent("dragStart", t, e, void 0, !0)
                    }
                }, {
                    key: "_performAddNode",
                    value: function(t) {
                        var e = this,
                            n = { id: fC(), x: t.pointer.canvas.x, y: t.pointer.canvas.y, label: "new" };
                        if ("function" == typeof this.options.addNode) {
                            if (2 !== this.options.addNode.length) throw this.showManipulatorToolbar(), new Error("The function for add does not support two arguments (data,callback)");
                            this.options.addNode(n, (function(t) { null != t && "addNode" === e.inMode && e.body.data.nodes.getDataSet().add(t), e.showManipulatorToolbar() }))
                        } else this.body.data.nodes.getDataSet().add(n), this.showManipulatorToolbar()
                    }
                }, {
                    key: "_performAddEdge",
                    value: function(t, e) {
                        var n = this,
                            i = { from: t, to: e };
                        if ("function" == typeof this.options.addEdge) {
                            if (2 !== this.options.addEdge.length) throw new Error("The function for connect does not support two arguments (data,callback)");
                            this.options.addEdge(i, (function(t) { null != t && "addEdge" === n.inMode && (n.body.data.edges.getDataSet().add(t), n.selectionHandler.unselectAll(), n.showManipulatorToolbar()) }))
                        } else this.body.data.edges.getDataSet().add(i), this.selectionHandler.unselectAll(), this.showManipulatorToolbar()
                    }
                }, {
                    key: "_performEditEdge",
                    value: function(t, e) {
                        var n = this,
                            i = { id: this.edgeBeingEditedId, from: t, to: e, label: this.body.data.edges.get(this.edgeBeingEditedId).label },
                            r = this.options.editEdge;
                        if ("object" === io(r) && (r = r.editWithoutDrag), "function" == typeof r) {
                            if (2 !== r.length) throw new Error("The function for edit does not support two arguments (data, callback)");
                            r(i, (function(t) { null == t || "editEdge" !== n.inMode ? (n.body.edges[i.id].updateEdgeType(), n.body.emitter.emit("_redraw"), n.showManipulatorToolbar()) : (n.body.data.edges.getDataSet().update(t), n.selectionHandler.unselectAll(), n.showManipulatorToolbar()) }))
                        } else this.body.data.edges.getDataSet().update(i), this.selectionHandler.unselectAll(), this.showManipulatorToolbar()
                    }
                }]), t
            }();
            ts("div.vis-configuration {\n    position:relative;\n    display:block;\n    float:left;\n    font-size:12px;\n}\n\ndiv.vis-configuration-wrapper {\n    display:block;\n    width:700px;\n}\n\ndiv.vis-configuration-wrapper::after {\n  clear: both;\n  content: \"\";\n  display: block;\n}\n\ndiv.vis-configuration.vis-config-option-container{\n    display:block;\n    width:495px;\n    background-color: #ffffff;\n    border:2px solid #f7f8fa;\n    border-radius:4px;\n    margin-top:20px;\n    left:10px;\n    padding-left:5px;\n}\n\ndiv.vis-configuration.vis-config-button{\n    display:block;\n    width:495px;\n    height:25px;\n    vertical-align: middle;\n    line-height:25px;\n    background-color: #f7f8fa;\n    border:2px solid #ceced0;\n    border-radius:4px;\n    margin-top:20px;\n    left:10px;\n    padding-left:5px;\n    cursor: pointer;\n    margin-bottom:30px;\n}\n\ndiv.vis-configuration.vis-config-button.hover{\n    background-color: #4588e6;\n    border:2px solid #214373;\n    color:#ffffff;\n}\n\ndiv.vis-configuration.vis-config-item{\n    display:block;\n    float:left;\n    width:495px;\n    height:25px;\n    vertical-align: middle;\n    line-height:25px;\n}\n\n\ndiv.vis-configuration.vis-config-item.vis-config-s2{\n    left:10px;\n    background-color: #f7f8fa;\n    padding-left:5px;\n    border-radius:3px;\n}\ndiv.vis-configuration.vis-config-item.vis-config-s3{\n    left:20px;\n    background-color: #e4e9f0;\n    padding-left:5px;\n    border-radius:3px;\n}\ndiv.vis-configuration.vis-config-item.vis-config-s4{\n    left:30px;\n    background-color: #cfd8e6;\n    padding-left:5px;\n    border-radius:3px;\n}\n\ndiv.vis-configuration.vis-config-header{\n    font-size:18px;\n    font-weight: bold;\n}\n\ndiv.vis-configuration.vis-config-label{\n    width:120px;\n    height:25px;\n    line-height: 25px;\n}\n\ndiv.vis-configuration.vis-config-label.vis-config-s3{\n    width:110px;\n}\ndiv.vis-configuration.vis-config-label.vis-config-s4{\n    width:100px;\n}\n\ndiv.vis-configuration.vis-config-colorBlock{\n    top:1px;\n    width:30px;\n    height:19px;\n    border:1px solid #444444;\n    border-radius:2px;\n    padding:0px;\n    margin:0px;\n    cursor:pointer;\n}\n\ninput.vis-configuration.vis-config-checkbox {\n    left:-5px;\n}\n\n\ninput.vis-configuration.vis-config-rangeinput{\n    position:relative;\n    top:-5px;\n    width:60px;\n    /*height:13px;*/\n    padding:1px;\n    margin:0;\n    pointer-events:none;\n}\n\ninput.vis-configuration.vis-config-range{\n    /*removes default webkit styles*/\n    -webkit-appearance: none;\n\n    /*fix for FF unable to apply focus style bug */\n    border: 0px solid white;\n    background-color:rgba(0,0,0,0);\n\n    /*required for proper track sizing in FF*/\n    width: 300px;\n    height:20px;\n}\ninput.vis-configuration.vis-config-range::-webkit-slider-runnable-track {\n    width: 300px;\n    height: 5px;\n    background: #dedede; /* Old browsers */\n    background: -moz-linear-gradient(top,  #dedede 0%, #c8c8c8 99%); /* FF3.6+ */\n    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dedede), color-stop(99%,#c8c8c8)); /* Chrome,Safari4+ */\n    background: -webkit-linear-gradient(top,  #dedede 0%,#c8c8c8 99%); /* Chrome10+,Safari5.1+ */\n    background: -o-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* Opera 11.10+ */\n    background: -ms-linear-gradient(top,  #dedede 0%,#c8c8c8 99%); /* IE10+ */\n    background: linear-gradient(to bottom,  #dedede 0%,#c8c8c8 99%); /* W3C */\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8',GradientType=0 ); /* IE6-9 */\n\n    border: 1px solid #999999;\n    box-shadow: #aaaaaa 0px 0px 3px 0px;\n    border-radius: 3px;\n}\ninput.vis-configuration.vis-config-range::-webkit-slider-thumb {\n    -webkit-appearance: none;\n    border: 1px solid #14334b;\n    height: 17px;\n    width: 17px;\n    border-radius: 50%;\n    background: #3876c2; /* Old browsers */\n    background: -moz-linear-gradient(top,  #3876c2 0%, #385380 100%); /* FF3.6+ */\n    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#3876c2), color-stop(100%,#385380)); /* Chrome,Safari4+ */\n    background: -webkit-linear-gradient(top,  #3876c2 0%,#385380 100%); /* Chrome10+,Safari5.1+ */\n    background: -o-linear-gradient(top,  #3876c2 0%,#385380 100%); /* Opera 11.10+ */\n    background: -ms-linear-gradient(top,  #3876c2 0%,#385380 100%); /* IE10+ */\n    background: linear-gradient(to bottom,  #3876c2 0%,#385380 100%); /* W3C */\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3876c2', endColorstr='#385380',GradientType=0 ); /* IE6-9 */\n    box-shadow: #111927 0px 0px 1px 0px;\n    margin-top: -7px;\n}\ninput.vis-configuration.vis-config-range:focus {\n    outline: none;\n}\ninput.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track {\n    background: #9d9d9d; /* Old browsers */\n    background: -moz-linear-gradient(top, #9d9d9d 0%, #c8c8c8 99%); /* FF3.6+ */\n    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#9d9d9d), color-stop(99%,#c8c8c8)); /* Chrome,Safari4+ */\n    background: -webkit-linear-gradient(top,  #9d9d9d 0%,#c8c8c8 99%); /* Chrome10+,Safari5.1+ */\n    background: -o-linear-gradient(top,  #9d9d9d 0%,#c8c8c8 99%); /* Opera 11.10+ */\n    background: -ms-linear-gradient(top,  #9d9d9d 0%,#c8c8c8 99%); /* IE10+ */\n    background: linear-gradient(to bottom,  #9d9d9d 0%,#c8c8c8 99%); /* W3C */\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#9d9d9d', endColorstr='#c8c8c8',GradientType=0 ); /* IE6-9 */\n}\n\ninput.vis-configuration.vis-config-range::-moz-range-track {\n    width: 300px;\n    height: 10px;\n    background: #dedede; /* Old browsers */\n    background: -moz-linear-gradient(top,  #dedede 0%, #c8c8c8 99%); /* FF3.6+ */\n    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dedede), color-stop(99%,#c8c8c8)); /* Chrome,Safari4+ */\n    background: -webkit-linear-gradient(top,  #dedede 0%,#c8c8c8 99%); /* Chrome10+,Safari5.1+ */\n    background: -o-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* Opera 11.10+ */\n    background: -ms-linear-gradient(top,  #dedede 0%,#c8c8c8 99%); /* IE10+ */\n    background: linear-gradient(to bottom,  #dedede 0%,#c8c8c8 99%); /* W3C */\n    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dedede', endColorstr='#c8c8c8',GradientType=0 ); /* IE6-9 */\n\n    border: 1px solid #999999;\n    box-shadow: #aaaaaa 0px 0px 3px 0px;\n    border-radius: 3px;\n}\ninput.vis-configuration.vis-config-range::-moz-range-thumb {\n    border: none;\n    height: 16px;\n    width: 16px;\n\n    border-radius: 50%;\n    background:  #385380;\n}\n\n/*hide the outline behind the border*/\ninput.vis-configuration.vis-config-range:-moz-focusring{\n    outline: 1px solid white;\n    outline-offset: -1px;\n}\n\ninput.vis-configuration.vis-config-range::-ms-track {\n    width: 300px;\n    height: 5px;\n\n    /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */\n    background: transparent;\n\n    /*leave room for the larger thumb to overflow with a transparent border */\n    border-color: transparent;\n    border-width: 6px 0;\n\n    /*remove default tick marks*/\n    color: transparent;\n}\ninput.vis-configuration.vis-config-range::-ms-fill-lower {\n    background: #777;\n    border-radius: 10px;\n}\ninput.vis-configuration.vis-config-range::-ms-fill-upper {\n    background: #ddd;\n    border-radius: 10px;\n}\ninput.vis-configuration.vis-config-range::-ms-thumb {\n    border: none;\n    height: 16px;\n    width: 16px;\n    border-radius: 50%;\n    background:  #385380;\n}\ninput.vis-configuration.vis-config-range:focus::-ms-fill-lower {\n    background: #888;\n}\ninput.vis-configuration.vis-config-range:focus::-ms-fill-upper {\n    background: #ccc;\n}\n\n.vis-configuration-popup {\n    position: absolute;\n    background: rgba(57, 76, 89, 0.85);\n    border: 2px solid #f2faff;\n    line-height:30px;\n    height:30px;\n    width:150px;\n    text-align:center;\n    color: #ffffff;\n    font-size:14px;\n    border-radius:4px;\n    -webkit-transition: opacity 0.3s ease-in-out;\n    -moz-transition: opacity 0.3s ease-in-out;\n    transition: opacity 0.3s ease-in-out;\n}\n.vis-configuration-popup:after, .vis-configuration-popup:before {\n    left: 100%;\n    top: 50%;\n    border: solid transparent;\n    content: \" \";\n    height: 0;\n    width: 0;\n    position: absolute;\n    pointer-events: none;\n}\n\n.vis-configuration-popup:after {\n    border-color: rgba(136, 183, 213, 0);\n    border-left-color: rgba(57, 76, 89, 0.85);\n    border-width: 8px;\n    margin-top: -8px;\n}\n.vis-configuration-popup:before {\n    border-color: rgba(194, 225, 245, 0);\n    border-left-color: #f2faff;\n    border-width: 12px;\n    margin-top: -12px;\n}");
            ts("\ndiv.vis-color-picker {\n  position:absolute;\n  top: 0px;\n  left: 30px;\n  margin-top:-140px;\n  margin-left:30px;\n  width:310px;\n  height:444px;\n  z-index: 1;\n  padding: 10px;\n  border-radius:15px;\n  background-color:#ffffff;\n  display: none;\n  box-shadow: rgba(0,0,0,0.5) 0px 0px 10px 0px;\n}\n\ndiv.vis-color-picker div.vis-arrow {\n  position: absolute;\n  top:147px;\n  left:5px;\n}\n\ndiv.vis-color-picker div.vis-arrow::after,\ndiv.vis-color-picker div.vis-arrow::before {\n  right: 100%;\n  top: 50%;\n  border: solid transparent;\n  content: \" \";\n  height: 0;\n  width: 0;\n  position: absolute;\n  pointer-events: none;\n}\n\ndiv.vis-color-picker div.vis-arrow:after {\n  border-color: rgba(255, 255, 255, 0);\n  border-right-color: #ffffff;\n  border-width: 30px;\n  margin-top: -30px;\n}\n\ndiv.vis-color-picker div.vis-color {\n  position:absolute;\n  width: 289px;\n  height: 289px;\n  cursor: pointer;\n}\n\n\n\ndiv.vis-color-picker div.vis-brightness {\n  position: absolute;\n  top:313px;\n}\n\ndiv.vis-color-picker div.vis-opacity {\n  position:absolute;\n  top:350px;\n}\n\ndiv.vis-color-picker div.vis-selector {\n  position:absolute;\n  top:137px;\n  left:137px;\n  width:15px;\n  height:15px;\n  border-radius:15px;\n  border:1px solid #ffffff;\n  background: #4c4c4c; /* Old browsers */\n  background: -moz-linear-gradient(top,  #4c4c4c 0%, #595959 12%, #666666 25%, #474747 39%, #2c2c2c 50%, #000000 51%, #111111 60%, #2b2b2b 76%, #1c1c1c 91%, #131313 100%); /* FF3.6+ */\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4c4c4c), color-stop(12%,#595959), color-stop(25%,#666666), color-stop(39%,#474747), color-stop(50%,#2c2c2c), color-stop(51%,#000000), color-stop(60%,#111111), color-stop(76%,#2b2b2b), color-stop(91%,#1c1c1c), color-stop(100%,#131313)); /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(top,  #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* Chrome10+,Safari5.1+ */\n  background: -o-linear-gradient(top,  #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* Opera 11.10+ */\n  background: -ms-linear-gradient(top,  #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* IE10+ */\n  background: linear-gradient(to bottom,  #4c4c4c 0%,#595959 12%,#666666 25%,#474747 39%,#2c2c2c 50%,#000000 51%,#111111 60%,#2b2b2b 76%,#1c1c1c 91%,#131313 100%); /* W3C */\n  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4c4c4c', endColorstr='#131313',GradientType=0 ); /* IE6-9 */\n}\n\n\n\ndiv.vis-color-picker div.vis-new-color {\n  position:absolute;\n  width:140px;\n  height:20px;\n  border:1px solid rgba(0,0,0,0.1);\n  border-radius:5px;\n  top:380px;\n  left:159px;\n  text-align:right;\n  padding-right:2px;\n  font-size:10px;\n  color:rgba(0,0,0,0.4);\n  vertical-align:middle;\n  line-height:20px;\n\n}\n\ndiv.vis-color-picker div.vis-initial-color {\n  position:absolute;\n  width:140px;\n  height:20px;\n  border:1px solid rgba(0,0,0,0.1);\n  border-radius:5px;\n  top:380px;\n  left:10px;\n  text-align:left;\n  padding-left:2px;\n  font-size:10px;\n  color:rgba(0,0,0,0.4);\n  vertical-align:middle;\n  line-height:20px;\n}\n\ndiv.vis-color-picker div.vis-label {\n  position:absolute;\n  width:300px;\n  left:10px;\n}\n\ndiv.vis-color-picker div.vis-label.vis-brightness {\n  top:300px;\n}\n\ndiv.vis-color-picker div.vis-label.vis-opacity {\n  top:338px;\n}\n\ndiv.vis-color-picker div.vis-button {\n  position:absolute;\n  width:68px;\n  height:25px;\n  border-radius:10px;\n  vertical-align: middle;\n  text-align:center;\n  line-height: 25px;\n  top:410px;\n  border:2px solid #d9d9d9;\n  background-color: #f7f7f7;\n  cursor:pointer;\n}\n\ndiv.vis-color-picker div.vis-button.vis-cancel {\n  /*border:2px solid #ff4e33;*/\n  /*background-color: #ff7761;*/\n  left:5px;\n}\ndiv.vis-color-picker div.vis-button.vis-load {\n  /*border:2px solid #a153e6;*/\n  /*background-color: #cb8dff;*/\n  left:82px;\n}\ndiv.vis-color-picker div.vis-button.vis-apply {\n  /*border:2px solid #4588e6;*/\n  /*background-color: #82b6ff;*/\n  left:159px;\n}\ndiv.vis-color-picker div.vis-button.vis-save {\n  /*border:2px solid #45e655;*/\n  /*background-color: #6dff7c;*/\n  left:236px;\n}\n\n\ndiv.vis-color-picker input.vis-range {\n  width: 290px;\n  height:20px;\n}\n\n/* TODO: is this redundant?\ndiv.vis-color-picker input.vis-range-brightness {\n  width: 289px !important;\n}\n\n\ndiv.vis-color-picker input.vis-saturation-range {\n  width: 289px !important;\n}*/");
            var Dc = { black: "#000000", navy: "#000080", darkblue: "#00008B", mediumblue: "#0000CD", blue: "#0000FF", darkgreen: "#006400", green: "#008000", teal: "#008080", darkcyan: "#008B8B", deepskyblue: "#00BFFF", darkturquoise: "#00CED1", mediumspringgreen: "#00FA9A", lime: "#00FF00", springgreen: "#00FF7F", aqua: "#00FFFF", cyan: "#00FFFF", midnightblue: "#191970", dodgerblue: "#1E90FF", lightseagreen: "#20B2AA", forestgreen: "#228B22", seagreen: "#2E8B57", darkslategray: "#2F4F4F", limegreen: "#32CD32", mediumseagreen: "#3CB371", turquoise: "#40E0D0", royalblue: "#4169E1", steelblue: "#4682B4", darkslateblue: "#483D8B", mediumturquoise: "#48D1CC", indigo: "#4B0082", darkolivegreen: "#556B2F", cadetblue: "#5F9EA0", cornflowerblue: "#6495ED", mediumaquamarine: "#66CDAA", dimgray: "#696969", slateblue: "#6A5ACD", olivedrab: "#6B8E23", slategray: "#708090", lightslategray: "#778899", mediumslateblue: "#7B68EE", lawngreen: "#7CFC00", chartreuse: "#7FFF00", aquamarine: "#7FFFD4", maroon: "#800000", purple: "#800080", olive: "#808000", gray: "#808080", skyblue: "#87CEEB", lightskyblue: "#87CEFA", blueviolet: "#8A2BE2", darkred: "#8B0000", darkmagenta: "#8B008B", saddlebrown: "#8B4513", darkseagreen: "#8FBC8F", lightgreen: "#90EE90", mediumpurple: "#9370D8", darkviolet: "#9400D3", palegreen: "#98FB98", darkorchid: "#9932CC", yellowgreen: "#9ACD32", sienna: "#A0522D", brown: "#A52A2A", darkgray: "#A9A9A9", lightblue: "#ADD8E6", greenyellow: "#ADFF2F", paleturquoise: "#AFEEEE", lightsteelblue: "#B0C4DE", powderblue: "#B0E0E6", firebrick: "#B22222", darkgoldenrod: "#B8860B", mediumorchid: "#BA55D3", rosybrown: "#BC8F8F", darkkhaki: "#BDB76B", silver: "#C0C0C0", mediumvioletred: "#C71585", indianred: "#CD5C5C", peru: "#CD853F", chocolate: "#D2691E", tan: "#D2B48C", lightgrey: "#D3D3D3", palevioletred: "#D87093", thistle: "#D8BFD8", orchid: "#DA70D6", goldenrod: "#DAA520", crimson: "#DC143C", gainsboro: "#DCDCDC", plum: "#DDA0DD", burlywood: "#DEB887", lightcyan: "#E0FFFF", lavender: "#E6E6FA", darksalmon: "#E9967A", violet: "#EE82EE", palegoldenrod: "#EEE8AA", lightcoral: "#F08080", khaki: "#F0E68C", aliceblue: "#F0F8FF", honeydew: "#F0FFF0", azure: "#F0FFFF", sandybrown: "#F4A460", wheat: "#F5DEB3", beige: "#F5F5DC", whitesmoke: "#F5F5F5", mintcream: "#F5FFFA", ghostwhite: "#F8F8FF", salmon: "#FA8072", antiquewhite: "#FAEBD7", linen: "#FAF0E6", lightgoldenrodyellow: "#FAFAD2", oldlace: "#FDF5E6", red: "#FF0000", fuchsia: "#FF00FF", magenta: "#FF00FF", deeppink: "#FF1493", orangered: "#FF4500", tomato: "#FF6347", hotpink: "#FF69B4", coral: "#FF7F50", darkorange: "#FF8C00", lightsalmon: "#FFA07A", orange: "#FFA500", lightpink: "#FFB6C1", pink: "#FFC0CB", gold: "#FFD700", peachpuff: "#FFDAB9", navajowhite: "#FFDEAD", moccasin: "#FFE4B5", bisque: "#FFE4C4", mistyrose: "#FFE4E1", blanchedalmond: "#FFEBCD", papayawhip: "#FFEFD5", lavenderblush: "#FFF0F5", seashell: "#FFF5EE", cornsilk: "#FFF8DC", lemonchiffon: "#FFFACD", floralwhite: "#FFFAF0", snow: "#FFFAFA", yellow: "#FFFF00", lightyellow: "#FFFFE0", ivory: "#FFFFF0", white: "#FFFFFF" },
                Nc = function() {
                    function t() {
                        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1;
                        DA(this, t), this.pixelRatio = e, this.generated = !1, this.centerCoordinates = { x: 144.5, y: 144.5 }, this.r = 289 * .49, this.color = { r: 255, g: 255, b: 255, a: 1 }, this.hueCircle = void 0, this.initialColor = { r: 255, g: 255, b: 255, a: 1 }, this.previousColor = void 0, this.applied = !1, this.updateCallback = function() {}, this.closeCallback = function() {}, this._create()
                    }
                    return RA(t, [{ key: "insertTo", value: function(t) { void 0 !== this.hammer && (this.hammer.destroy(), this.hammer = void 0), this.container = t, this.container.appendChild(this.frame), this._bindHammer(), this._setSize() } }, {
                        key: "setUpdateCallback",
                        value: function(t) {
                            if ("function" != typeof t) throw new Error("Function attempted to set as colorPicker update callback is not a function.");
                            this.updateCallback = t
                        }
                    }, {
                        key: "setCloseCallback",
                        value: function(t) {
                            if ("function" != typeof t) throw new Error("Function attempted to set as colorPicker closing callback is not a function.");
                            this.closeCallback = t
                        }
                    }, { key: "_isColorString", value: function(t) { if ("string" == typeof t) return Dc[t] } }, {
                        key: "setColor",
                        value: function(t) {
                            var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
                            if ("none" !== t) {
                                var n, i = this._isColorString(t);
                                if (void 0 !== i && (t = i), !0 === Do(t)) {
                                    if (!0 === qo(t)) {
                                        var r = t.substr(4).substr(0, t.length - 5).split(",");
                                        n = { r: r[0], g: r[1], b: r[2], a: 1 }
                                    } else if (!0 === Jo(t)) {
                                        var o = t.substr(5).substr(0, t.length - 6).split(",");
                                        n = { r: o[0], g: o[1], b: o[2], a: o[3] }
                                    } else if (!0 === Xo(t)) {
                                        var g = Yo(t);
                                        n = { r: g.r, g: g.g, b: g.b, a: 1 }
                                    }
                                } else if (t instanceof Object && void 0 !== t.r && void 0 !== t.g && void 0 !== t.b) {
                                    var s = void 0 !== t.a ? t.a : "1.0";
                                    n = { r: t.r, g: t.g, b: t.b, a: s }
                                }
                                if (void 0 === n) throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: " + ca(t));
                                this._setColor(n, e)
                            }
                        }
                    }, { key: "show", value: function() { void 0 !== this.closeCallback && (this.closeCallback(), this.closeCallback = void 0), this.applied = !1, this.frame.style.display = "block", this._generateHueCircle() } }, {
                        key: "_hide",
                        value: function() {
                            var t = this,
                                e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];
                            !0 === e && (this.previousColor = bt({}, this.color)), !0 === this.applied && this.updateCallback(this.initialColor), this.frame.style.display = "none", BA((function() { void 0 !== t.closeCallback && (t.closeCallback(), t.closeCallback = void 0) }), 0)
                        }
                    }, { key: "_save", value: function() { this.updateCallback(this.color), this.applied = !1, this._hide() } }, { key: "_apply", value: function() { this.applied = !0, this.updateCallback(this.color), this._updatePicker(this.color) } }, { key: "_loadLast", value: function() { void 0 !== this.previousColor ? this.setColor(this.previousColor, !1) : alert("There is no last color to load...") } }, {
                        key: "_setColor",
                        value: function(t) {
                            var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
                            !0 === e && (this.initialColor = bt({}, t)), this.color = t;
                            var n = Ho(t.r, t.g, t.b),
                                i = 2 * Math.PI,
                                r = this.r * n.s,
                                o = this.centerCoordinates.x + r * Math.sin(i * n.h),
                                g = this.centerCoordinates.y + r * Math.cos(i * n.h);
                            this.colorPickerSelector.style.left = o - .5 * this.colorPickerSelector.clientWidth + "px", this.colorPickerSelector.style.top = g - .5 * this.colorPickerSelector.clientHeight + "px", this._updatePicker(t)
                        }
                    }, { key: "_setOpacity", value: function(t) { this.color.a = t / 100, this._updatePicker(this.color) } }, {
                        key: "_setBrightness",
                        value: function(t) {
                            var e = Ho(this.color.r, this.color.g, this.color.b);
                            e.v = t / 100;
                            var n = Ko(e.h, e.s, e.v);
                            n.a = this.color.a, this.color = n, this._updatePicker()
                        }
                    }, {
                        key: "_updatePicker",
                        value: function() {
                            var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.color,
                                e = Ho(t.r, t.g, t.b),
                                n = this.colorPickerCanvas.getContext("2d");
                            void 0 === this.pixelRation && (this.pixelRatio = (window.devicePixelRatio || 1) / (n.webkitBackingStorePixelRatio || n.mozBackingStorePixelRatio || n.msBackingStorePixelRatio || n.oBackingStorePixelRatio || n.backingStorePixelRatio || 1)), n.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);
                            var i = this.colorPickerCanvas.clientWidth,
                                r = this.colorPickerCanvas.clientHeight;
                            n.clearRect(0, 0, i, r), n.putImageData(this.hueCircle, 0, 0), n.fillStyle = "rgba(0,0,0," + (1 - e.v) + ")", n.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r), $C(n).call(n), this.brightnessRange.value = 100 * e.v, this.opacityRange.value = 100 * t.a, this.initialColorDiv.style.backgroundColor = "rgba(" + this.initialColor.r + "," + this.initialColor.g + "," + this.initialColor.b + "," + this.initialColor.a + ")", this.newColorDiv.style.backgroundColor = "rgba(" + this.color.r + "," + this.color.g + "," + this.color.b + "," + this.color.a + ")"
                        }
                    }, { key: "_setSize", value: function() { this.colorPickerCanvas.style.width = "100%", this.colorPickerCanvas.style.height = "100%", this.colorPickerCanvas.width = 289 * this.pixelRatio, this.colorPickerCanvas.height = 289 * this.pixelRatio } }, {
                        key: "_create",
                        value: function() {
                            var t, e, n, i;
                            if (this.frame = document.createElement("div"), this.frame.className = "vis-color-picker", this.colorPickerDiv = document.createElement("div"), this.colorPickerSelector = document.createElement("div"), this.colorPickerSelector.className = "vis-selector", this.colorPickerDiv.appendChild(this.colorPickerSelector), this.colorPickerCanvas = document.createElement("canvas"), this.colorPickerDiv.appendChild(this.colorPickerCanvas), this.colorPickerCanvas.getContext) {
                                var r = this.colorPickerCanvas.getContext("2d");
                                this.pixelRatio = (window.devicePixelRatio || 1) / (r.webkitBackingStorePixelRatio || r.mozBackingStorePixelRatio || r.msBackingStorePixelRatio || r.oBackingStorePixelRatio || r.backingStorePixelRatio || 1), this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0)
                            } else {
                                var o = document.createElement("DIV");
                                o.style.color = "red", o.style.fontWeight = "bold", o.style.padding = "10px", o.innerHTML = "Error: your browser does not support HTML canvas", this.colorPickerCanvas.appendChild(o)
                            }
                            this.colorPickerDiv.className = "vis-color", this.opacityDiv = document.createElement("div"), this.opacityDiv.className = "vis-opacity", this.brightnessDiv = document.createElement("div"), this.brightnessDiv.className = "vis-brightness", this.arrowDiv = document.createElement("div"), this.arrowDiv.className = "vis-arrow", this.opacityRange = document.createElement("input");
                            try { this.opacityRange.type = "range", this.opacityRange.min = "0", this.opacityRange.max = "100" } catch (t) {}
                            this.opacityRange.value = "100", this.opacityRange.className = "vis-range", this.brightnessRange = document.createElement("input");
                            try { this.brightnessRange.type = "range", this.brightnessRange.min = "0", this.brightnessRange.max = "100" } catch (t) {}
                            this.brightnessRange.value = "100", this.brightnessRange.className = "vis-range", this.opacityDiv.appendChild(this.opacityRange), this.brightnessDiv.appendChild(this.brightnessRange);
                            var g = this;
                            this.opacityRange.onchange = function() { g._setOpacity(this.value) }, this.opacityRange.oninput = function() { g._setOpacity(this.value) }, this.brightnessRange.onchange = function() { g._setBrightness(this.value) }, this.brightnessRange.oninput = function() { g._setBrightness(this.value) }, this.brightnessLabel = document.createElement("div"), this.brightnessLabel.className = "vis-label vis-brightness", this.brightnessLabel.innerHTML = "brightness:", this.opacityLabel = document.createElement("div"), this.opacityLabel.className = "vis-label vis-opacity", this.opacityLabel.innerHTML = "opacity:", this.newColorDiv = document.createElement("div"), this.newColorDiv.className = "vis-new-color", this.newColorDiv.innerHTML = "new", this.initialColorDiv = document.createElement("div"), this.initialColorDiv.className = "vis-initial-color", this.initialColorDiv.innerHTML = "initial", this.cancelButton = document.createElement("div"), this.cancelButton.className = "vis-button vis-cancel", this.cancelButton.innerHTML = "cancel", this.cancelButton.onclick = tt(t = this._hide).call(t, this, !1), this.applyButton = document.createElement("div"), this.applyButton.className = "vis-button vis-apply", this.applyButton.innerHTML = "apply", this.applyButton.onclick = tt(e = this._apply).call(e, this), this.saveButton = document.createElement("div"), this.saveButton.className = "vis-button vis-save", this.saveButton.innerHTML = "save", this.saveButton.onclick = tt(n = this._save).call(n, this), this.loadButton = document.createElement("div"), this.loadButton.className = "vis-button vis-load", this.loadButton.innerHTML = "load last", this.loadButton.onclick = tt(i = this._loadLast).call(i, this), this.frame.appendChild(this.colorPickerDiv), this.frame.appendChild(this.arrowDiv), this.frame.appendChild(this.brightnessLabel), this.frame.appendChild(this.brightnessDiv), this.frame.appendChild(this.opacityLabel), this.frame.appendChild(this.opacityDiv), this.frame.appendChild(this.newColorDiv), this.frame.appendChild(this.initialColorDiv), this.frame.appendChild(this.cancelButton), this.frame.appendChild(this.applyButton), this.frame.appendChild(this.saveButton), this.frame.appendChild(this.loadButton)
                        }
                    }, {
                        key: "_bindHammer",
                        value: function() {
                            var t = this;
                            this.drag = {}, this.pinch = {}, this.hammer = new EA(this.colorPickerCanvas), this.hammer.get("pinch").set({ enable: !0 }), oc(this.hammer, (function(e) { t._moveSelector(e) })), this.hammer.on("tap", (function(e) { t._moveSelector(e) })), this.hammer.on("panstart", (function(e) { t._moveSelector(e) })), this.hammer.on("panmove", (function(e) { t._moveSelector(e) })), this.hammer.on("panend", (function(e) { t._moveSelector(e) }))
                        }
                    }, {
                        key: "_generateHueCircle",
                        value: function() {
                            if (!1 === this.generated) {
                                var t = this.colorPickerCanvas.getContext("2d");
                                void 0 === this.pixelRation && (this.pixelRatio = (window.devicePixelRatio || 1) / (t.webkitBackingStorePixelRatio || t.mozBackingStorePixelRatio || t.msBackingStorePixelRatio || t.oBackingStorePixelRatio || t.backingStorePixelRatio || 1)), t.setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0);
                                var e, n, i, r, o = this.colorPickerCanvas.clientWidth,
                                    g = this.colorPickerCanvas.clientHeight;
                                t.clearRect(0, 0, o, g), this.centerCoordinates = { x: .5 * o, y: .5 * g }, this.r = .49 * o;
                                var s, A = 2 * Math.PI / 360,
                                    a = 1 / this.r;
                                for (i = 0; i < 360; i++)
                                    for (r = 0; r < this.r; r++) e = this.centerCoordinates.x + r * Math.sin(A * i), n = this.centerCoordinates.y + r * Math.cos(A * i), s = Ko(i * (1 / 360), r * a, 1), t.fillStyle = "rgb(" + s.r + "," + s.g + "," + s.b + ")", t.fillRect(e - .5, n - .5, 2, 2);
                                t.strokeStyle = "rgba(0,0,0,1)", t.circle(this.centerCoordinates.x, this.centerCoordinates.y, this.r), t.stroke(), this.hueCircle = t.getImageData(0, 0, o, g)
                            }
                            this.generated = !0
                        }
                    }, {
                        key: "_moveSelector",
                        value: function(t) {
                            var e = this.colorPickerDiv.getBoundingClientRect(),
                                n = t.center.x - e.left,
                                i = t.center.y - e.top,
                                r = .5 * this.colorPickerDiv.clientHeight,
                                o = .5 * this.colorPickerDiv.clientWidth,
                                g = n - o,
                                s = i - r,
                                A = Math.atan2(g, s),
                                a = .98 * Math.min(Math.sqrt(g * g + s * s), o),
                                C = Math.cos(A) * a + r,
                                I = Math.sin(A) * a + o;
                            this.colorPickerSelector.style.top = C - .5 * this.colorPickerSelector.clientHeight + "px", this.colorPickerSelector.style.left = I - .5 * this.colorPickerSelector.clientWidth + "px";
                            var u = A / (2 * Math.PI);
                            u = u < 0 ? u + 1 : u;
                            var c = a / this.r,
                                l = Ho(this.color.r, this.color.g, this.color.b);
                            l.h = u, l.s = c;
                            var h = Ko(l.h, l.s, l.v);
                            h.a = this.color.a, this.color = h, this.initialColorDiv.style.backgroundColor = "rgba(" + this.initialColor.r + "," + this.initialColor.g + "," + this.initialColor.b + "," + this.initialColor.a + ")", this.newColorDiv.style.backgroundColor = "rgba(" + this.color.r + "," + this.color.g + "," + this.color.b + "," + this.color.a + ")"
                        }
                    }]), t
                }(),
                Rc = function() {
                    function t(e, n, i) {
                        var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1;
                        DA(this, t), this.parent = e, this.changedOptions = [], this.container = n, this.allowCreation = !1, this.options = {}, this.initialized = !1, this.popupCounter = 0, this.defaultOptions = { enabled: !1, filter: !0, container: void 0, showButton: !0 }, bt(this.options, this.defaultOptions), this.configureOptions = i, this.moduleOptions = {}, this.domElements = [], this.popupDiv = {}, this.popupLimit = 5, this.popupHistory = {}, this.colorPicker = new Nc(r), this.wrapper = void 0
                    }
                    return RA(t, [{
                        key: "setOptions",
                        value: function(t) {
                            if (void 0 !== t) {
                                this.popupHistory = {}, this._removePopup();
                                var e = !0;
                                if ("string" == typeof t) this.options.filter = t;
                                else if (t instanceof Array) this.options.filter = t.join();
                                else if ("object" === io(t)) {
                                    if (null == t) throw new TypeError("options cannot be null");
                                    void 0 !== t.container && (this.options.container = t.container), void 0 !== sr(t) && (this.options.filter = sr(t)), void 0 !== t.showButton && (this.options.showButton = t.showButton), void 0 !== t.enabled && (e = t.enabled)
                                } else "boolean" == typeof t ? (this.options.filter = !0, e = t) : "function" == typeof t && (this.options.filter = t, e = !0);
                                !1 === sr(this.options) && (e = !1), this.options.enabled = e
                            }
                            this._clean()
                        }
                    }, { key: "setModuleOptions", value: function(t) { this.moduleOptions = t, !0 === this.options.enabled && (this._clean(), void 0 !== this.options.container && (this.container = this.options.container), this._create()) } }, {
                        key: "_create",
                        value: function() {
                            this._clean(), this.changedOptions = [];
                            var t = sr(this.options),
                                e = 0,
                                n = !1;
                            for (var i in this.configureOptions) Object.prototype.hasOwnProperty.call(this.configureOptions, i) && (this.allowCreation = !1, n = !1, "function" == typeof t ? n = (n = t(i, [])) || this._handleObject(this.configureOptions[i], [i], !0) : !0 !== t && -1 === pr(t).call(t, i) || (n = !0), !1 !== n && (this.allowCreation = !0, e > 0 && this._makeItem([]), this._makeHeader(i), this._handleObject(this.configureOptions[i], [i])), e++);
                            this._makeButton(), this._push()
                        }
                    }, {
                        key: "_push",
                        value: function() {
                            this.wrapper = document.createElement("div"), this.wrapper.className = "vis-configuration-wrapper", this.container.appendChild(this.wrapper);
                            for (var t = 0; t < this.domElements.length; t++) this.wrapper.appendChild(this.domElements[t]);
                            this._showPopupIfNeeded()
                        }
                    }, {
                        key: "_clean",
                        value: function() {
                            for (var t = 0; t < this.domElements.length; t++) this.wrapper.removeChild(this.domElements[t]);
                            void 0 !== this.wrapper && (this.container.removeChild(this.wrapper), this.wrapper = void 0), this.domElements = [], this._removePopup()
                        }
                    }, {
                        key: "_getValue",
                        value: function(t) {
                            for (var e = this.moduleOptions, n = 0; n < t.length; n++) {
                                if (void 0 === e[t[n]]) { e = void 0; break }
                                e = e[t[n]]
                            }
                            return e
                        }
                    }, {
                        key: "_makeItem",
                        value: function(t) {
                            if (!0 === this.allowCreation) {
                                var e = document.createElement("div");
                                e.className = "vis-configuration vis-config-item vis-config-s" + t.length;
                                for (var n = arguments.length, i = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++) i[r - 1] = arguments[r];
                                return zi(i).call(i, (function(t) { e.appendChild(t) })), this.domElements.push(e), this.domElements.length
                            }
                            return 0
                        }
                    }, {
                        key: "_makeHeader",
                        value: function(t) {
                            var e = document.createElement("div");
                            e.className = "vis-configuration vis-config-header", e.innerHTML = t, this._makeItem([], e)
                        }
                    }, {
                        key: "_makeLabel",
                        value: function(t, e) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
                                i = document.createElement("div");
                            return i.className = "vis-configuration vis-config-label vis-config-s" + e.length, i.innerHTML = !0 === n ? "<i><b>" + t + ":</b></i>" : t + ":", i
                        }
                    }, {
                        key: "_makeDropdown",
                        value: function(t, e, n) {
                            var i = document.createElement("select");
                            i.className = "vis-configuration vis-config-select";
                            var r = 0;
                            void 0 !== e && -1 !== pr(t).call(t, e) && (r = pr(t).call(t, e));
                            for (var o = 0; o < t.length; o++) {
                                var g = document.createElement("option");
                                g.value = t[o], o === r && (g.selected = "selected"), g.innerHTML = t[o], i.appendChild(g)
                            }
                            var s = this;
                            i.onchange = function() { s._update(this.value, n) };
                            var A = this._makeLabel(n[n.length - 1], n);
                            this._makeItem(n, A, i)
                        }
                    }, {
                        key: "_makeRange",
                        value: function(t, e, n) {
                            var i = t[0],
                                r = t[1],
                                o = t[2],
                                g = t[3],
                                s = document.createElement("input");
                            s.className = "vis-configuration vis-config-range";
                            try { s.type = "range", s.min = r, s.max = o } catch (t) {}
                            s.step = g;
                            var A = "",
                                a = 0;
                            if (void 0 !== e) { e < 0 && 1.2 * e < r ? (s.min = Math.ceil(1.2 * e), a = s.min, A = "range increased") : e / 1.2 < r && (s.min = Math.ceil(e / 1.2), a = s.min, A = "range increased"), 1.2 * e > o && 1 !== o && (s.max = Math.ceil(1.2 * e), a = s.max, A = "range increased"), s.value = e } else s.value = i;
                            var C = document.createElement("input");
                            C.className = "vis-configuration vis-config-rangeinput", C.value = s.value;
                            var I = this;
                            s.onchange = function() { C.value = this.value, I._update(Number(this.value), n) }, s.oninput = function() { C.value = this.value };
                            var u = this._makeLabel(n[n.length - 1], n),
                                c = this._makeItem(n, u, s, C);
                            "" !== A && this.popupHistory[c] !== a && (this.popupHistory[c] = a, this._setupPopup(A, c))
                        }
                    }, {
                        key: "_makeButton",
                        value: function() {
                            var t = this;
                            if (!0 === this.options.showButton) {
                                var e = document.createElement("div");
                                e.className = "vis-configuration vis-config-button", e.innerHTML = "generate options", e.onclick = function() { t._printOptions() }, e.onmouseover = function() { e.className = "vis-configuration vis-config-button hover" }, e.onmouseout = function() { e.className = "vis-configuration vis-config-button" }, this.optionsContainer = document.createElement("div"), this.optionsContainer.className = "vis-configuration vis-config-option-container", this.domElements.push(this.optionsContainer), this.domElements.push(e)
                            }
                        }
                    }, {
                        key: "_setupPopup",
                        value: function(t, e) {
                            var n = this;
                            if (!0 === this.initialized && !0 === this.allowCreation && this.popupCounter < this.popupLimit) {
                                var i = document.createElement("div");
                                i.id = "vis-configuration-popup", i.className = "vis-configuration-popup", i.innerHTML = t, i.onclick = function() { n._removePopup() }, this.popupCounter += 1, this.popupDiv = { html: i, index: e }
                            }
                        }
                    }, { key: "_removePopup", value: function() { void 0 !== this.popupDiv.html && (this.popupDiv.html.parentNode.removeChild(this.popupDiv.html), clearTimeout(this.popupDiv.hideTimeout), clearTimeout(this.popupDiv.deleteTimeout), this.popupDiv = {}) } }, {
                        key: "_showPopupIfNeeded",
                        value: function() {
                            var t = this;
                            if (void 0 !== this.popupDiv.html) {
                                var e = this.domElements[this.popupDiv.index].getBoundingClientRect();
                                this.popupDiv.html.style.left = e.left + "px", this.popupDiv.html.style.top = e.top - 30 + "px", document.body.appendChild(this.popupDiv.html), this.popupDiv.hideTimeout = BA((function() { t.popupDiv.html.style.opacity = 0 }), 1500), this.popupDiv.deleteTimeout = BA((function() { t._removePopup() }), 1800)
                            }
                        }
                    }, {
                        key: "_makeCheckbox",
                        value: function(t, e, n) {
                            var i = document.createElement("input");
                            i.type = "checkbox", i.className = "vis-configuration vis-config-checkbox", i.checked = t, void 0 !== e && (i.checked = e, e !== t && ("object" === io(t) ? e !== t.enabled && this.changedOptions.push({ path: n, value: e }) : this.changedOptions.push({ path: n, value: e })));
                            var r = this;
                            i.onchange = function() { r._update(this.checked, n) };
                            var o = this._makeLabel(n[n.length - 1], n);
                            this._makeItem(n, o, i)
                        }
                    }, {
                        key: "_makeTextInput",
                        value: function(t, e, n) {
                            var i = document.createElement("input");
                            i.type = "text", i.className = "vis-configuration vis-config-text", i.value = e, e !== t && this.changedOptions.push({ path: n, value: e });
                            var r = this;
                            i.onchange = function() { r._update(this.value, n) };
                            var o = this._makeLabel(n[n.length - 1], n);
                            this._makeItem(n, o, i)
                        }
                    }, {
                        key: "_makeColorField",
                        value: function(t, e, n) {
                            var i = this,
                                r = t[1],
                                o = document.createElement("div");
                            "none" !== (e = void 0 === e ? r : e) ? (o.className = "vis-configuration vis-config-colorBlock", o.style.backgroundColor = e) : o.className = "vis-configuration vis-config-colorBlock none", e = void 0 === e ? r : e, o.onclick = function() { i._showColorPicker(e, o, n) };
                            var g = this._makeLabel(n[n.length - 1], n);
                            this._makeItem(n, g, o)
                        }
                    }, {
                        key: "_showColorPicker",
                        value: function(t, e, n) {
                            var i = this;
                            e.onclick = function() {}, this.colorPicker.insertTo(e), this.colorPicker.show(), this.colorPicker.setColor(t), this.colorPicker.setUpdateCallback((function(t) {
                                var r = "rgba(" + t.r + "," + t.g + "," + t.b + "," + t.a + ")";
                                e.style.backgroundColor = r, i._update(r, n)
                            })), this.colorPicker.setCloseCallback((function() { e.onclick = function() { i._showColorPicker(t, e, n) } }))
                        }
                    }, {
                        key: "_handleObject",
                        value: function(t) {
                            var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
                                n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
                                i = !1,
                                r = sr(this.options),
                                o = !1;
                            for (var g in t)
                                if (Object.prototype.hasOwnProperty.call(t, g)) {
                                    i = !0;
                                    var s = t[g],
                                        A = Lo(e, g);
                                    if ("function" == typeof r && !1 === (i = r(g, e)) && !(s instanceof Array) && "string" != typeof s && "boolean" != typeof s && s instanceof Object && (this.allowCreation = !1, i = this._handleObject(s, A, !0), this.allowCreation = !1 === n), !1 !== i) {
                                        o = !0;
                                        var a = this._getValue(A);
                                        if (s instanceof Array) this._handleArray(s, a, A);
                                        else if ("string" == typeof s) this._makeTextInput(s, a, A);
                                        else if ("boolean" == typeof s) this._makeCheckbox(s, a, A);
                                        else if (s instanceof Object) {
                                            var C = !0;
                                            if (-1 !== pr(e).call(e, "physics") && this.moduleOptions.physics.solver !== g && "wind" !== g && (C = !1), !0 === C)
                                                if (void 0 !== s.enabled) {
                                                    var I = Lo(A, "enabled"),
                                                        u = this._getValue(I);
                                                    if (!0 === u) {
                                                        var c = this._makeLabel(g, A, !0);
                                                        this._makeItem(A, c), o = this._handleObject(s, A) || o
                                                    } else this._makeCheckbox(s, u, A)
                                                } else {
                                                    var l = this._makeLabel(g, A, !0);
                                                    this._makeItem(A, l), o = this._handleObject(s, A) || o
                                                }
                                        } else console.error("dont know how to handle", s, g, A)
                                    }
                                }
                            return o
                        }
                    }, { key: "_handleArray", value: function(t, e, n) { "string" == typeof t[0] && "color" === t[0] ? (this._makeColorField(t, e, n), t[1] !== e && this.changedOptions.push({ path: n, value: e })) : "string" == typeof t[0] ? (this._makeDropdown(t, e, n), t[0] !== e && this.changedOptions.push({ path: n, value: e })) : "number" == typeof t[0] && (this._makeRange(t, e, n), t[0] !== e && this.changedOptions.push({ path: n, value: Number(e) })) } }, {
                        key: "_update",
                        value: function(t, e) {
                            var n = this._constructOptions(t, e);
                            this.parent.body && this.parent.body.emitter && this.parent.body.emitter.emit && this.parent.body.emitter.emit("configChange", n), this.initialized = !0, this.parent.setOptions(n)
                        }
                    }, {
                        key: "_constructOptions",
                        value: function(t, e) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                                i = n;
                            t = "false" !== (t = "true" === t || t) && t;
                            for (var r = 0; r < e.length; r++) "global" !== e[r] && (void 0 === i[e[r]] && (i[e[r]] = {}), r !== e.length - 1 ? i = i[e[r]] : i[e[r]] = t);
                            return n
                        }
                    }, {
                        key: "_printOptions",
                        value: function() {
                            var t = this.getOptions();
                            this.optionsContainer.innerHTML = "<pre>var options = " + ca(t, null, 2) + "</pre>"
                        }
                    }, { key: "getOptions", value: function() { for (var t = {}, e = 0; e < this.changedOptions.length; e++) this._constructOptions(this.changedOptions[e].value, this.changedOptions[e].path, t); return t } }]), t
                }(),
                Pc = "string",
                Mc = "boolean",
                jc = "number",
                Fc = "object",
                zc = ["arrow", "bar", "box", "circle", "crow", "curve", "diamond", "image", "inv_curve", "inv_triangle", "triangle", "vee"],
                Lc = { configure: { enabled: { boolean: Mc }, filter: { boolean: Mc, string: Pc, array: "array", function: "function" }, container: { dom: "dom" }, showButton: { boolean: Mc }, __type__: { object: Fc, boolean: Mc, string: Pc, array: "array", function: "function" } }, edges: { arrows: { to: { enabled: { boolean: Mc }, scaleFactor: { number: jc }, type: { string: zc }, imageHeight: { number: jc }, imageWidth: { number: jc }, src: { string: Pc }, __type__: { object: Fc, boolean: Mc } }, middle: { enabled: { boolean: Mc }, scaleFactor: { number: jc }, type: { string: zc }, imageWidth: { number: jc }, imageHeight: { number: jc }, src: { string: Pc }, __type__: { object: Fc, boolean: Mc } }, from: { enabled: { boolean: Mc }, scaleFactor: { number: jc }, type: { string: zc }, imageWidth: { number: jc }, imageHeight: { number: jc }, src: { string: Pc }, __type__: { object: Fc, boolean: Mc } }, __type__: { string: ["from", "to", "middle"], object: Fc } }, endPointOffset: { from: { number: jc }, to: { number: jc }, __type__: { object: Fc, number: jc } }, arrowStrikethrough: { boolean: Mc }, background: { enabled: { boolean: Mc }, color: { string: Pc }, size: { number: jc }, dashes: { boolean: Mc, array: "array" }, __type__: { object: Fc, boolean: Mc } }, chosen: { label: { boolean: Mc, function: "function" }, edge: { boolean: Mc, function: "function" }, __type__: { object: Fc, boolean: Mc } }, color: { color: { string: Pc }, highlight: { string: Pc }, hover: { string: Pc }, inherit: { string: ["from", "to", "both"], boolean: Mc }, opacity: { number: jc }, __type__: { object: Fc, string: Pc } }, dashes: { boolean: Mc, array: "array" }, font: { color: { string: Pc }, size: { number: jc }, face: { string: Pc }, background: { string: Pc }, strokeWidth: { number: jc }, strokeColor: { string: Pc }, align: { string: ["horizontal", "top", "middle", "bottom"] }, vadjust: { number: jc }, multi: { boolean: Mc, string: Pc }, bold: { color: { string: Pc }, size: { number: jc }, face: { string: Pc }, mod: { string: Pc }, vadjust: { number: jc }, __type__: { object: Fc, string: Pc } }, boldital: { color: { string: Pc }, size: { number: jc }, face: { string: Pc }, mod: { string: Pc }, vadjust: { number: jc }, __type__: { object: Fc, string: Pc } }, ital: { color: { string: Pc }, size: { number: jc }, face: { string: Pc }, mod: { string: Pc }, vadjust: { number: jc }, __type__: { object: Fc, string: Pc } }, mono: { color: { string: Pc }, size: { number: jc }, face: { string: Pc }, mod: { string: Pc }, vadjust: { number: jc }, __type__: { object: Fc, string: Pc } }, __type__: { object: Fc, string: Pc } }, hidden: { boolean: Mc }, hoverWidth: { function: "function", number: jc }, label: { string: Pc, undefined: "undefined" }, labelHighlightBold: { boolean: Mc }, length: { number: jc, undefined: "undefined" }, physics: { boolean: Mc }, scaling: { min: { number: jc }, max: { number: jc }, label: { enabled: { boolean: Mc }, min: { number: jc }, max: { number: jc }, maxVisible: { number: jc }, drawThreshold: { number: jc }, __type__: { object: Fc, boolean: Mc } }, customScalingFunction: { function: "function" }, __type__: { object: Fc } }, selectionWidth: { function: "function", number: jc }, selfReferenceSize: { number: jc }, selfReference: { size: { number: jc }, angle: { number: jc }, renderBehindTheNode: { boolean: Mc }, __type__: { object: Fc } }, shadow: { enabled: { boolean: Mc }, color: { string: Pc }, size: { number: jc }, x: { number: jc }, y: { number: jc }, __type__: { object: Fc, boolean: Mc } }, smooth: { enabled: { boolean: Mc }, type: { string: ["dynamic", "continuous", "discrete", "diagonalCross", "straightCross", "horizontal", "vertical", "curvedCW", "curvedCCW", "cubicBezier"] }, roundness: { number: jc }, forceDirection: { string: ["horizontal", "vertical", "none"], boolean: Mc }, __type__: { object: Fc, boolean: Mc } }, title: { string: Pc, undefined: "undefined" }, width: { number: jc }, widthConstraint: { maximum: { number: jc }, __type__: { object: Fc, boolean: Mc, number: jc } }, value: { number: jc, undefined: "undefined" }, __type__: { object: Fc } }, groups: { useDefaultGroups: { boolean: Mc }, __any__: "get from nodes, will be overwritten below", __type__: { object: Fc } }, interaction: { dragNodes: { boolean: Mc }, dragView: { boolean: Mc }, hideEdgesOnDrag: { boolean: Mc }, hideEdgesOnZoom: { boolean: Mc }, hideNodesOnDrag: { boolean: Mc }, hover: { boolean: Mc }, keyboard: { enabled: { boolean: Mc }, speed: { x: { number: jc }, y: { number: jc }, zoom: { number: jc }, __type__: { object: Fc } }, bindToWindow: { boolean: Mc }, __type__: { object: Fc, boolean: Mc } }, multiselect: { boolean: Mc }, navigationButtons: { boolean: Mc }, selectable: { boolean: Mc }, selectConnectedEdges: { boolean: Mc }, hoverConnectedEdges: { boolean: Mc }, tooltipDelay: { number: jc }, zoomView: { boolean: Mc }, zoomSpeed: { number: jc }, __type__: { object: Fc } }, layout: { randomSeed: { undefined: "undefined", number: jc, string: Pc }, improvedLayout: { boolean: Mc }, clusterThreshold: { number: jc }, hierarchical: { enabled: { boolean: Mc }, levelSeparation: { number: jc }, nodeSpacing: { number: jc }, treeSpacing: { number: jc }, blockShifting: { boolean: Mc }, edgeMinimization: { boolean: Mc }, parentCentralization: { boolean: Mc }, direction: { string: ["UD", "DU", "LR", "RL"] }, sortMethod: { string: ["hubsize", "directed"] }, shakeTowards: { string: ["leaves", "roots"] }, __type__: { object: Fc, boolean: Mc } }, __type__: { object: Fc } }, manipulation: { enabled: { boolean: Mc }, initiallyActive: { boolean: Mc }, addNode: { boolean: Mc, function: "function" }, addEdge: { boolean: Mc, function: "function" }, editNode: { function: "function" }, editEdge: { editWithoutDrag: { function: "function" }, __type__: { object: Fc, boolean: Mc, function: "function" } }, deleteNode: { boolean: Mc, function: "function" }, deleteEdge: { boolean: Mc, function: "function" }, controlNodeStyle: "get from nodes, will be overwritten below", __type__: { object: Fc, boolean: Mc } }, nodes: { borderWidth: { number: jc }, borderWidthSelected: { number: jc, undefined: "undefined" }, brokenImage: { string: Pc, undefined: "undefined" }, chosen: { label: { boolean: Mc, function: "function" }, node: { boolean: Mc, function: "function" }, __type__: { object: Fc, boolean: Mc } }, color: { border: { string: Pc }, background: { string: Pc }, highlight: { border: { string: Pc }, background: { string: Pc }, __type__: { object: Fc, string: Pc } }, hover: { border: { string: Pc }, background: { string: Pc }, __type__: { object: Fc, string: Pc } }, __type__: { object: Fc, string: Pc } }, opacity: { number: jc, undefined: "undefined" }, fixed: { x: { boolean: Mc }, y: { boolean: Mc }, __type__: { object: Fc, boolean: Mc } }, font: { align: { string: Pc }, color: { string: Pc }, size: { number: jc }, face: { string: Pc }, background: { string: Pc }, strokeWidth: { number: jc }, strokeColor: { string: Pc }, vadjust: { number: jc }, multi: { boolean: Mc, string: Pc }, bold: { color: { string: Pc }, size: { number: jc }, face: { string: Pc }, mod: { string: Pc }, vadjust: { number: jc }, __type__: { object: Fc, string: Pc } }, boldital: { color: { string: Pc }, size: { number: jc }, face: { string: Pc }, mod: { string: Pc }, vadjust: { number: jc }, __type__: { object: Fc, string: Pc } }, ital: { color: { string: Pc }, size: { number: jc }, face: { string: Pc }, mod: { string: Pc }, vadjust: { number: jc }, __type__: { object: Fc, string: Pc } }, mono: { color: { string: Pc }, size: { number: jc }, face: { string: Pc }, mod: { string: Pc }, vadjust: { number: jc }, __type__: { object: Fc, string: Pc } }, __type__: { object: Fc, string: Pc } }, group: { string: Pc, number: jc, undefined: "undefined" }, heightConstraint: { minimum: { number: jc }, valign: { string: Pc }, __type__: { object: Fc, boolean: Mc, number: jc } }, hidden: { boolean: Mc }, icon: { face: { string: Pc }, code: { string: Pc }, size: { number: jc }, color: { string: Pc }, weight: { string: Pc, number: jc }, __type__: { object: Fc } }, id: { string: Pc, number: jc }, image: { selected: { string: Pc, undefined: "undefined" }, unselected: { string: Pc, undefined: "undefined" }, __type__: { object: Fc, string: Pc } }, imagePadding: { top: { number: jc }, right: { number: jc }, bottom: { number: jc }, left: { number: jc }, __type__: { object: Fc, number: jc } }, label: { string: Pc, undefined: "undefined" }, labelHighlightBold: { boolean: Mc }, level: { number: jc, undefined: "undefined" }, margin: { top: { number: jc }, right: { number: jc }, bottom: { number: jc }, left: { number: jc }, __type__: { object: Fc, number: jc } }, mass: { number: jc }, physics: { boolean: Mc }, scaling: { min: { number: jc }, max: { number: jc }, label: { enabled: { boolean: Mc }, min: { number: jc }, max: { number: jc }, maxVisible: { number: jc }, drawThreshold: { number: jc }, __type__: { object: Fc, boolean: Mc } }, customScalingFunction: { function: "function" }, __type__: { object: Fc } }, shadow: { enabled: { boolean: Mc }, color: { string: Pc }, size: { number: jc }, x: { number: jc }, y: { number: jc }, __type__: { object: Fc, boolean: Mc } }, shape: { string: ["custom", "ellipse", "circle", "database", "box", "text", "image", "circularImage", "diamond", "dot", "star", "triangle", "triangleDown", "square", "icon", "hexagon"] }, customRenderer: { function: "function" }, shapeProperties: { borderDashes: { boolean: Mc, array: "array" }, borderRadius: { number: jc }, interpolation: { boolean: Mc }, useImageSize: { boolean: Mc }, useBorderWithImage: { boolean: Mc }, coordinateOrigin: { string: ["center", "top-left"] }, __type__: { object: Fc } }, size: { number: jc }, title: { string: Pc, dom: "dom", undefined: "undefined" }, value: { number: jc, undefined: "undefined" }, widthConstraint: { minimum: { number: jc }, maximum: { number: jc }, __type__: { object: Fc, boolean: Mc, number: jc } }, x: { number: jc }, y: { number: jc }, __type__: { object: Fc } }, physics: { enabled: { boolean: Mc }, barnesHut: { theta: { number: jc }, gravitationalConstant: { number: jc }, centralGravity: { number: jc }, springLength: { number: jc }, springConstant: { number: jc }, damping: { number: jc }, avoidOverlap: { number: jc }, __type__: { object: Fc } }, forceAtlas2Based: { theta: { number: jc }, gravitationalConstant: { number: jc }, centralGravity: { number: jc }, springLength: { number: jc }, springConstant: { number: jc }, damping: { number: jc }, avoidOverlap: { number: jc }, __type__: { object: Fc } }, repulsion: { centralGravity: { number: jc }, springLength: { number: jc }, springConstant: { number: jc }, nodeDistance: { number: jc }, damping: { number: jc }, __type__: { object: Fc } }, hierarchicalRepulsion: { centralGravity: { number: jc }, springLength: { number: jc }, springConstant: { number: jc }, nodeDistance: { number: jc }, damping: { number: jc }, avoidOverlap: { number: jc }, __type__: { object: Fc } }, maxVelocity: { number: jc }, minVelocity: { number: jc }, solver: { string: ["barnesHut", "repulsion", "hierarchicalRepulsion", "forceAtlas2Based"] }, stabilization: { enabled: { boolean: Mc }, iterations: { number: jc }, updateInterval: { number: jc }, onlyDynamicEdges: { boolean: Mc }, fit: { boolean: Mc }, __type__: { object: Fc, boolean: Mc } }, timestep: { number: jc }, adaptiveTimestep: { boolean: Mc }, wind: { x: { number: jc }, y: { number: jc }, __type__: { object: Fc } }, __type__: { object: Fc, boolean: Mc } }, autoResize: { boolean: Mc }, clickToUse: { boolean: Mc }, locale: { string: Pc }, locales: { __any__: { any: "any" }, __type__: { object: Fc } }, height: { string: Pc }, width: { string: Pc }, __type__: { object: Fc } };
            Lc.groups.__any__ = Lc.nodes, Lc.manipulation.controlNodeStyle = Lc.nodes;
            var Bc = { nodes: { borderWidth: [1, 0, 10, 1], borderWidthSelected: [2, 0, 10, 1], color: { border: ["color", "#2B7CE9"], background: ["color", "#97C2FC"], highlight: { border: ["color", "#2B7CE9"], background: ["color", "#D2E5FF"] }, hover: { border: ["color", "#2B7CE9"], background: ["color", "#D2E5FF"] } }, opacity: [0, 0, 1, .1], fixed: { x: !1, y: !1 }, font: { color: ["color", "#343434"], size: [14, 0, 100, 1], face: ["arial", "verdana", "tahoma"], background: ["color", "none"], strokeWidth: [0, 0, 50, 1], strokeColor: ["color", "#ffffff"] }, hidden: !1, labelHighlightBold: !0, physics: !0, scaling: { min: [10, 0, 200, 1], max: [30, 0, 200, 1], label: { enabled: !1, min: [14, 0, 200, 1], max: [30, 0, 200, 1], maxVisible: [30, 0, 200, 1], drawThreshold: [5, 0, 20, 1] } }, shadow: { enabled: !1, color: "rgba(0,0,0,0.5)", size: [10, 0, 20, 1], x: [5, -30, 30, 1], y: [5, -30, 30, 1] }, shape: ["ellipse", "box", "circle", "database", "diamond", "dot", "square", "star", "text", "triangle", "triangleDown", "hexagon"], shapeProperties: { borderDashes: !1, borderRadius: [6, 0, 20, 1], interpolation: !0, useImageSize: !1 }, size: [25, 0, 200, 1] }, edges: { arrows: { to: { enabled: !1, scaleFactor: [1, 0, 3, .05], type: "arrow" }, middle: { enabled: !1, scaleFactor: [1, 0, 3, .05], type: "arrow" }, from: { enabled: !1, scaleFactor: [1, 0, 3, .05], type: "arrow" } }, endPointOffset: { from: [0, -10, 10, 1], to: [0, -10, 10, 1] }, arrowStrikethrough: !0, color: { color: ["color", "#848484"], highlight: ["color", "#848484"], hover: ["color", "#848484"], inherit: ["from", "to", "both", !0, !1], opacity: [1, 0, 1, .05] }, dashes: !1, font: { color: ["color", "#343434"], size: [14, 0, 100, 1], face: ["arial", "verdana", "tahoma"], background: ["color", "none"], strokeWidth: [2, 0, 50, 1], strokeColor: ["color", "#ffffff"], align: ["horizontal", "top", "middle", "bottom"] }, hidden: !1, hoverWidth: [1.5, 0, 5, .1], labelHighlightBold: !0, physics: !0, scaling: { min: [1, 0, 100, 1], max: [15, 0, 100, 1], label: { enabled: !0, min: [14, 0, 200, 1], max: [30, 0, 200, 1], maxVisible: [30, 0, 200, 1], drawThreshold: [5, 0, 20, 1] } }, selectionWidth: [1.5, 0, 5, .1], selfReferenceSize: [20, 0, 200, 1], selfReference: { size: [20, 0, 200, 1], angle: [Math.PI / 2, -6 * Math.PI, 6 * Math.PI, Math.PI / 8], renderBehindTheNode: !0 }, shadow: { enabled: !1, color: "rgba(0,0,0,0.5)", size: [10, 0, 20, 1], x: [5, -30, 30, 1], y: [5, -30, 30, 1] }, smooth: { enabled: !0, type: ["dynamic", "continuous", "discrete", "diagonalCross", "straightCross", "horizontal", "vertical", "curvedCW", "curvedCCW", "cubicBezier"], forceDirection: ["horizontal", "vertical", "none"], roundness: [.5, 0, 1, .05] }, width: [1, 0, 30, 1] }, layout: { hierarchical: { enabled: !1, levelSeparation: [150, 20, 500, 5], nodeSpacing: [100, 20, 500, 5], treeSpacing: [200, 20, 500, 5], blockShifting: !0, edgeMinimization: !0, parentCentralization: !0, direction: ["UD", "DU", "LR", "RL"], sortMethod: ["hubsize", "directed"], shakeTowards: ["leaves", "roots"] } }, interaction: { dragNodes: !0, dragView: !0, hideEdgesOnDrag: !1, hideEdgesOnZoom: !1, hideNodesOnDrag: !1, hover: !1, keyboard: { enabled: !1, speed: { x: [10, 0, 40, 1], y: [10, 0, 40, 1], zoom: [.02, 0, .1, .005] }, bindToWindow: !0 }, multiselect: !1, navigationButtons: !1, selectable: !0, selectConnectedEdges: !0, hoverConnectedEdges: !0, tooltipDelay: [300, 0, 1e3, 25], zoomView: !0, zoomSpeed: [1, .1, 2, .1] }, manipulation: { enabled: !1, initiallyActive: !1 }, physics: { enabled: !0, barnesHut: { theta: [.5, .1, 1, .05], gravitationalConstant: [-2e3, -3e4, 0, 50], centralGravity: [.3, 0, 10, .05], springLength: [95, 0, 500, 5], springConstant: [.04, 0, 1.2, .005], damping: [.09, 0, 1, .01], avoidOverlap: [0, 0, 1, .01] }, forceAtlas2Based: { theta: [.5, .1, 1, .05], gravitationalConstant: [-50, -500, 0, 1], centralGravity: [.01, 0, 1, .005], springLength: [95, 0, 500, 5], springConstant: [.08, 0, 1.2, .005], damping: [.4, 0, 1, .01], avoidOverlap: [0, 0, 1, .01] }, repulsion: { centralGravity: [.2, 0, 10, .05], springLength: [200, 0, 500, 5], springConstant: [.05, 0, 1.2, .005], nodeDistance: [100, 0, 500, 5], damping: [.09, 0, 1, .01] }, hierarchicalRepulsion: { centralGravity: [.2, 0, 10, .05], springLength: [100, 0, 500, 5], springConstant: [.01, 0, 1.2, .005], nodeDistance: [120, 0, 500, 5], damping: [.09, 0, 1, .01], avoidOverlap: [0, 0, 1, .01] }, maxVelocity: [50, 0, 150, 1], minVelocity: [.1, .01, .5, .01], solver: ["barnesHut", "forceAtlas2Based", "repulsion", "hierarchicalRepulsion"], timestep: [.5, .01, 1, .01], wind: { x: [0, -10, 10, .1], y: [0, -10, 10, .1] } } },
                Zc = function() {
                    function t() { DA(this, t) }
                    return RA(t, [{
                        key: "getDistances",
                        value: function(t, e, n) {
                            for (var i = {}, r = t.edges, o = 0; o < e.length; o++) {
                                var g = {};
                                i[e[o]] = g;
                                for (var s = 0; s < e.length; s++) g[e[s]] = o == s ? 0 : 1e9
                            }
                            for (var A = 0; A < n.length; A++) { var a = r[n[A]];!0 === a.connected && void 0 !== i[a.fromId] && void 0 !== i[a.toId] && (i[a.fromId][a.toId] = 1, i[a.toId][a.fromId] = 1) }
                            for (var C = e.length, I = 0; I < C; I++)
                                for (var u = e[I], c = i[u], l = 0; l < C - 1; l++)
                                    for (var h = e[l], d = i[h], f = l + 1; f < C; f++) {
                                        var p = e[f],
                                            v = i[p],
                                            y = Math.min(d[p], d[u] + c[p]);
                                        d[p] = y, v[h] = y
                                    }
                            return i
                        }
                    }]), t
                }(),
                Vc = function() {
                    function t(e, n, i) { DA(this, t), this.body = e, this.springLength = n, this.springConstant = i, this.distanceSolver = new Zc }
                    return RA(t, [{ key: "setOptions", value: function(t) { t && (t.springLength && (this.springLength = t.springLength), t.springConstant && (this.springConstant = t.springConstant)) } }, {
                        key: "solve",
                        value: function(t, e) {
                            var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
                                i = this.distanceSolver.getDistances(this.body, t, e);
                            this._createL_matrix(i), this._createK_matrix(i), this._createE_matrix();
                            for (var r = .01, o = 1, g = 0, s = Math.max(1e3, Math.min(10 * this.body.nodeIndices.length, 6e3)), A = 5, a = 1e9, C = 0, I = 0, u = 0, c = 0, l = 0; a > r && g < s;) {
                                g += 1;
                                var h = this._getHighestEnergyNode(n),
                                    d = Gr(h, 4);
                                for (C = d[0], a = d[1], I = d[2], u = d[3], c = a, l = 0; c > o && l < A;) {
                                    l += 1, this._moveNode(C, I, u);
                                    var f = this._getEnergy(C),
                                        p = Gr(f, 3);
                                    c = p[0], I = p[1], u = p[2]
                                }
                            }
                        }
                    }, {
                        key: "_getHighestEnergyNode",
                        value: function(t) {
                            for (var e = this.body.nodeIndices, n = this.body.nodes, i = 0, r = e[0], o = 0, g = 0, s = 0; s < e.length; s++) {
                                var A = e[s];
                                if (!1 === n[A].predefinedPosition || !0 === n[A].isCluster && !0 === t || !0 === n[A].options.fixed.x || !0 === n[A].options.fixed.y) {
                                    var a = this._getEnergy(A),
                                        C = Gr(a, 3),
                                        I = C[0],
                                        u = C[1],
                                        c = C[2];
                                    i < I && (i = I, r = A, o = u, g = c)
                                }
                            }
                            return [r, i, o, g]
                        }
                    }, {
                        key: "_getEnergy",
                        value: function(t) {
                            var e = Gr(this.E_sums[t], 2),
                                n = e[0],
                                i = e[1];
                            return [Math.sqrt(Math.pow(n, 2) + Math.pow(i, 2)), n, i]
                        }
                    }, {
                        key: "_moveNode",
                        value: function(t, e, n) {
                            for (var i = this.body.nodeIndices, r = this.body.nodes, o = 0, g = 0, s = 0, A = r[t].x, a = r[t].y, C = this.K_matrix[t], I = this.L_matrix[t], u = 0; u < i.length; u++) {
                                var c = i[u];
                                if (c !== t) {
                                    var l = r[c].x,
                                        h = r[c].y,
                                        d = C[c],
                                        f = I[c],
                                        p = 1 / Math.pow(Math.pow(A - l, 2) + Math.pow(a - h, 2), 1.5);
                                    o += d * (1 - f * Math.pow(a - h, 2) * p), g += d * (f * (A - l) * (a - h) * p), s += d * (1 - f * Math.pow(A - l, 2) * p)
                                }
                            }
                            var v = (e / o + n / g) / (g / o - s / g),
                                y = -(g * v + e) / o;
                            r[t].x += y, r[t].y += v, this._updateE_matrix(t)
                        }
                    }, {
                        key: "_createL_matrix",
                        value: function(t) {
                            var e = this.body.nodeIndices,
                                n = this.springLength;
                            this.L_matrix = [];
                            for (var i = 0; i < e.length; i++) { this.L_matrix[e[i]] = {}; for (var r = 0; r < e.length; r++) this.L_matrix[e[i]][e[r]] = n * t[e[i]][e[r]] }
                        }
                    }, {
                        key: "_createK_matrix",
                        value: function(t) {
                            var e = this.body.nodeIndices,
                                n = this.springConstant;
                            this.K_matrix = [];
                            for (var i = 0; i < e.length; i++) { this.K_matrix[e[i]] = {}; for (var r = 0; r < e.length; r++) this.K_matrix[e[i]][e[r]] = n * Math.pow(t[e[i]][e[r]], -2) }
                        }
                    }, {
                        key: "_createE_matrix",
                        value: function() {
                            var t = this.body.nodeIndices,
                                e = this.body.nodes;
                            this.E_matrix = {}, this.E_sums = {};
                            for (var n = 0; n < t.length; n++) this.E_matrix[t[n]] = [];
                            for (var i = 0; i < t.length; i++) {
                                for (var r = t[i], o = e[r].x, g = e[r].y, s = 0, A = 0, a = i; a < t.length; a++) {
                                    var C = t[a];
                                    if (C !== r) {
                                        var I = e[C].x,
                                            u = e[C].y,
                                            c = 1 / Math.sqrt(Math.pow(o - I, 2) + Math.pow(g - u, 2));
                                        this.E_matrix[r][a] = [this.K_matrix[r][C] * (o - I - this.L_matrix[r][C] * (o - I) * c), this.K_matrix[r][C] * (g - u - this.L_matrix[r][C] * (g - u) * c)], this.E_matrix[C][i] = this.E_matrix[r][a], s += this.E_matrix[r][a][0], A += this.E_matrix[r][a][1]
                                    }
                                }
                                this.E_sums[r] = [s, A]
                            }
                        }
                    }, {
                        key: "_updateE_matrix",
                        value: function(t) {
                            for (var e = this.body.nodeIndices, n = this.body.nodes, i = this.E_matrix[t], r = this.K_matrix[t], o = this.L_matrix[t], g = n[t].x, s = n[t].y, A = 0, a = 0, C = 0; C < e.length; C++) {
                                var I = e[C];
                                if (I !== t) {
                                    var u = i[C],
                                        c = u[0],
                                        l = u[1],
                                        h = n[I].x,
                                        d = n[I].y,
                                        f = 1 / Math.sqrt(Math.pow(g - h, 2) + Math.pow(s - d, 2)),
                                        p = r[I] * (g - h - o[I] * (g - h) * f),
                                        v = r[I] * (s - d - o[I] * (s - d) * f);
                                    i[C] = [p, v], A += p, a += v;
                                    var y = this.E_sums[I];
                                    y[0] += p - c, y[1] += v - l
                                }
                            }
                            this.E_sums[t] = [A, a]
                        }
                    }]), t
                }();

            function Yc(t, e, n) {
                var i, r, o, g, s = this;
                if (!(this instanceof Yc)) throw new SyntaxError("Constructor must be called with the new operator");
                this.options = {}, this.defaultOptions = { locale: "en", locales: SA, clickToUse: !1 }, bt(this.options, this.defaultOptions), this.body = { container: t, nodes: {}, nodeIndices: [], edges: {}, edgeIndices: [], emitter: { on: tt(i = this.on).call(i, this), off: tt(r = this.off).call(r, this), emit: tt(o = this.emit).call(o, this), once: tt(g = this.once).call(g, this) }, eventListeners: { onTap: function() {}, onTouch: function() {}, onDoubleTap: function() {}, onHold: function() {}, onDragStart: function() {}, onDrag: function() {}, onDragEnd: function() {}, onMouseWheel: function() {}, onPinch: function() {}, onMouseMove: function() {}, onRelease: function() {}, onContext: function() {} }, data: { nodes: null, edges: null }, functions: { createNode: function() {}, createEdge: function() {}, getPointer: function() {} }, modules: {}, view: { scale: 1, translation: { x: 0, y: 0 } }, selectionBox: { show: !1, position: { start: { x: 0, y: 0 }, end: { x: 0, y: 0 } } } }, this.bindEventListeners(), this.images = new MA((function() { return s.body.emitter.emit("_requestRedraw") })), this.groups = new jA, this.canvas = new sc(this.body), this.selectionHandler = new uc(this.body, this.canvas), this.interactionHandler = new Ic(this.body, this.canvas, this.selectionHandler), this.view = new Ac(this.body, this.canvas), this.renderer = new ic(this.body, this.canvas), this.physics = new Hu(this.body), this.layoutEngine = new Tc(this.body), this.clustering = new nc(this.body), this.manipulation = new Sc(this.body, this.canvas, this.selectionHandler, this.interactionHandler), this.nodesHandler = new KI(this.body, this.images, this.groups, this.layoutEngine), this.edgesHandler = new ju(this.body, this.images, this.groups), this.body.modules.kamadaKawai = new Vc(this.body, 150, .05), this.body.modules.clustering = this.clustering, this.canvas._create(), this.setOptions(n), this.setData(e)
            }
            Et(Yc.prototype), Yc.prototype.setOptions = function(t) {
                var e = this;
                if (null === t && (t = void 0), void 0 !== t) {
                    !0 === VI.validate(t, Lc) && console.log("%cErrors have been found in the supplied options object.", ZI);
                    if (Mo(["locale", "locales", "clickToUse"], this.options, t), void 0 !== t.locale && (t.locale = function(t, e) {
                            try {
                                var n = e.split(/[-_ \/]/, 2),
                                    i = Gr(n, 2),
                                    r = i[0],
                                    o = i[1],
                                    g = null != r ? r.toLowerCase() : null,
                                    s = null != o ? o.toUpperCase() : null;
                                if (g && s) {
                                    var A, a = g + "-" + s;
                                    if (Object.prototype.hasOwnProperty.call(t, a)) return a;
                                    console.warn(uo(A = "Unknown variant ".concat(s, " of language ")).call(A, g, "."))
                                }
                                if (g) {
                                    var C = g;
                                    if (Object.prototype.hasOwnProperty.call(t, C)) return C;
                                    console.warn("Unknown language ".concat(g))
                                }
                                return console.warn("Unknown locale ".concat(e, ", falling back to English.")), "en"
                            } catch (t) { return console.error(t), console.warn("Unexpected error while normalizing locale ".concat(e, ", falling back to English.")), "en" }
                        }(t.locales || this.options.locales, t.locale)), t = this.layoutEngine.setOptions(t.layout, t), this.canvas.setOptions(t), this.groups.setOptions(t.groups), this.nodesHandler.setOptions(t.nodes), this.edgesHandler.setOptions(t.edges), this.physics.setOptions(t.physics), this.manipulation.setOptions(t.manipulation, t, this.options), this.interactionHandler.setOptions(t.interaction), this.renderer.setOptions(t.interaction), this.selectionHandler.setOptions(t.interaction), void 0 !== t.groups && this.body.emitter.emit("refreshNodes"), "configure" in t && (this.configurator || (this.configurator = new Rc(this, this.body.container, Bc, this.canvas.pixelRatio)), this.configurator.setOptions(t.configure)), this.configurator && !0 === this.configurator.options.enabled) {
                        var n = { nodes: {}, edges: {}, layout: {}, interaction: {}, manipulation: {}, physics: {}, global: {} };
                        Fo(n.nodes, this.nodesHandler.options), Fo(n.edges, this.edgesHandler.options), Fo(n.layout, this.layoutEngine.options), Fo(n.interaction, this.selectionHandler.options), Fo(n.interaction, this.renderer.options), Fo(n.interaction, this.interactionHandler.options), Fo(n.manipulation, this.manipulation.options), Fo(n.physics, this.physics.options), Fo(n.global, this.canvas.options), Fo(n.global, this.options), this.configurator.setModuleOptions(n)
                    }
                    void 0 !== t.clickToUse ? !0 === t.clickToUse ? void 0 === this.activator && (this.activator = new TA(this.canvas.frame), this.activator.on("change", (function() { e.body.emitter.emit("activate") }))) : (void 0 !== this.activator && (this.activator.destroy(), delete this.activator), this.body.emitter.emit("activate")) : this.body.emitter.emit("activate"), this.canvas.setSize(), this.body.emitter.emit("startSimulation")
                }
            }, Yc.prototype._updateVisibleIndices = function() {
                var t = this.body.nodes,
                    e = this.body.edges;
                for (var n in this.body.nodeIndices = [], this.body.edgeIndices = [], t) Object.prototype.hasOwnProperty.call(t, n) && (this.clustering._isClusteredNode(n) || !1 !== t[n].options.hidden || this.body.nodeIndices.push(t[n].id));
                for (var i in e)
                    if (Object.prototype.hasOwnProperty.call(e, i)) {
                        var r = e[i],
                            o = t[r.fromId],
                            g = t[r.toId],
                            s = void 0 !== o && void 0 !== g;
                        !this.clustering._isClusteredEdge(i) && !1 === r.options.hidden && s && !1 === o.options.hidden && !1 === g.options.hidden && this.body.edgeIndices.push(r.id)
                    }
            }, Yc.prototype.bindEventListeners = function() {
                var t = this;
                this.body.emitter.on("_dataChanged", (function() { t.edgesHandler._updateState(), t.body.emitter.emit("_dataUpdated") })), this.body.emitter.on("_dataUpdated", (function() { t.clustering._updateState(), t._updateVisibleIndices(), t._updateValueRange(t.body.nodes), t._updateValueRange(t.body.edges), t.body.emitter.emit("startSimulation"), t.body.emitter.emit("_requestRedraw") }))
            }, Yc.prototype.setData = function(t) {
                if (this.body.emitter.emit("resetPhysics"), this.body.emitter.emit("_resetData"), this.selectionHandler.unselectAll(), t && t.dot && (t.nodes || t.edges)) throw new SyntaxError('Data must contain either parameter "dot" or  parameter pair "nodes" and "edges", but not both.');
                if (this.setOptions(t && t.options), t && t.dot) {
                    console.log("The dot property has been deprecated. Please use the static convertDot method to convert DOT into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertDot(dotString);");
                    var e = Jg(t.dot);
                    this.setData(e)
                } else if (t && t.gephi) {
                    console.log("The gephi property has been deprecated. Please use the static convertGephi method to convert gephi into vis.network format and use the normal data format with nodes and edges. This converter is used like this: var data = vis.network.convertGephi(gephiJson);");
                    var n = $g(t.gephi);
                    this.setData(n)
                } else this.nodesHandler.setData(t && t.nodes, !0), this.edgesHandler.setData(t && t.edges, !0), this.body.emitter.emit("_dataChanged"), this.body.emitter.emit("_dataLoaded"), this.body.emitter.emit("initPhysics")
            }, Yc.prototype.destroy = function() {
                for (var t in this.body.emitter.emit("destroy"), this.body.emitter.off(), this.off(), delete this.groups, delete this.canvas, delete this.selectionHandler, delete this.interactionHandler, delete this.view, delete this.renderer, delete this.physics, delete this.layoutEngine, delete this.clustering, delete this.manipulation, delete this.nodesHandler, delete this.edgesHandler, delete this.configurator, delete this.images, this.body.nodes) Object.prototype.hasOwnProperty.call(this.body.nodes, t) && delete this.body.nodes[t];
                for (var e in this.body.edges) Object.prototype.hasOwnProperty.call(this.body.edges, e) && delete this.body.edges[e];
                So(this.body.container)
            }, Yc.prototype._updateValueRange = function(t) {
                var e, n = void 0,
                    i = void 0,
                    r = 0;
                for (e in t)
                    if (Object.prototype.hasOwnProperty.call(t, e)) {
                        var o = t[e].getValue();
                        void 0 !== o && (n = void 0 === n ? o : Math.min(o, n), i = void 0 === i ? o : Math.max(o, i), r += o)
                    }
                if (void 0 !== n && void 0 !== i)
                    for (e in t) Object.prototype.hasOwnProperty.call(t, e) && t[e].setValueRange(n, i, r)
            }, Yc.prototype.isActive = function() { return !this.activator || this.activator.active }, Yc.prototype.setSize = function() { return this.canvas.setSize.apply(this.canvas, arguments) }, Yc.prototype.canvasToDOM = function() { return this.canvas.canvasToDOM.apply(this.canvas, arguments) }, Yc.prototype.DOMtoCanvas = function() { return this.canvas.DOMtoCanvas.apply(this.canvas, arguments) }, Yc.prototype.findNode = function() { return this.clustering.findNode.apply(this.clustering, arguments) }, Yc.prototype.isCluster = function() { return this.clustering.isCluster.apply(this.clustering, arguments) }, Yc.prototype.openCluster = function() { return this.clustering.openCluster.apply(this.clustering, arguments) }, Yc.prototype.cluster = function() { return this.clustering.cluster.apply(this.clustering, arguments) }, Yc.prototype.getNodesInCluster = function() { return this.clustering.getNodesInCluster.apply(this.clustering, arguments) }, Yc.prototype.clusterByConnection = function() { return this.clustering.clusterByConnection.apply(this.clustering, arguments) }, Yc.prototype.clusterByHubsize = function() { return this.clustering.clusterByHubsize.apply(this.clustering, arguments) }, Yc.prototype.updateClusteredNode = function() { return this.clustering.updateClusteredNode.apply(this.clustering, arguments) }, Yc.prototype.getClusteredEdges = function() { return this.clustering.getClusteredEdges.apply(this.clustering, arguments) }, Yc.prototype.getBaseEdge = function() { return this.clustering.getBaseEdge.apply(this.clustering, arguments) }, Yc.prototype.getBaseEdges = function() { return this.clustering.getBaseEdges.apply(this.clustering, arguments) }, Yc.prototype.updateEdge = function() { return this.clustering.updateEdge.apply(this.clustering, arguments) }, Yc.prototype.clusterOutliers = function() { return this.clustering.clusterOutliers.apply(this.clustering, arguments) }, Yc.prototype.getSeed = function() { return this.layoutEngine.getSeed.apply(this.layoutEngine, arguments) }, Yc.prototype.enableEditMode = function() { return this.manipulation.enableEditMode.apply(this.manipulation, arguments) }, Yc.prototype.disableEditMode = function() { return this.manipulation.disableEditMode.apply(this.manipulation, arguments) }, Yc.prototype.addNodeMode = function() { return this.manipulation.addNodeMode.apply(this.manipulation, arguments) }, Yc.prototype.editNode = function() { return this.manipulation.editNode.apply(this.manipulation, arguments) }, Yc.prototype.editNodeMode = function() { return console.log("Deprecated: Please use editNode instead of editNodeMode."), this.manipulation.editNode.apply(this.manipulation, arguments) }, Yc.prototype.addEdgeMode = function() { return this.manipulation.addEdgeMode.apply(this.manipulation, arguments) }, Yc.prototype.editEdgeMode = function() { return this.manipulation.editEdgeMode.apply(this.manipulation, arguments) }, Yc.prototype.deleteSelected = function() { return this.manipulation.deleteSelected.apply(this.manipulation, arguments) }, Yc.prototype.getPositions = function() { return this.nodesHandler.getPositions.apply(this.nodesHandler, arguments) }, Yc.prototype.getPosition = function() { return this.nodesHandler.getPosition.apply(this.nodesHandler, arguments) }, Yc.prototype.storePositions = function() { return this.nodesHandler.storePositions.apply(this.nodesHandler, arguments) }, Yc.prototype.moveNode = function() { return this.nodesHandler.moveNode.apply(this.nodesHandler, arguments) }, Yc.prototype.getBoundingBox = function() { return this.nodesHandler.getBoundingBox.apply(this.nodesHandler, arguments) }, Yc.prototype.getConnectedNodes = function(t) { return void 0 !== this.body.nodes[t] ? this.nodesHandler.getConnectedNodes.apply(this.nodesHandler, arguments) : this.edgesHandler.getConnectedNodes.apply(this.edgesHandler, arguments) }, Yc.prototype.getConnectedEdges = function() { return this.nodesHandler.getConnectedEdges.apply(this.nodesHandler, arguments) }, Yc.prototype.startSimulation = function() { return this.physics.startSimulation.apply(this.physics, arguments) }, Yc.prototype.stopSimulation = function() { return this.physics.stopSimulation.apply(this.physics, arguments) }, Yc.prototype.stabilize = function() { return this.physics.stabilize.apply(this.physics, arguments) }, Yc.prototype.getSelection = function() { return this.selectionHandler.getSelection.apply(this.selectionHandler, arguments) }, Yc.prototype.setSelection = function() { return this.selectionHandler.setSelection.apply(this.selectionHandler, arguments) }, Yc.prototype.getSelectedNodes = function() { return this.selectionHandler.getSelectedNodes.apply(this.selectionHandler, arguments) }, Yc.prototype.getSelectedEdges = function() { return this.selectionHandler.getSelectedEdges.apply(this.selectionHandler, arguments) }, Yc.prototype.getNodeAt = function() { var t = this.selectionHandler.getNodeAt.apply(this.selectionHandler, arguments); return void 0 !== t && void 0 !== t.id ? t.id : t }, Yc.prototype.getEdgeAt = function() { var t = this.selectionHandler.getEdgeAt.apply(this.selectionHandler, arguments); return void 0 !== t && void 0 !== t.id ? t.id : t }, Yc.prototype.selectNodes = function() { return this.selectionHandler.selectNodes.apply(this.selectionHandler, arguments) }, Yc.prototype.selectEdges = function() { return this.selectionHandler.selectEdges.apply(this.selectionHandler, arguments) }, Yc.prototype.unselectAll = function() { this.selectionHandler.unselectAll.apply(this.selectionHandler, arguments), this.redraw() }, Yc.prototype.redraw = function() { return this.renderer.redraw.apply(this.renderer, arguments) }, Yc.prototype.getScale = function() { return this.view.getScale.apply(this.view, arguments) }, Yc.prototype.getViewPosition = function() { return this.view.getViewPosition.apply(this.view, arguments) }, Yc.prototype.fit = function() { return this.view.fit.apply(this.view, arguments) }, Yc.prototype.moveTo = function() { return this.view.moveTo.apply(this.view, arguments) }, Yc.prototype.focus = function() { return this.view.focus.apply(this.view, arguments) }, Yc.prototype.releaseNode = function() { return this.view.releaseNode.apply(this.view, arguments) }, Yc.prototype.getOptionsFromConfigurator = function() { var t = {}; return this.configurator && (t = this.configurator.getOptions.apply(this.configurator)), t }
        }).call(this, n(152))
    }, function(t, e, n) { t.exports = n(270) }, function(t, e, n) { t.exports = n(272) }, function(t, e, n) { t.exports = n(282) }, function(t, e, n) { t.exports = n(289) }, function(t, e, n) { t.exports = n(303) }, function(t, e, n) { t.exports = n(307) }, function(t, e, n) {
        var i = n(313),
            r = n(316);

        function o(e) { return t.exports = o = "function" == typeof r && "symbol" == typeof i ? function(t) { return typeof t } : function(t) { return t && "function" == typeof r && t.constructor === r && t !== r.prototype ? "symbol" : typeof t }, o(e) }
        t.exports = o
    }, function(t, e, n) {
        n(94), n(99);
        var i = n(260);
        t.exports = i
    }, function(t, e, n) {
        "use strict";
        var i = n(48),
            r = n(250),
            o = n(72),
            g = n(95),
            s = n(189),
            A = g.set,
            a = g.getterFor("Array Iterator");
        t.exports = s(Array, "Array", (function(t, e) { A(this, { type: "Array Iterator", target: i(t), index: 0, kind: e }) }), (function() {
            var t = a(this),
                e = t.target,
                n = t.kind,
                i = t.index++;
            return !e || i >= e.length ? (t.target = void 0, { value: void 0, done: !0 }) : "keys" == n ? { value: i, done: !1 } : "values" == n ? { value: e[i], done: !1 } : { value: [i, e[i]], done: !1 }
        }), "values"), o.Arguments = o.Array, r("keys"), r("values"), r("entries")
    }, function(t, e) { t.exports = function() {} }, function(t, e, n) {
        var i = n(21),
            r = n(186),
            o = i.WeakMap;
        t.exports = "function" == typeof o && /native code/.test(r(o))
    }, function(t, e, n) {
        var i = n(21),
            r = n(49);
        t.exports = function(t, e) { try { r(i, t, e) } catch (n) { i[t] = e } return e }
    }, function(t, e, n) {
        "use strict";
        var i = n(191).IteratorPrototype,
            r = n(159),
            o = n(73),
            g = n(78),
            s = n(72),
            A = function() { return this };
        t.exports = function(t, e, n) { var a = e + " Iterator"; return t.prototype = r(i, { next: o(1, n) }), g(t, a, !1, !0), s[a] = A, t }
    }, function(t, e, n) {
        var i = n(27);
        t.exports = !i((function() {
            function t() {}
            return t.prototype.constructor = null, Object.getPrototypeOf(new t) !== t.prototype
        }))
    }, function(t, e, n) {
        var i = n(48),
            r = n(77),
            o = n(195),
            g = function(t) {
                return function(e, n, g) {
                    var s, A = i(e),
                        a = r(A.length),
                        C = o(g, a);
                    if (t && n != n) {
                        for (; a > C;)
                            if ((s = A[C++]) != s) return !0
                    } else
                        for (; a > C; C++)
                            if ((t || C in A) && A[C] === n) return t || C || 0; return !t && -1
                }
            };
        t.exports = { includes: g(!0), indexOf: g(!1) }
    }, function(t, e, n) {
        "use strict";
        var i = n(162),
            r = n(114);
        t.exports = i ? {}.toString : function() { return "[object " + r(this) + "]" }
    }, function(t, e, n) {
        var i = n(42);
        t.exports = function(t) { if (!i(t) && null !== t) throw TypeError("Can't set " + String(t) + " as a prototype"); return t }
    }, function(t, e) { t.exports = { CSSRuleList: 0, CSSStyleDeclaration: 0, CSSValueList: 0, ClientRectList: 0, DOMRectList: 0, DOMStringList: 0, DOMTokenList: 1, DataTransferItemList: 0, FileList: 0, HTMLAllCollection: 0, HTMLCollection: 0, HTMLFormElement: 0, HTMLSelectElement: 0, MediaList: 0, MimeTypeArray: 0, NamedNodeMap: 0, NodeList: 1, PaintRequestList: 0, Plugin: 0, PluginArray: 0, SVGLengthList: 0, SVGNumberList: 0, SVGPathSegList: 0, SVGPointList: 0, SVGStringList: 0, SVGTransformList: 0, SourceBufferList: 0, StyleSheetList: 0, TextTrackCueList: 0, TextTrackList: 0, TouchList: 0 } }, function(t, e, n) {
        var i = n(160),
            r = n(151),
            o = function(t) {
                return function(e, n) {
                    var o, g, s = String(r(e)),
                        A = i(n),
                        a = s.length;
                    return A < 0 || A >= a ? t ? "" : void 0 : (o = s.charCodeAt(A)) < 55296 || o > 56319 || A + 1 === a || (g = s.charCodeAt(A + 1)) < 56320 || g > 57343 ? t ? s.charAt(A) : o : t ? s.slice(A, A + 2) : g - 56320 + (o - 55296 << 10) + 65536
                }
            };
        t.exports = { codeAt: o(!1), charAt: o(!0) }
    }, function(t, e, n) {
        var i = n(43),
            r = n(115);
        t.exports = function(t) { var e = r(t); if ("function" != typeof e) throw TypeError(String(t) + " is not iterable"); return i(e.call(t)) }
    }, function(t, e, n) {
        n(94), n(99);
        var i = n(115);
        t.exports = i
    }, function(t, e, n) {
        var i = n(263);
        t.exports = i
    }, function(t, e, n) {
        n(99), n(264);
        var i = n(23);
        t.exports = i.Array.from
    }, function(t, e, n) {
        var i = n(15),
            r = n(265);
        i({ target: "Array", stat: !0, forced: !n(200)((function(t) { Array.from(t) })) }, { from: r })
    }, function(t, e, n) {
        "use strict";
        var i = n(97),
            r = n(76),
            o = n(198),
            g = n(199),
            s = n(77),
            A = n(116),
            a = n(115);
        t.exports = function(t) {
            var e, n, C, I, u, c, l = r(t),
                h = "function" == typeof this ? this : Array,
                d = arguments.length,
                f = d > 1 ? arguments[1] : void 0,
                p = void 0 !== f,
                v = a(l),
                y = 0;
            if (p && (f = i(f, d > 2 ? arguments[2] : void 0, 2)), null == v || h == Array && g(v))
                for (n = new h(e = s(l.length)); e > y; y++) c = p ? f(l[y], y) : l[y], A(n, y, c);
            else
                for (u = (I = v.call(l)).next, n = new h; !(C = u.call(I)).done; y++) c = p ? o(I, f, [C.value, y], !0) : C.value, A(n, y, c);
            return n.length = y, n
        }
    }, function(t, e, n) {
        var i = n(267);
        t.exports = i
    }, function(t, e, n) {
        var i = n(268),
            r = Array.prototype;
        t.exports = function(t) { var e = t.slice; return t === r || t instanceof Array && e === r.slice ? i : e }
    }, function(t, e, n) {
        n(269);
        var i = n(101);
        t.exports = i("Array").slice
    }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(42),
            o = n(100),
            g = n(195),
            s = n(77),
            A = n(48),
            a = n(116),
            C = n(22),
            I = n(117),
            u = n(118),
            c = I("slice"),
            l = u("slice", { ACCESSORS: !0, 0: 0, 1: 2 }),
            h = C("species"),
            d = [].slice,
            f = Math.max;
        i({ target: "Array", proto: !0, forced: !c || !l }, {
            slice: function(t, e) {
                var n, i, C, I = A(this),
                    u = s(I.length),
                    c = g(t, u),
                    l = g(void 0 === e ? u : e, u);
                if (o(I) && ("function" != typeof(n = I.constructor) || n !== Array && !o(n.prototype) ? r(n) && null === (n = n[h]) && (n = void 0) : n = void 0, n === Array || void 0 === n)) return d.call(I, c, l);
                for (i = new(void 0 === n ? Array : n)(f(l - c, 0)), C = 0; c < l; c++, C++) c in I && a(i, C, I[c]);
                return i.length = C, i
            }
        })
    }, function(t, e, n) {
        var i = n(201);
        t.exports = i
    }, function(t, e, n) {
        var i = n(15),
            r = n(29);
        i({ target: "Object", stat: !0, forced: !r, sham: !r }, { defineProperty: n(57).f })
    }, function(t, e, n) {
        var i = n(273);
        t.exports = i
    }, function(t, e, n) {
        n(274);
        var i = n(23).Object,
            r = t.exports = function(t, e) { return i.defineProperties(t, e) };
        i.defineProperties.sham && (r.sham = !0)
    }, function(t, e, n) {
        var i = n(15),
            r = n(29);
        i({ target: "Object", stat: !0, forced: !r, sham: !r }, { defineProperties: n(193) })
    }, function(t, e, n) {
        var i = n(276);
        t.exports = i
    }, function(t, e, n) {
        n(277);
        var i = n(23);
        t.exports = i.Object.getOwnPropertyDescriptors
    }, function(t, e, n) {
        var i = n(15),
            r = n(29),
            o = n(278),
            g = n(48),
            s = n(96),
            A = n(116);
        i({ target: "Object", stat: !0, sham: !r }, { getOwnPropertyDescriptors: function(t) { for (var e, n, i = g(t), r = s.f, a = o(i), C = {}, I = 0; a.length > I;) void 0 !== (n = r(i, e = a[I++])) && A(C, e, n); return C } })
    }, function(t, e, n) {
        var i = n(62),
            r = n(165),
            o = n(202),
            g = n(43);
        t.exports = i("Reflect", "ownKeys") || function(t) {
            var e = r.f(g(t)),
                n = o.f;
            return n ? e.concat(n(t)) : e
        }
    }, function(t, e, n) {
        var i = n(280);
        t.exports = i
    }, function(t, e, n) {
        n(281);
        var i = n(23).Object,
            r = t.exports = function(t, e) { return i.getOwnPropertyDescriptor(t, e) };
        i.getOwnPropertyDescriptor.sham && (r.sham = !0)
    }, function(t, e, n) {
        var i = n(15),
            r = n(27),
            o = n(48),
            g = n(96).f,
            s = n(29),
            A = r((function() { g(1) }));
        i({ target: "Object", stat: !0, forced: !s || A, sham: !s }, { getOwnPropertyDescriptor: function(t, e) { return g(o(t), e) } })
    }, function(t, e, n) {
        var i = n(283);
        t.exports = i
    }, function(t, e, n) {
        var i = n(284),
            r = Array.prototype;
        t.exports = function(t) { var e = t.filter; return t === r || t instanceof Array && e === r.filter ? i : e }
    }, function(t, e, n) {
        n(285);
        var i = n(101);
        t.exports = i("Array").filter
    }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(119).filter,
            o = n(117),
            g = n(118),
            s = o("filter"),
            A = g("filter");
        i({ target: "Array", proto: !0, forced: !s || !A }, { filter: function(t) { return r(this, t, arguments.length > 1 ? arguments[1] : void 0) } })
    }, function(t, e, n) {
        var i = n(287);
        t.exports = i
    }, function(t, e, n) {
        n(204);
        var i = n(23);
        t.exports = i.Object.getOwnPropertySymbols
    }, function(t, e, n) {
        var i = n(48),
            r = n(165).f,
            o = {}.toString,
            g = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
        t.exports.f = function(t) { return g && "[object Window]" == o.call(t) ? function(t) { try { return r(t) } catch (t) { return g.slice() } }(t) : r(i(t)) }
    }, function(t, e, n) {
        n(290);
        var i = n(23);
        t.exports = i.setTimeout
    }, function(t, e, n) {
        var i = n(15),
            r = n(21),
            o = n(164),
            g = [].slice,
            s = function(t) {
                return function(e, n) {
                    var i = arguments.length > 2,
                        r = i ? g.call(arguments, 2) : void 0;
                    return t(i ? function() {
                        ("function" == typeof e ? e : Function(e)).apply(this, r)
                    } : e, n)
                }
            };
        i({ global: !0, bind: !0, forced: /MSIE .\./.test(o) }, { setTimeout: s(r.setTimeout), setInterval: s(r.setInterval) })
    }, function(t, e, n) {
        var i = n(205);
        t.exports = i
    }, function(t, e, n) {
        "use strict";
        var i, r, o, g, s = n(15),
            A = n(74),
            a = n(21),
            C = n(62),
            I = n(207),
            u = n(98),
            c = n(293),
            l = n(78),
            h = n(294),
            d = n(42),
            f = n(75),
            p = n(295),
            v = n(71),
            y = n(186),
            b = n(120),
            m = n(200),
            w = n(208),
            _ = n(209).set,
            k = n(296),
            x = n(211),
            O = n(297),
            E = n(102),
            T = n(121),
            S = n(95),
            D = n(190),
            N = n(22),
            R = n(163),
            P = N("species"),
            M = "Promise",
            j = S.get,
            F = S.set,
            z = S.getterFor(M),
            L = I,
            B = a.TypeError,
            Z = a.document,
            V = a.process,
            Y = C("fetch"),
            G = E.f,
            U = G,
            W = "process" == v(V),
            H = !!(Z && Z.createEvent && a.dispatchEvent),
            K = D(M, (function() {
                if (!(y(L) !== String(L))) { if (66 === R) return !0; if (!W && "function" != typeof PromiseRejectionEvent) return !0 }
                if (A && !L.prototype.finally) return !0;
                if (R >= 51 && /native code/.test(L)) return !1;
                var t = L.resolve(1),
                    e = function(t) { t((function() {}), (function() {})) };
                return (t.constructor = {})[P] = e, !(t.then((function() {})) instanceof e)
            })),
            Q = K || !m((function(t) { L.all(t).catch((function() {})) })),
            X = function(t) { var e; return !(!d(t) || "function" != typeof(e = t.then)) && e },
            q = function(t, e, n) {
                if (!e.notified) {
                    e.notified = !0;
                    var i = e.reactions;
                    k((function() {
                        for (var r = e.value, o = 1 == e.state, g = 0; i.length > g;) {
                            var s, A, a, C = i[g++],
                                I = o ? C.ok : C.fail,
                                u = C.resolve,
                                c = C.reject,
                                l = C.domain;
                            try { I ? (o || (2 === e.rejection && et(t, e), e.rejection = 1), !0 === I ? s = r : (l && l.enter(), s = I(r), l && (l.exit(), a = !0)), s === C.promise ? c(B("Promise-chain cycle")) : (A = X(s)) ? A.call(s, u, c) : u(s)) : c(r) } catch (t) { l && !a && l.exit(), c(t) }
                        }
                        e.reactions = [], e.notified = !1, n && !e.rejection && $(t, e)
                    }))
                }
            },
            J = function(t, e, n) {
                var i, r;
                H ? ((i = Z.createEvent("Event")).promise = e, i.reason = n, i.initEvent(t, !1, !0), a.dispatchEvent(i)) : i = { promise: e, reason: n }, (r = a["on" + t]) ? r(i) : "unhandledrejection" === t && O("Unhandled promise rejection", n)
            },
            $ = function(t, e) { _.call(a, (function() { var n, i = e.value; if (tt(e) && (n = T((function() { W ? V.emit("unhandledRejection", i, t) : J("unhandledrejection", t, i) })), e.rejection = W || tt(e) ? 2 : 1, n.error)) throw n.value })) },
            tt = function(t) { return 1 !== t.rejection && !t.parent },
            et = function(t, e) { _.call(a, (function() { W ? V.emit("rejectionHandled", t) : J("rejectionhandled", t, e.value) })) },
            nt = function(t, e, n, i) { return function(r) { t(e, n, r, i) } },
            it = function(t, e, n, i) { e.done || (e.done = !0, i && (e = i), e.value = n, e.state = 2, q(t, e, !0)) },
            rt = function(t, e, n, i) {
                if (!e.done) {
                    e.done = !0, i && (e = i);
                    try {
                        if (t === n) throw B("Promise can't be resolved itself");
                        var r = X(n);
                        r ? k((function() { var i = { done: !1 }; try { r.call(n, nt(rt, t, i, e), nt(it, t, i, e)) } catch (n) { it(t, i, n, e) } })) : (e.value = n, e.state = 1, q(t, e, !1))
                    } catch (n) { it(t, { done: !1 }, n, e) }
                }
            };
        K && (L = function(t) { p(this, L, M), f(t), i.call(this); var e = j(this); try { t(nt(rt, this, e), nt(it, this, e)) } catch (t) { it(this, e, t) } }, (i = function(t) { F(this, { type: M, done: !1, notified: !1, parent: !1, reactions: [], rejection: !1, state: 0, value: void 0 }) }).prototype = c(L.prototype, {
            then: function(t, e) {
                var n = z(this),
                    i = G(w(this, L));
                return i.ok = "function" != typeof t || t, i.fail = "function" == typeof e && e, i.domain = W ? V.domain : void 0, n.parent = !0, n.reactions.push(i), 0 != n.state && q(this, n, !1), i.promise
            },
            catch: function(t) { return this.then(void 0, t) }
        }), r = function() {
            var t = new i,
                e = j(t);
            this.promise = t, this.resolve = nt(rt, t, e), this.reject = nt(it, t, e)
        }, E.f = G = function(t) { return t === L || t === o ? new r(t) : U(t) }, A || "function" != typeof I || (g = I.prototype.then, u(I.prototype, "then", (function(t, e) { var n = this; return new L((function(t, e) { g.call(n, t, e) })).then(t, e) }), { unsafe: !0 }), "function" == typeof Y && s({ global: !0, enumerable: !0, forced: !0 }, { fetch: function(t) { return x(L, Y.apply(a, arguments)) } }))), s({ global: !0, wrap: !0, forced: K }, { Promise: L }), l(L, M, !1, !0), h(M), o = C(M), s({ target: M, stat: !0, forced: K }, { reject: function(t) { var e = G(this); return e.reject.call(void 0, t), e.promise } }), s({ target: M, stat: !0, forced: A || K }, { resolve: function(t) { return x(A && this === o ? L : this, t) } }), s({ target: M, stat: !0, forced: Q }, {
            all: function(t) {
                var e = this,
                    n = G(e),
                    i = n.resolve,
                    r = n.reject,
                    o = T((function() {
                        var n = f(e.resolve),
                            o = [],
                            g = 0,
                            s = 1;
                        b(t, (function(t) {
                            var A = g++,
                                a = !1;
                            o.push(void 0), s++, n.call(e, t).then((function(t) { a || (a = !0, o[A] = t, --s || i(o)) }), r)
                        })), --s || i(o)
                    }));
                return o.error && r(o.value), n.promise
            },
            race: function(t) {
                var e = this,
                    n = G(e),
                    i = n.reject,
                    r = T((function() {
                        var r = f(e.resolve);
                        b(t, (function(t) { r.call(e, t).then(n.resolve, i) }))
                    }));
                return r.error && i(r.value), n.promise
            }
        })
    }, function(t, e, n) {
        var i = n(98);
        t.exports = function(t, e, n) { for (var r in e) n && n.unsafe && t[r] ? t[r] = e[r] : i(t, r, e[r], n); return t }
    }, function(t, e, n) {
        "use strict";
        var i = n(62),
            r = n(57),
            o = n(22),
            g = n(29),
            s = o("species");
        t.exports = function(t) {
            var e = i(t),
                n = r.f;
            g && e && !e[s] && n(e, s, { configurable: !0, get: function() { return this } })
        }
    }, function(t, e) { t.exports = function(t, e, n) { if (!(t instanceof e)) throw TypeError("Incorrect " + (n ? n + " " : "") + "invocation"); return t } }, function(t, e, n) {
        var i, r, o, g, s, A, a, C, I = n(21),
            u = n(96).f,
            c = n(71),
            l = n(209).set,
            h = n(210),
            d = I.MutationObserver || I.WebKitMutationObserver,
            f = I.process,
            p = I.Promise,
            v = "process" == c(f),
            y = u(I, "queueMicrotask"),
            b = y && y.value;
        b || (i = function() {
            var t, e;
            for (v && (t = f.domain) && t.exit(); r;) { e = r.fn, r = r.next; try { e() } catch (t) { throw r ? g() : o = void 0, t } }
            o = void 0, t && t.enter()
        }, v ? g = function() { f.nextTick(i) } : d && !h ? (s = !0, A = document.createTextNode(""), new d(i).observe(A, { characterData: !0 }), g = function() { A.data = s = !s }) : p && p.resolve ? (a = p.resolve(void 0), C = a.then, g = function() { C.call(a, i) }) : g = function() { l.call(I, i) }), t.exports = b || function(t) {
            var e = { fn: t, next: void 0 };
            o && (o.next = e), r || (r = e, g()), o = e
        }
    }, function(t, e, n) {
        var i = n(21);
        t.exports = function(t, e) {
            var n = i.console;
            n && n.error && (1 === arguments.length ? n.error(t) : n.error(t, e))
        }
    }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(74),
            o = n(207),
            g = n(27),
            s = n(62),
            A = n(208),
            a = n(211),
            C = n(98);
        i({ target: "Promise", proto: !0, real: !0, forced: !!o && g((function() { o.prototype.finally.call({ then: function() {} }, (function() {})) })) }, {
            finally: function(t) {
                var e = A(this, s("Promise")),
                    n = "function" == typeof t;
                return this.then(n ? function(n) { return a(e, t()).then((function() { return n })) } : t, n ? function(n) { return a(e, t()).then((function() { throw n })) } : t)
            }
        }), r || "function" != typeof o || o.prototype.finally || C(o.prototype, "finally", s("Promise").prototype.finally)
    }, function(t, e, n) {
        var i = n(300);
        t.exports = i
    }, function(t, e, n) {
        n(301);
        var i = n(23);
        t.exports = i.Object.values
    }, function(t, e, n) {
        var i = n(15),
            r = n(302).values;
        i({ target: "Object", stat: !0 }, { values: function(t) { return r(t) } })
    }, function(t, e, n) {
        var i = n(29),
            r = n(113),
            o = n(48),
            g = n(156).f,
            s = function(t) { return function(e) { for (var n, s = o(e), A = r(s), a = A.length, C = 0, I = []; a > C;) n = A[C++], i && !g.call(s, n) || I.push(t ? [n, s[n]] : s[n]); return I } };
        t.exports = { entries: s(!0), values: s(!1) }
    }, function(t, e, n) {
        var i = n(304);
        t.exports = i
    }, function(t, e, n) {
        var i = n(305),
            r = Array.prototype;
        t.exports = function(t) { var e = t.map; return t === r || t instanceof Array && e === r.map ? i : e }
    }, function(t, e, n) {
        n(306);
        var i = n(101);
        t.exports = i("Array").map
    }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(119).map,
            o = n(117),
            g = n(118),
            s = o("map"),
            A = g("map");
        i({ target: "Array", proto: !0, forced: !s || !A }, { map: function(t) { return r(this, t, arguments.length > 1 ? arguments[1] : void 0) } })
    }, function(t, e, n) {
        var i = n(308);
        t.exports = i
    }, function(t, e, n) {
        var i = n(309),
            r = Array.prototype;
        t.exports = function(t) { var e = t.concat; return t === r || t instanceof Array && e === r.concat ? i : e }
    }, function(t, e, n) {
        n(213);
        var i = n(101);
        t.exports = i("Array").concat
    }, function(t, e, n) {
        var i = n(311);
        t.exports = i
    }, function(t, e, n) {
        n(312);
        var i = n(23);
        t.exports = i.Array.isArray
    }, function(t, e, n) { n(15)({ target: "Array", stat: !0 }, { isArray: n(100) }) }, function(t, e, n) { t.exports = n(314) }, function(t, e, n) {
        var i = n(315);
        t.exports = i
    }, function(t, e, n) {
        n(215), n(99), n(94);
        var i = n(166);
        t.exports = i.f("iterator")
    }, function(t, e, n) { t.exports = n(317) }, function(t, e, n) {
        var i = n(216);
        n(333), n(334), n(335), n(336), n(337), t.exports = i
    }, function(t, e, n) { n(20)("asyncIterator") }, function(t, e) {}, function(t, e, n) { n(20)("hasInstance") }, function(t, e, n) { n(20)("isConcatSpreadable") }, function(t, e, n) { n(20)("match") }, function(t, e, n) { n(20)("matchAll") }, function(t, e, n) { n(20)("replace") }, function(t, e, n) { n(20)("search") }, function(t, e, n) { n(20)("species") }, function(t, e, n) { n(20)("split") }, function(t, e, n) { n(20)("toPrimitive") }, function(t, e, n) { n(20)("toStringTag") }, function(t, e, n) { n(20)("unscopables") }, function(t, e, n) { n(78)(Math, "Math", !0) }, function(t, e, n) {
        var i = n(21);
        n(78)(i.JSON, "JSON", !0)
    }, function(t, e, n) { n(20)("asyncDispose") }, function(t, e, n) { n(20)("dispose") }, function(t, e, n) { n(20)("observable") }, function(t, e, n) { n(20)("patternMatch") }, function(t, e, n) { n(20)("replaceAll") }, function(t, e, n) {
        n(94);
        var i = n(339),
            r = n(114),
            o = Array.prototype,
            g = { DOMTokenList: !0, NodeList: !0 };
        t.exports = function(t) { var e = t.forEach; return t === o || t instanceof Array && e === o.forEach || g.hasOwnProperty(r(t)) ? i : e }
    }, function(t, e, n) {
        var i = n(340);
        t.exports = i
    }, function(t, e, n) {
        n(341);
        var i = n(101);
        t.exports = i("Array").forEach
    }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(342);
        i({ target: "Array", proto: !0, forced: [].forEach != r }, { forEach: r })
    }, function(t, e, n) {
        "use strict";
        var i = n(119).forEach,
            r = n(343),
            o = n(118),
            g = r("forEach"),
            s = o("forEach");
        t.exports = g && s ? [].forEach : function(t) { return i(this, t, arguments.length > 1 ? arguments[1] : void 0) }
    }, function(t, e, n) {
        "use strict";
        var i = n(27);
        t.exports = function(t, e) { var n = [][t]; return !!n && i((function() { n.call(null, e || function() { throw 1 }, 1) })) }
    }, function(t, e, n) { t.exports = n(345) }, function(t, e, n) {
        var i = n(205);
        n(346), n(347), n(348), n(349), t.exports = i
    }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(29),
            o = n(157),
            g = n(197),
            s = n(159),
            A = n(57),
            a = n(73),
            C = n(120),
            I = n(49),
            u = n(95),
            c = u.set,
            l = u.getterFor("AggregateError"),
            h = function(t, e) {
                var n = this;
                if (!(n instanceof h)) return new h(t, e);
                g && (n = g(new Error(e), o(n)));
                var i = [];
                return C(t, i.push, i), r ? c(n, { errors: i, type: "AggregateError" }) : n.errors = i, void 0 !== e && I(n, "message", String(e)), n
            };
        h.prototype = s(Error.prototype, { constructor: a(5, h), message: a(5, ""), name: a(5, "AggregateError") }), r && A.f(h.prototype, "errors", { get: function() { return l(this).errors }, configurable: !0 }), i({ global: !0 }, { AggregateError: h })
    }, function(t, e, n) { n(212) }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(102),
            o = n(121);
        i({ target: "Promise", stat: !0 }, {
            try: function(t) {
                var e = r.f(this),
                    n = o(t);
                return (n.error ? e.reject : e.resolve)(n.value), e.promise
            }
        })
    }, function(t, e, n) {
        "use strict";
        var i = n(15),
            r = n(75),
            o = n(62),
            g = n(102),
            s = n(121),
            A = n(120);
        i({ target: "Promise", stat: !0 }, {
            any: function(t) {
                var e = this,
                    n = g.f(e),
                    i = n.resolve,
                    a = n.reject,
                    C = s((function() {
                        var n = r(e.resolve),
                            g = [],
                            s = 0,
                            C = 1,
                            I = !1;
                        A(t, (function(t) {
                            var r = s++,
                                A = !1;
                            g.push(void 0), C++, n.call(e, t).then((function(t) { A || I || (I = !0, i(t)) }), (function(t) { A || I || (A = !0, g[r] = t, --C || a(new(o("AggregateError"))(g, "No one promise resolved"))) }))
                        })), --C || a(new(o("AggregateError"))(g, "No one promise resolved"))
                    }));
                return C.error && a(C.value), n.promise
            }
        })
    }, function(t, e, n) {
        var i = n(351);
        t.exports = i
    }, function(t, e, n) {
        n(352);
        var i = n(23);
        t.exports = i.Object.keys
    }, function(t, e, n) {
        var i = n(15),
            r = n(76),
            o = n(113);
        i({ target: "Object", stat: !0, forced: n(27)((function() { o(1) })) }, { keys: function(t) { return o(r(t)) } })
    }, function(t, e, n) {
        var i = n(201);
        t.exports = i
    }, function(t, e, n) {
        var i = n(216);
        t.exports = i
    }, function(t, e, n) {
        var i = n(12),
            r = n(167),
            o = n(356),
            g = n(357);

        function s(e) {
            var n = "function" == typeof Map ? new Map : void 0;
            return t.exports = s = function(t) {
                if (null === t || !o(t)) return t;
                if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
                if (void 0 !== n) {
                    if (n.has(t)) return n.get(t);
                    n.set(t, e)
                }

                function e() { return g(t, arguments, i(this).constructor) }
                return e.prototype = Object.create(t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), r(e, t)
            }, s(e)
        }
        t.exports = s
    }, function(t, e) { t.exports = function(t) { return -1 !== Function.toString.call(t).indexOf("[native code]") } }, function(t, e, n) {
        var i = n(167),
            r = n(358);

        function o(e, n, g) {
            return r() ? t.exports = o = Reflect.construct : t.exports = o = function(t, e, n) {
                var r = [null];
                r.push.apply(r, e);
                var o = new(Function.bind.apply(t, r));
                return n && i(o, n.prototype), o
            }, o.apply(null, arguments)
        }
        t.exports = o
    }, function(t, e) { t.exports = function() { if ("undefined" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}))), !0 } catch (t) { return !1 } } }, function(t, e, n) {
        var i = n(12);
        t.exports = function(t, e) { for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = i(t));); return t }
    }, function(t, e) { t.exports = function(t) { if (Array.isArray(t)) return t } }, function(t, e) {
        t.exports = function(t, e) {
            if ("undefined" != typeof Symbol && Symbol.iterator in Object(t)) {
                var n = [],
                    i = !0,
                    r = !1,
                    o = void 0;
                try { for (var g, s = t[Symbol.iterator](); !(i = (g = s.next()).done) && (n.push(g.value), !e || n.length !== e); i = !0); } catch (t) { r = !0, o = t } finally { try { i || null == s.return || s.return() } finally { if (r) throw o } }
                return n
            }
        }
    }, function(t, e) { t.exports = function() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(172)),
            s = n(11),
            A = n(24),
            a = function() {
                function t(e) {
                    var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : u,
                        i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : function(t) { return new WebSocket(t) };
                    (0, r.default)(this, t), this._open = !0, this._pending = [], this._error = null, this._handleConnectionError = this._handleConnectionError.bind(this), this._config = e;
                    var o = I(e, n),
                        s = o.scheme,
                        A = o.error;
                    if (A) this._error = A;
                    else {
                        this._ws = C(s, e.address, i), this._ws.binaryType = "arraybuffer";
                        var a = this;
                        this._ws.onclose = function(t) { t && !t.wasClean && a._handleConnectionError() }, this._ws.onopen = function() {
                            a._clearConnectionTimeout();
                            var t = a._pending;
                            a._pending = null;
                            for (var e = 0; e < t.length; e++) a.write(t[e])
                        }, this._ws.onmessage = function(t) {
                            if (a.onmessage) {
                                var e = new g.default(t.data);
                                a.onmessage(e)
                            }
                        }, this._ws.onerror = this._handleConnectionError, this._connectionTimeoutFired = !1, this._connectionTimeoutId = this._setupConnectionTimeout()
                    }
                }
                return (0, o.default)(t, [{
                    key: "_handleConnectionError",
                    value: function() {
                        if (this._connectionTimeoutFired) return this._error = (0, s.newError)("Failed to establish connection in ".concat(this._config.connectionTimeout, "ms"), this._config.connectionErrorCode), void(this.onerror && this.onerror(this._error));
                        this._open && (this._error = (0, s.newError)("WebSocket connection failure. Due to security constraints in your web browser, the reason for the failure is not available to this Neo4j Driver. Please use your browsers development console to determine the root cause of the failure. Common reasons include the database being unavailable, using the wrong connection URL or temporary network problems. If you have enabled encryption, ensure your browser is configured to trust the certificate Neo4j is configured to use. WebSocket `readyState` is: " + this._ws.readyState, this._config.connectionErrorCode), this.onerror && this.onerror(this._error))
                    }
                }, {
                    key: "write",
                    value: function(t) {
                        if (null !== this._pending) this._pending.push(t);
                        else {
                            if (!(t instanceof g.default)) throw (0, s.newError)("Don't know how to send buffer: " + t);
                            try { this._ws.send(t._buffer) } catch (t) {
                                if (1 === this._ws.readyState) throw t;
                                this._handleConnectionError()
                            }
                        }
                    }
                }, { key: "close", value: function() { var t = this; return new Promise((function(e, n) { t._ws && 3 !== t._ws.readyState ? (t._open = !1, t._clearConnectionTimeout(), t._ws.onclose = function() { return e() }, t._ws.close()) : e() })) } }, {
                    key: "_setupConnectionTimeout",
                    value: function() {
                        var t = this,
                            e = this._config.connectionTimeout;
                        if (e) { var n = this._ws; return setTimeout((function() { 1 !== n.readyState && (t._connectionTimeoutFired = !0, n.close()) }), e) }
                        return null
                    }
                }, {
                    key: "_clearConnectionTimeout",
                    value: function() {
                        var t = this._connectionTimeoutId;
                        (t || 0 === t) && (this._connectionTimeoutFired = !1, this._connectionTimeoutId = null, clearTimeout(t))
                    }
                }]), t
            }();

        function C(t, e, n) { var i = t + "://" + e.asHostPort(); try { return n(i) } catch (i) { if (function(t, e) { return "SyntaxError" === t.name && (n = e.asHostPort(), "[" === n.charAt(0) && -1 !== n.indexOf("]")); var n }(i, e)) return n(function(t, e) { var n = e.host().replace(new RegExp(":", "g"), "-").replace("%", "s") + ".ipv6-literal.net"; return "".concat(t, "://").concat(n, ":").concat(e.port()) }(t, e)); throw i } }

        function I(t, e) {
            var n = function(t) { return !0 === t.encrypted || t.encrypted === A.ENCRYPTION_ON }(t),
                i = function(t) { return !1 === t.encrypted || t.encrypted === A.ENCRYPTION_OFF }(t),
                r = t.trust,
                o = function(t) { var e = "function" == typeof t ? t() : ""; return e && e.toLowerCase().indexOf("https") >= 0 }(e);
            return function(t, e, n) { t && !n ? console.warn("Neo4j driver is configured to use secure WebSocket on a HTTP web page. WebSockets might not work in a mixed content environment. Please consider configuring driver to not use encryption.") : e && n && console.warn("Neo4j driver is configured to use insecure WebSocket on a HTTPS web page. WebSockets might not work in a mixed content environment. Please consider configuring driver to use encryption.") }(n, i, o), i ? { scheme: "ws", error: null } : o ? { scheme: "wss", error: null } : n ? r && "TRUST_SYSTEM_CA_SIGNED_CERTIFICATES" !== r ? { scheme: null, error: (0, s.newError)("The browser version of this driver only supports one trust strategy, 'TRUST_SYSTEM_CA_SIGNED_CERTIFICATES'. " + r + ' is not supported. Please either use TRUST_SYSTEM_CA_SIGNED_CERTIFICATES or disable encryption by setting `encrypted:"' + A.ENCRYPTION_OFF + '"` in the driver configuration.') } : { scheme: "wss", error: null } : { scheme: "ws", error: null }
        }

        function u() { return "undefined" != typeof window && window.location ? window.location.protocol : null }
        e.default = a
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(16)),
            s = i(n(12)),
            A = i(n(17)),
            a = function(t) {
                function e() { return (0, r.default)(this, e), (0, g.default)(this, (0, s.default)(e).apply(this, arguments)) }
                return (0, A.default)(e, t), (0, o.default)(e, [{ key: "resolve", value: function(t) { return this._resolveToItself(t) } }]), e
            }(i(n(365)).default);
        e.default = a
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = function() {
                function t() {
                    (0, r.default)(this, t)
                }
                return (0, o.default)(t, [{ key: "resolve", value: function() { throw new Error("Abstract function") } }, { key: "_resolveToItself", value: function(t) { return Promise.resolve([t]) } }]), t
            }();
        e.default = g
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(172)),
            o = n(367),
            g = new o.TextEncoder("utf-8"),
            s = new o.TextDecoder("utf-8");
        var A = { encode: function(t) { return new r.default(g.encode(t).buffer) }, decode: function(t, e) { if (t instanceof r.default) return s.decode(t.readView(Math.min(e, t.length - t.position))); for (var n = new r.default(e), i = 0; i < e; i++) n.writeUInt8(t.readUInt8()); return n.reset(), s.decode(n.readView(e)) } };
        e.default = A
    }, function(t, e, n) {
        "use strict";

        function i(t, e, n) { return e <= t && t <= n }

        function r(t) { if (void 0 === t) return {}; if (t === Object(t)) return t; throw TypeError("Could not convert argument to dictionary") }
        n.r(e), n.d(e, "TextEncoder", (function() { return A })), n.d(e, "TextDecoder", (function() { return s }));

        function o(t) { this.tokens = [].slice.call(t) }
        o.prototype = {
            endOfStream: function() { return !this.tokens.length },
            read: function() { return this.tokens.length ? this.tokens.shift() : -1 },
            prepend: function(t) {
                if (Array.isArray(t))
                    for (var e = t; e.length;) this.tokens.unshift(e.pop());
                else this.tokens.unshift(t)
            },
            push: function(t) {
                if (Array.isArray(t))
                    for (var e = t; e.length;) this.tokens.push(e.shift());
                else this.tokens.push(t)
            }
        };

        function g(t, e) { if (t) throw TypeError("Decoder error"); return e || 65533 }

        function s(t, e) {
            if (!(this instanceof s)) return new s(t, e);
            if ("utf-8" !== (t = void 0 !== t ? String(t).toLowerCase() : "utf-8")) throw new Error("Encoding not supported. Only utf-8 is supported");
            e = r(e), this._streaming = !1, this._BOMseen = !1, this._decoder = null, this._fatal = Boolean(e.fatal), this._ignoreBOM = Boolean(e.ignoreBOM), Object.defineProperty(this, "encoding", { value: "utf-8" }), Object.defineProperty(this, "fatal", { value: this._fatal }), Object.defineProperty(this, "ignoreBOM", { value: this._ignoreBOM })
        }

        function A(t, e) {
            if (!(this instanceof A)) return new A(t, e);
            if ("utf-8" !== (t = void 0 !== t ? String(t).toLowerCase() : "utf-8")) throw new Error("Encoding not supported. Only utf-8 is supported");
            e = r(e), this._streaming = !1, this._encoder = null, this._options = { fatal: Boolean(e.fatal) }, Object.defineProperty(this, "encoding", { value: "utf-8" })
        }

        function a(t) {
            var e = t.fatal,
                n = 0,
                r = 0,
                o = 0,
                s = 128,
                A = 191;
            this.handler = function(t, a) {
                if (-1 === a && 0 !== o) return o = 0, g(e);
                if (-1 === a) return -1;
                if (0 === o) {
                    if (i(a, 0, 127)) return a;
                    if (i(a, 194, 223)) o = 1, n = a - 192;
                    else if (i(a, 224, 239)) 224 === a && (s = 160), 237 === a && (A = 159), o = 2, n = a - 224;
                    else {
                        if (!i(a, 240, 244)) return g(e);
                        240 === a && (s = 144), 244 === a && (A = 143), o = 3, n = a - 240
                    }
                    return n <<= 6 * o, null
                }
                if (!i(a, s, A)) return n = o = r = 0, s = 128, A = 191, t.prepend(a), g(e);
                if (s = 128, A = 191, n += a - 128 << 6 * (o - (r += 1)), r !== o) return null;
                var C = n;
                return n = o = r = 0, C
            }
        }

        function C(t) {
            t.fatal;
            this.handler = function(t, e) {
                if (-1 === e) return -1;
                if (i(e, 0, 127)) return e;
                var n, r;
                i(e, 128, 2047) ? (n = 1, r = 192) : i(e, 2048, 65535) ? (n = 2, r = 224) : i(e, 65536, 1114111) && (n = 3, r = 240);
                for (var o = [(e >> 6 * n) + r]; n > 0;) {
                    var g = e >> 6 * (n - 1);
                    o.push(128 | 63 & g), n -= 1
                }
                return o
            }
        }
        s.prototype = {
            decode: function(t, e) {
                var n;
                n = "object" == typeof t && t instanceof ArrayBuffer ? new Uint8Array(t) : "object" == typeof t && "buffer" in t && t.buffer instanceof ArrayBuffer ? new Uint8Array(t.buffer, t.byteOffset, t.byteLength) : new Uint8Array(0), e = r(e), this._streaming || (this._decoder = new a({ fatal: this._fatal }), this._BOMseen = !1), this._streaming = Boolean(e.stream);
                for (var i, g = new o(n), s = []; !g.endOfStream() && -1 !== (i = this._decoder.handler(g, g.read()));) null !== i && (Array.isArray(i) ? s.push.apply(s, i) : s.push(i));
                if (!this._streaming) {
                    do {
                        if (-1 === (i = this._decoder.handler(g, g.read()))) break;
                        null !== i && (Array.isArray(i) ? s.push.apply(s, i) : s.push(i))
                    } while (!g.endOfStream());
                    this._decoder = null
                }
                return s.length && (-1 === ["utf-8"].indexOf(this.encoding) || this._ignoreBOM || this._BOMseen || (65279 === s[0] ? (this._BOMseen = !0, s.shift()) : this._BOMseen = !0)),
                    function(t) {
                        for (var e = "", n = 0; n < t.length; ++n) {
                            var i = t[n];
                            i <= 65535 ? e += String.fromCharCode(i) : (i -= 65536, e += String.fromCharCode(55296 + (i >> 10), 56320 + (1023 & i)))
                        }
                        return e
                    }(s)
            }
        }, A.prototype = {
            encode: function(t, e) {
                t = t ? String(t) : "", e = r(e), this._streaming || (this._encoder = new C(this._options)), this._streaming = Boolean(e.stream);
                for (var n, i = [], g = new o(function(t) {
                        for (var e = String(t), n = e.length, i = 0, r = []; i < n;) {
                            var o = e.charCodeAt(i);
                            if (o < 55296 || o > 57343) r.push(o);
                            else if (56320 <= o && o <= 57343) r.push(65533);
                            else if (55296 <= o && o <= 56319)
                                if (i === n - 1) r.push(65533);
                                else {
                                    var g = t.charCodeAt(i + 1);
                                    if (56320 <= g && g <= 57343) {
                                        var s = 1023 & o,
                                            A = 1023 & g;
                                        r.push(65536 + (s << 10) + A), i += 1
                                    } else r.push(65533)
                                }
                            i += 1
                        }
                        return r
                    }(t)); !g.endOfStream() && -1 !== (n = this._encoder.handler(g, g.read()));) Array.isArray(n) ? i.push.apply(i, n) : i.push(n);
                if (!this._streaming) {
                    for (; - 1 !== (n = this._encoder.handler(g, g.read()));) Array.isArray(n) ? i.push.apply(i, n) : i.push(n);
                    this._encoder = null
                }
                return new Uint8Array(i)
            }
        }
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(16)),
            s = i(n(12)),
            A = i(n(17)),
            a = i(n(171)),
            C = n(79),
            I = function(t) {
                function e(t) {
                    var n;
                    (0, r.default)(this, e);
                    for (var i = 0, o = 0; o < t.length; o++) i += t[o].length;
                    return (n = (0, g.default)(this, (0, s.default)(e).call(this, i)))._buffers = t, n
                }
                return (0, A.default)(e, t), (0, o.default)(e, [{
                    key: "getUInt8",
                    value: function(t) {
                        for (var e = 0; e < this._buffers.length; e++) {
                            var n = this._buffers[e];
                            if (!(t >= n.length)) return n.getUInt8(t);
                            t -= n.length
                        }
                    }
                }, {
                    key: "getInt8",
                    value: function(t) {
                        for (var e = 0; e < this._buffers.length; e++) {
                            var n = this._buffers[e];
                            if (!(t >= n.length)) return n.getInt8(t);
                            t -= n.length
                        }
                    }
                }, { key: "getFloat64", value: function(t) { for (var e = (0, C.alloc)(8), n = 0; n < 8; n++) e.putUInt8(n, this.getUInt8(t + n)); return e.getFloat64(0) } }]), e
            }(a.default);
        e.default = I
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(58)),
            o = i(n(64)),
            g = i(n(5)),
            s = i(n(6)),
            A = i(n(16)),
            a = i(n(12)),
            C = i(n(17)),
            I = i(n(227)),
            u = i(n(233)),
            c = i(n(174)),
            l = n(39),
            h = function(t) {
                function e(t) {
                    var n, i = t.id,
                        r = t.config,
                        o = t.log,
                        s = t.address,
                        C = t.userAgent,
                        I = t.authToken;
                    return (0, g.default)(this, e), (n = (0, A.default)(this, (0, a.default)(e).call(this, { id: i, config: r, log: o, userAgent: C, authToken: I })))._address = s, n
                }
                var n, i, I;
                return (0, C.default)(e, t), (0, s.default)(e, [{
                    key: "acquireConnection",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        t.accessMode, t.database, t.bookmarks;
                        return this._connectionPool.acquire(this._address).then((function(t) { return new u.default(t, null) }))
                    }
                }, {
                    key: "_hasProtocolVersion",
                    value: (I = (0, o.default)(r.default.mark((function t(e) {
                        var n, i;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return n = c.default.create(this._address, this._config, this._createConnectionErrorHandler(), this._log), t.prev = 1, t.next = 4, n._negotiateProtocol();
                                case 4:
                                    if (!(i = n.protocol())) { t.next = 7; break }
                                    return t.abrupt("return", e(i.version));
                                case 7:
                                    return t.abrupt("return", !1);
                                case 8:
                                    return t.prev = 8, t.next = 11, n.close();
                                case 11:
                                    return t.finish(8);
                                case 12:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this, [
                            [1, , 8, 12]
                        ])
                    }))), function(t) { return I.apply(this, arguments) })
                }, {
                    key: "supportsMultiDb",
                    value: (i = (0, o.default)(r.default.mark((function t() {
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.next = 2, this._hasProtocolVersion((function(t) { return t >= l.BOLT_PROTOCOL_V4_0 }));
                                case 2:
                                    return t.abrupt("return", t.sent);
                                case 3:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function() { return i.apply(this, arguments) })
                }, {
                    key: "supportsTransactionConfig",
                    value: (n = (0, o.default)(r.default.mark((function t() {
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.next = 2, this._hasProtocolVersion((function(t) { return t >= l.BOLT_PROTOCOL_V3 }));
                                case 2:
                                    return t.abrupt("return", t.sent);
                                case 3:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function() { return n.apply(this, arguments) })
                }]), e
            }(I.default);
        e.default = h
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = n(11),
            g = n(24),
            s = [null, void 0, !0, !1, g.ENCRYPTION_ON, g.ENCRYPTION_OFF],
            A = [null, void 0, "TRUST_ALL_CERTIFICATES", "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES", "TRUST_SYSTEM_CA_SIGNED_CERTIFICATES"];
        e.default = function t(e, n, i) {
            (0, r.default)(this, t), this.address = e, this.encrypted = function(t) { var e = t.encrypted; if (-1 === s.indexOf(e)) throw (0, o.newError)("Illegal value of the encrypted setting ".concat(e, ". Expected one of ").concat(s)); return e }(n), this.trust = function(t) { var e = t.trust; if (-1 === A.indexOf(e)) throw (0, o.newError)("Illegal value of the trust setting ".concat(e, ". Expected one of ").concat(A)); return e }(n), this.trustedCertificates = function(t) { return t.trustedCertificates || [] }(n), this.knownHostsPath = function(t) { return t.knownHosts || null }(n), this.connectionErrorCode = i || o.SERVICE_UNAVAILABLE, this.connectionTimeout = function(t) { var e = parseInt(t.connectionTimeout, 10); return 0 === e || e && e < 0 ? null : e || 3e4 }(n)
        }
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(79),
            s = n(11),
            A = i(n(126)),
            a = i(n(228)),
            C = i(n(231)),
            I = i(n(232)),
            u = i(n(373)),
            c = function() {
                function t(e, n, i, o, g) {
                    var s = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : null;
                    (0, r.default)(this, t), this._connection = e, this._channel = n, this._chunker = i, this._disableLosslessIntegers = o, this._log = g, this._serversideRouting = s
                }
                return (0, o.default)(t, [{
                    key: "writeHandshakeRequest",
                    value: function() {
                        var t;
                        this._channel.write(((t = (0, g.alloc)(20)).writeInt32(1616949271), t.writeInt32(260), t.writeInt32(4), t.writeInt32(3), t.writeInt32(2), t.reset(), t))
                    }
                }, { key: "createNegotiatedProtocol", value: function(t) { var e = [t.readUInt8(), t.readUInt8(), t.readUInt8(), t.readUInt8()]; if (72 === e[0] && 84 === e[1] && 84 === e[2] && 80 === e[3]) throw (0, s.newError)("Server responded HTTP. Make sure you are not trying to connect to the http endpoint (HTTP defaults to port 7474 whereas BOLT defaults to port 7687)"); var n = Number(e[3] + "." + e[2]); return this._log.isDebugEnabled() && this._log.debug("".concat(this._connection, " negotiated protocol version ").concat(n)), this._createProtocolWithVersion(n) } }, {
                    key: "_createProtocolWithVersion",
                    value: function(t) {
                        switch (t) {
                            case 1:
                                return new A.default(this._connection, this._chunker, this._disableLosslessIntegers);
                            case 2:
                                return new a.default(this._connection, this._chunker, this._disableLosslessIntegers);
                            case 3:
                                return new C.default(this._connection, this._chunker, this._disableLosslessIntegers);
                            case 4:
                                return new I.default(this._connection, this._chunker, this._disableLosslessIntegers);
                            case 4.1:
                                return new u.default(this._connection, this._chunker, this._disableLosslessIntegers, this._serversideRouting);
                            default:
                                throw (0, s.newError)("Unknown Bolt protocol version: " + t)
                        }
                    }
                }]), t
            }();
        e.default = c
    }, function(t, e, n) {
        "use strict";
        var i = n(37),
            r = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.Unpacker = e.Packer = void 0;
        var o = r(n(5)),
            g = r(n(6)),
            s = r(n(16)),
            A = r(n(12)),
            a = r(n(220)),
            C = r(n(17)),
            I = i(n(226)),
            u = n(229),
            c = n(175),
            l = n(38),
            h = n(230),
            d = function(t) {
                function e() { return (0, o.default)(this, e), (0, s.default)(this, (0, A.default)(e).apply(this, arguments)) }
                return (0, C.default)(e, t), (0, g.default)(e, [{ key: "disableByteArrays", value: function() { throw new Error("Bolt V2 should always support byte arrays") } }, {
                    key: "packable",
                    value: function(t) {
                        var n = this;
                        return (0, u.isPoint)(t) ? function() {
                            return i = n, void(null === (e = t).z || void 0 === e.z ? function(t, e) {
                                var n = [e.packable((0, l.int)(t.srid)), e.packable(t.x), e.packable(t.y)];
                                e.packStruct(88, n)
                            }(e, i) : function(t, e) {
                                var n = [e.packable((0, l.int)(t.srid)), e.packable(t.x), e.packable(t.y), e.packable(t.z)];
                                e.packStruct(89, n)
                            }(e, i));
                            var e, i
                        } : (0, c.isDuration)(t) ? function() { return e = t, i = n, r = (0, l.int)(e.months), o = (0, l.int)(e.days), g = (0, l.int)(e.seconds), s = (0, l.int)(e.nanoseconds), A = [i.packable(r), i.packable(o), i.packable(g), i.packable(s)], void i.packStruct(69, A); var e, i, r, o, g, s, A } : (0, c.isLocalTime)(t) ? function() { return e = t, i = n, r = (0, h.localTimeToNanoOfDay)(e.hour, e.minute, e.second, e.nanosecond), o = [i.packable(r)], void i.packStruct(116, o); var e, i, r, o } : (0, c.isTime)(t) ? function() { return e = t, i = n, r = (0, h.localTimeToNanoOfDay)(e.hour, e.minute, e.second, e.nanosecond), o = (0, l.int)(e.timeZoneOffsetSeconds), g = [i.packable(r), i.packable(o)], void i.packStruct(84, g); var e, i, r, o, g } : (0, c.isDate)(t) ? function() { return e = t, i = n, r = (0, h.dateToEpochDay)(e.year, e.month, e.day), o = [i.packable(r)], void i.packStruct(68, o); var e, i, r, o } : (0, c.isLocalDateTime)(t) ? function() { return e = t, i = n, r = (0, h.localDateTimeToEpochSecond)(e.year, e.month, e.day, e.hour, e.minute, e.second, e.nanosecond), o = (0, l.int)(e.nanosecond), g = [i.packable(r), i.packable(o)], void i.packStruct(100, g); var e, i, r, o, g } : (0, c.isDateTime)(t) ? function() {
                            return i = n, void((e = t).timeZoneId ? function(t, e) {
                                var n = (0, h.localDateTimeToEpochSecond)(t.year, t.month, t.day, t.hour, t.minute, t.second, t.nanosecond),
                                    i = (0, l.int)(t.nanosecond),
                                    r = t.timeZoneId,
                                    o = [e.packable(n), e.packable(i), e.packable(r)];
                                e.packStruct(102, o)
                            }(e, i) : function(t, e) {
                                var n = (0, h.localDateTimeToEpochSecond)(t.year, t.month, t.day, t.hour, t.minute, t.second, t.nanosecond),
                                    i = (0, l.int)(t.nanosecond),
                                    r = (0, l.int)(t.timeZoneOffsetSeconds),
                                    o = [e.packable(n), e.packable(i), e.packable(r)];
                                e.packStruct(70, o)
                            }(e, i));
                            var e, i
                        } : (0, a.default)((0, A.default)(e.prototype), "packable", this).call(this, t)
                    }
                }]), e
            }(I.Packer);
        e.Packer = d;
        var f = function(t) {
            function e() { var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; return (0, o.default)(this, e), (0, s.default)(this, (0, A.default)(e).call(this, t)) }
            return (0, C.default)(e, t), (0, g.default)(e, [{
                key: "_unpackUnknownStruct",
                value: function(t, n, i) {
                    return 88 === t ? function(t, e, n) { return t._verifyStructSize("Point2D", 3, e), new u.Point(t.unpack(n), t.unpack(n), t.unpack(n), void 0) }(this, n, i) : 89 === t ? function(t, e, n) { return t._verifyStructSize("Point3D", 4, e), new u.Point(t.unpack(n), t.unpack(n), t.unpack(n), t.unpack(n)) }(this, n, i) : 69 === t ? function(t, e, n) {
                        t._verifyStructSize("Duration", 4, e);
                        var i = t.unpack(n),
                            r = t.unpack(n),
                            o = t.unpack(n),
                            g = t.unpack(n);
                        return new c.Duration(i, r, o, g)
                    }(this, n, i) : 116 === t ? function(t, e, n, i) { t._verifyStructSize("LocalTime", 1, e); var r = t.unpackInteger(n); return p((0, h.nanoOfDayToLocalTime)(r), i) }(this, n, i, this._disableLosslessIntegers) : 84 === t ? function(t, e, n, i) {
                        t._verifyStructSize("Time", 2, e);
                        var r = t.unpackInteger(n),
                            o = t.unpackInteger(n),
                            g = (0, h.nanoOfDayToLocalTime)(r);
                        return p(new c.Time(g.hour, g.minute, g.second, g.nanosecond, o), i)
                    }(this, n, i, this._disableLosslessIntegers) : 68 === t ? function(t, e, n, i) { t._verifyStructSize("Date", 1, e); var r = t.unpackInteger(n); return p((0, h.epochDayToDate)(r), i) }(this, n, i, this._disableLosslessIntegers) : 100 === t ? function(t, e, n, i) {
                        t._verifyStructSize("LocalDateTime", 2, e);
                        var r = t.unpackInteger(n),
                            o = t.unpackInteger(n);
                        return p((0, h.epochSecondAndNanoToLocalDateTime)(r, o), i)
                    }(this, n, i, this._disableLosslessIntegers) : 70 === t ? function(t, e, n, i) {
                        t._verifyStructSize("DateTimeWithZoneOffset", 3, e);
                        var r = t.unpackInteger(n),
                            o = t.unpackInteger(n),
                            g = t.unpackInteger(n),
                            s = (0, h.epochSecondAndNanoToLocalDateTime)(r, o);
                        return p(new c.DateTime(s.year, s.month, s.day, s.hour, s.minute, s.second, s.nanosecond, g, null), i)
                    }(this, n, i, this._disableLosslessIntegers) : 102 === t ? function(t, e, n, i) {
                        t._verifyStructSize("DateTimeWithZoneId", 3, e);
                        var r = t.unpackInteger(n),
                            o = t.unpackInteger(n),
                            g = t.unpack(n),
                            s = (0, h.epochSecondAndNanoToLocalDateTime)(r, o);
                        return p(new c.DateTime(s.year, s.month, s.day, s.hour, s.minute, s.second, s.nanosecond, null, g), i)
                    }(this, n, i, this._disableLosslessIntegers) : (0, a.default)((0, A.default)(e.prototype), "_unpackUnknownStruct", this).call(this, t, n, i, this._disableLosslessIntegers)
                }
            }]), e
        }(I.Unpacker);

        function p(t, e) {
            if (!e) return t;
            var n = Object.create(Object.getPrototypeOf(t));
            for (var i in t)
                if (t.hasOwnProperty(i)) {
                    var r = t[i];
                    n[i] = (0, l.isInt)(r) ? r.toNumberOrInfinity() : r
                }
            return Object.freeze(n), n
        }
        e.Unpacker = f
    }, function(t, e, n) {
        "use strict";
        var i = n(37),
            r = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var o = r(n(5)),
            g = r(n(6)),
            s = r(n(16)),
            A = r(n(12)),
            a = r(n(17)),
            C = r(n(232)),
            I = i(n(80)),
            u = n(39),
            c = n(45),
            l = function(t) {
                function e(t, n, i, r) { var g; return (0, o.default)(this, e), (g = (0, s.default)(this, (0, A.default)(e).call(this, t, n, i)))._serversideRouting = r, g }
                return (0, a.default)(e, t), (0, g.default)(e, [{
                    key: "initialize",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.userAgent,
                            n = t.authToken,
                            i = t.onError,
                            r = t.onComplete,
                            o = new c.LoginObserver({ connection: this._connection, afterError: i, afterComplete: r });
                        return this._connection.write(I.default.hello(e, n, this._serversideRouting), o, !0), o
                    }
                }, { key: "version", get: function() { return u.BOLT_PROTOCOL_V4_1 } }]), e
            }(C.default);
        e.default = l
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(58)),
            o = i(n(64)),
            g = i(n(5)),
            s = i(n(6)),
            A = i(n(176)),
            a = n(11),
            C = i(n(177)),
            I = function() {
                function t() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                        n = e.create,
                        i = void 0 === n ? function(t, e) { return Promise.resolve() } : n,
                        r = e.destroy,
                        o = void 0 === r ? function(t) { return Promise.resolve() } : r,
                        s = e.validate,
                        a = void 0 === s ? function(t) { return !0 } : s,
                        I = e.installIdleObserver,
                        u = void 0 === I ? function(t, e) {} : I,
                        c = e.removeIdleObserver,
                        l = void 0 === c ? function(t) {} : c,
                        h = e.config,
                        d = void 0 === h ? A.default.defaultConfig() : h,
                        f = e.log,
                        p = void 0 === f ? C.default.noOp() : f;
                    (0, g.default)(this, t), this._create = i, this._destroy = o, this._validate = a, this._installIdleObserver = u, this._removeIdleObserver = l, this._maxSize = d.maxSize, this._acquisitionTimeout = d.acquisitionTimeout, this._pools = {}, this._pendingCreates = {}, this._acquireRequests = {}, this._activeResourceCounts = {}, this._release = this._release.bind(this), this._log = p, this._closed = !1
                }
                var e, n, i;
                return (0, s.default)(t, [{
                    key: "acquire",
                    value: function(t) {
                        var e = this;
                        return this._acquire(t).then((function(n) {
                            var i = t.asKey();
                            if (n) return n;
                            var r = e._acquireRequests;
                            return r[i] || (r[i] = []), new Promise((function(n, o) {
                                var g, s = setTimeout((function() {
                                    var n = r[i];
                                    if (n && (r[i] = n.filter((function(t) { return t !== g }))), g.isCompleted());
                                    else {
                                        var o = e.activeResourceCount(t),
                                            s = e.has(t) ? e._pools[i].length : 0;
                                        g.reject((0, a.newError)("Connection acquisition timed out in ".concat(e._acquisitionTimeout, " ms. Poos status: Active conn count = ").concat(o, ", Idle conn count = ").concat(s, ".")))
                                    }
                                }), e._acquisitionTimeout);
                                g = new l(i, n, o, s, e._log), r[i].push(g)
                            }))
                        }))
                    }
                }, { key: "purge", value: function(t) { return this._purgeKey(t.asKey()) } }, { key: "close", value: function() { var t = this; return this._closed = !0, Promise.all(Object.keys(this._pools).map((function(e) { return t._purgeKey(e) }))) } }, {
                    key: "keepAll",
                    value: function(t) {
                        var e = this,
                            n = t.map((function(t) { return t.asKey() })),
                            i = Object.keys(this._pools).filter((function(t) { return -1 === n.indexOf(t) }));
                        return Promise.all(i.map((function(t) { return e._purgeKey(t) })))
                    }
                }, { key: "has", value: function(t) { return t.asKey() in this._pools } }, { key: "activeResourceCount", value: function(t) { return this._activeResourceCounts[t.asKey()] || 0 } }, {
                    key: "_acquire",
                    value: (i = (0, o.default)(r.default.mark((function t(e) {
                        var n, i, o, g;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    if (!this._closed) { t.next = 2; break }
                                    throw (0, a.newError)("Pool is closed, it is no more able to serve requests.");
                                case 2:
                                    n = e.asKey(), (i = this._pools[n]) || (i = [], this._pools[n] = i, this._pendingCreates[n] = 0);
                                case 5:
                                    if (!i.length) { t.next = 18; break }
                                    if (o = i.pop(), !this._validate(o)) { t.next = 14; break }
                                    return this._removeIdleObserver && this._removeIdleObserver(o), u(n, this._activeResourceCounts), this._log.isDebugEnabled() && this._log.debug("".concat(o, " acquired from the pool ").concat(n)), t.abrupt("return", o);
                                case 14:
                                    return t.next = 16, this._destroy(o);
                                case 16:
                                    t.next = 5;
                                    break;
                                case 18:
                                    if (!(this._maxSize > 0)) { t.next = 22; break }
                                    if (!(this.activeResourceCount(e) + this._pendingCreates[n] >= this._maxSize)) { t.next = 22; break }
                                    return t.abrupt("return", null);
                                case 22:
                                    return this._pendingCreates[n] = this._pendingCreates[n] + 1, t.prev = 23, t.next = 26, this._create(e, this._release);
                                case 26:
                                    g = t.sent, u(n, this._activeResourceCounts), this._log.isDebugEnabled() && this._log.debug("".concat(g, " created for the pool ").concat(n));
                                case 29:
                                    return t.prev = 29, this._pendingCreates[n] = this._pendingCreates[n] - 1, t.finish(29);
                                case 32:
                                    return t.abrupt("return", g);
                                case 33:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this, [
                            [23, , 29, 32]
                        ])
                    }))), function(t) { return i.apply(this, arguments) })
                }, {
                    key: "_release",
                    value: (n = (0, o.default)(r.default.mark((function t(e, n) {
                        var i, o, g = this;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    if (i = e.asKey(), !(o = this._pools[i])) { t.next = 14; break }
                                    if (this._validate(n)) { t.next = 9; break }
                                    return this._log.isDebugEnabled() && this._log.debug("".concat(n, " destroyed and can't be released to the pool ").concat(i, " because it is not functional")), t.next = 7, this._destroy(n);
                                case 7:
                                    t.next = 12;
                                    break;
                                case 9:
                                    this._installIdleObserver && this._installIdleObserver(n, {
                                        onError: function(t) {
                                            g._log.debug("Idle connection ".concat(n, " destroyed because of error: ").concat(t));
                                            var e = g._pools[i];
                                            e && (g._pools[i] = e.filter((function(t) { return t !== n }))), g._destroy(n).catch((function() {}))
                                        }
                                    }), o.push(n), this._log.isDebugEnabled() && this._log.debug("".concat(n, " released to the pool ").concat(i));
                                case 12:
                                    t.next = 17;
                                    break;
                                case 14:
                                    return this._log.isDebugEnabled() && this._log.debug("".concat(n, " destroyed and can't be released to the pool ").concat(i, " because pool has been purged")), t.next = 17, this._destroy(n);
                                case 17:
                                    c(i, this._activeResourceCounts), this._processPendingAcquireRequests(e);
                                case 19:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function(t, e) { return n.apply(this, arguments) })
                }, {
                    key: "_purgeKey",
                    value: (e = (0, o.default)(r.default.mark((function t(e) {
                        var n, i;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    n = this._pools[e] || [];
                                case 1:
                                    if (!n.length) { t.next = 8; break }
                                    return i = n.pop(), this._removeIdleObserver && this._removeIdleObserver(i), t.next = 6, this._destroy(i);
                                case 6:
                                    t.next = 1;
                                    break;
                                case 8:
                                    delete this._pools[e];
                                case 9:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function(t) { return e.apply(this, arguments) })
                }, {
                    key: "_processPendingAcquireRequests",
                    value: function(t) {
                        var e = this,
                            n = t.asKey(),
                            i = this._acquireRequests[n];
                        if (i) {
                            var r = i.shift();
                            r ? this._acquire(t).catch((function(t) { return r.reject(t), null })).then((function(n) { n && (r.isCompleted() ? e._release(t, n) : r.resolve(n)) })) : delete this._acquireRequests[n]
                        }
                    }
                }]), t
            }();

        function u(t, e) {
            var n = e[t] || 0;
            e[t] = n + 1
        }

        function c(t, e) {
            var n = (e[t] || 0) - 1;
            n > 0 ? e[t] = n : delete e[t]
        }
        var l = function() {
                function t(e, n, i, r, o) {
                    (0, g.default)(this, t), this._key = e, this._resolve = n, this._reject = i, this._timeoutId = r, this._log = o, this._completed = !1
                }
                return (0, s.default)(t, [{ key: "isCompleted", value: function() { return this._completed } }, { key: "resolve", value: function(t) { this._completed || (this._completed = !0, clearTimeout(this._timeoutId), this._log.isDebugEnabled() && this._log.debug("".concat(t, " acquired from the pool ").concat(this._key)), this._resolve(t)) } }, { key: "reject", value: function(t) { this._completed || (this._completed = !0, clearTimeout(this._timeoutId), this._reject(t)) } }]), t
            }(),
            h = I;
        e.default = h
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(124)),
            s = n(81),
            A = (n(45), function() {
                function t(e) {
                    (0, r.default)(this, t), this._connectionProvider = e
                }
                return (0, o.default)(t, [{
                    key: "verify",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.database,
                            n = void 0 === e ? "" : e;
                        return a(this._connectionProvider, n)
                    }
                }]), t
            }());

        function a(t, e) { var n = new g.default({ mode: s.READ, database: e, connectionProvider: t }); return n.initializeConnection(), n.getConnection().then((function(t) { return n.close().then((function() { return t.server })) })).catch((function(t) { return n.close().catch((function(t) {})).then((function() { return Promise.reject(t) })) })) }
        e.default = A
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(11),
            s = function() {
                function t(e, n, i, o) {
                    (0, r.default)(this, t), this._maxRetryTimeMs = A(e, 3e4), this._initialRetryDelayMs = A(n, 1e3), this._multiplier = A(i, 2), this._jitterFactor = A(o, .2), this._inFlightTimeoutIds = [], this._verifyAfterConstruction()
                }
                return (0, o.default)(t, [{
                    key: "execute",
                    value: function(t, e) {
                        var n = this;
                        return new Promise((function(i, r) { n._executeTransactionInsidePromise(t, e, i, r) })).catch((function(i) {
                            var r = Date.now(),
                                o = n._initialRetryDelayMs;
                            return n._retryTransactionPromise(t, e, i, r, o)
                        }))
                    }
                }, { key: "close", value: function() { this._inFlightTimeoutIds.forEach((function(t) { return clearTimeout(t) })), this._inFlightTimeoutIds = [] } }, {
                    key: "_retryTransactionPromise",
                    value: function(e, n, i, r, o) {
                        var g = this;
                        return Date.now() - r > this._maxRetryTimeMs || !t._canRetryOn(i) ? Promise.reject(i) : new Promise((function(t, i) {
                            var r = g._computeDelayWithJitter(o),
                                s = setTimeout((function() { g._inFlightTimeoutIds = g._inFlightTimeoutIds.filter((function(t) { return t !== s })), g._executeTransactionInsidePromise(e, n, t, i) }), r);
                            g._inFlightTimeoutIds.push(s)
                        })).catch((function(t) { var i = o * g._multiplier; return g._retryTransactionPromise(e, n, t, r, i) }))
                    }
                }, {
                    key: "_executeTransactionInsidePromise",
                    value: function(t, e, n, i) {
                        var r, o = this;
                        try { r = t() } catch (t) { return void i(t) }
                        this._safeExecuteTransactionWork(r, e).then((function(t) { return o._handleTransactionWorkSuccess(t, r, n, i) })).catch((function(t) { return o._handleTransactionWorkFailure(t, r, i) }))
                    }
                }, { key: "_safeExecuteTransactionWork", value: function(t, e) { try { var n = e(t); return Promise.resolve(n) } catch (t) { return Promise.reject(t) } } }, { key: "_handleTransactionWorkSuccess", value: function(t, e, n, i) { e.isOpen() ? e.commit().then((function() { n(t) })).catch((function(t) { i(t) })) : n(t) } }, { key: "_handleTransactionWorkFailure", value: function(t, e, n) { e.isOpen() ? e.rollback().catch((function(t) {})).then((function() { return n(t) })) : n(t) } }, {
                    key: "_computeDelayWithJitter",
                    value: function(t) {
                        var e = t * this._jitterFactor,
                            n = t - e,
                            i = t + e;
                        return Math.random() * (i - n) + n
                    }
                }, { key: "_verifyAfterConstruction", value: function() { if (this._maxRetryTimeMs < 0) throw (0, g.newError)("Max retry time should be >= 0: " + this._maxRetryTimeMs); if (this._initialRetryDelayMs < 0) throw (0, g.newError)("Initial retry delay should >= 0: " + this._initialRetryDelayMs); if (this._multiplier < 1) throw (0, g.newError)("Multiplier should be >= 1.0: " + this._multiplier); if (this._jitterFactor < 0 || this._jitterFactor > 1) throw (0, g.newError)("Jitter factor should be in [0.0, 1.0]: " + this._jitterFactor) } }], [{ key: "_canRetryOn", value: function(t) { return t && t instanceof g.Neo4jError && t.code && (t.code === g.SERVICE_UNAVAILABLE || t.code === g.SESSION_EXPIRED || this._isTransientError(t)) } }, { key: "_isTransientError", value: function(t) { var e = t.code; return e.indexOf("TransientError") >= 0 && ("Neo.TransientError.Transaction.Terminated" !== e && "Neo.TransientError.Transaction.LockClientStopped" !== e) } }]), t
            }();

        function A(t, e) { return t || 0 === t ? t : e }
        e.default = s
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(129),
            s = n(180),
            A = i(n(235)),
            a = (i(n(127)), i(n(378))),
            C = n(39),
            I = i(n(103)),
            u = i(n(379)),
            c = function() {
                function t() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                        n = e.session,
                        i = e.config;
                    (0, r.default)(this, t), this._session = n, this._retryLogic = l(i)
                }
                return (0, o.default)(t, [{ key: "run", value: function(t, e, n) { var i = this; return new A.default(new g.Observable((function(r) { try { r.next(i._session.run(t, e, n)), r.complete() } catch (t) { r.error(t) } return function() {} }))) } }, { key: "beginTransaction", value: function(t) { return this._beginTransaction(this._session._mode, t) } }, { key: "readTransaction", value: function(t, e) { return this._runTransaction(C.ACCESS_MODE_READ, t, e) } }, { key: "writeTransaction", value: function(t, e) { return this._runTransaction(C.ACCESS_MODE_WRITE, t, e) } }, { key: "close", value: function() { var t = this; return new g.Observable((function(e) { t._session.close().then((function() { e.complete() })).catch((function(t) { return e.error(t) })) })) } }, { key: "lastBookmark", value: function() { return this._session.lastBookmark() } }, {
                    key: "_beginTransaction",
                    value: function(t, e) {
                        var n = this,
                            i = I.default.empty();
                        return e && (i = new I.default(e)), new g.Observable((function(e) { try { e.next(new a.default(n._session._beginTransaction(t, i))), e.complete() } catch (t) { e.error(t) } return function() {} }))
                    }
                }, { key: "_runTransaction", value: function(t, e, n) { I.default.empty(); return n && new I.default(n), this._retryLogic.retry(this._beginTransaction(t, n).pipe((0, s.flatMap)((function(t) { return (0, g.defer)((function() { try { return e(t) } catch (t) { return (0, g.throwError)(t) } })).pipe((0, s.catchError)((function(e) { return t.rollback().pipe((0, s.concat)((0, g.throwError)(e))) })), (0, s.concat)(t.commit())) })))) } }]), t
            }();

        function l(t) { var e = t && t.maxTransactionRetryTime ? t.maxTransactionRetryTime : null; return new u.default({ maxRetryTimeout: e }) }
        e.default = c
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(129),
            s = i(n(235)),
            A = (i(n(234)), function() {
                function t(e) {
                    (0, r.default)(this, t), this._txc = e
                }
                return (0, o.default)(t, [{ key: "run", value: function(t, e) { var n = this; return new s.default(new g.Observable((function(i) { try { i.next(n._txc.run(t, e)), i.complete() } catch (t) { i.error(t) } return function() {} }))) } }, { key: "commit", value: function() { var t = this; return new g.Observable((function(e) { t._txc.commit().then((function() { e.complete() })).catch((function(t) { return e.error(t) })) })) } }, { key: "rollback", value: function() { var t = this; return new g.Observable((function(e) { t._txc.rollback().then((function() { e.complete() })).catch((function(t) { return e.error(t) })) })) } }]), t
            }());
        e.default = A
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(11),
            s = n(129),
            A = n(180),
            a = (i(n(177)), function() {
                function t() {
                    var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                        n = e.maxRetryTimeout,
                        i = void 0 === n ? 3e4 : n,
                        o = e.initialDelay,
                        g = void 0 === o ? 1e3 : o,
                        s = e.delayMultiplier,
                        A = void 0 === s ? 2 : s,
                        a = e.delayJitter,
                        I = void 0 === a ? .2 : a,
                        u = e.logger,
                        c = void 0 === u ? null : u;
                    (0, r.default)(this, t), this._maxRetryTimeout = C(i, 3e4), this._initialDelay = C(g, 1e3), this._delayMultiplier = C(A, 2), this._delayJitter = C(I, .2), this._logger = c
                }
                return (0, o.default)(t, [{
                    key: "retry",
                    value: function(e) {
                        var n = this;
                        return e.pipe((0, A.retryWhen)((function(e) {
                            var i = [],
                                r = Date.now(),
                                o = 1,
                                a = n._initialDelay;
                            return e.pipe((0, A.flatMap)((function(e) { if (!t._canRetryOn(e)) return (0, s.throwError)(e); if (i.push(e), o >= 2 && Date.now() - r >= n._maxRetryTimeout) { var C = (0, g.newError)("Failed after retried for ".concat(o, " times in ").concat(n._maxRetryTimeout, " ms. Make sure that your database is online and retry again."), g.SERVICE_UNAVAILABLE); return C.seenErrors = i, (0, s.throwError)(C) } var I = n._computeNextDelay(a); return a *= n._delayMultiplier, o++, n._logger && n._logger.warn("Transaction failed and will be retried in ".concat(I)), (0, s.of)(1).pipe((0, A.delay)(I)) })))
                        })))
                    }
                }, { key: "_computeNextDelay", value: function(t) { var e = t * this._delayJitter; return t - e + 2 * e * Math.random() } }], [{ key: "_canRetryOn", value: function(t) { return t && t.code && (t.code === g.SERVICE_UNAVAILABLE || t.code === g.SESSION_EXPIRED || this._isTransientError(t)) } }, { key: "_isTransientError", value: function(t) { var e = t.code; return e.indexOf("TransientError") >= 0 && ("Neo.TransientError.Transaction.Terminated" !== e && "Neo.TransientError.Transaction.LockClientStopped" !== e) } }]), t
            }());

        function C(t, e) { return t || 0 === t ? t : e }
        e.default = a
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(16)),
            s = i(n(12)),
            A = i(n(17)),
            a = n(81),
            C = (n(11), i(n(381))),
            I = (i(n(239)), i(n(178)), i(n(392)));

        function u(t) { var e = t.resolver; if (e && "function" != typeof e) throw new TypeError("Configured resolver should be a function. Got: ".concat(e)); return t }
        var c = function(t) {
            function e(t, n, i) {
                var o, A = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},
                    a = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : {};
                return (0, r.default)(this, e), (o = (0, g.default)(this, (0, s.default)(e).call(this, t, i, A, u(a))))._routingContext = n, o
            }
            return (0, A.default)(e, t), (0, o.default)(e, [{ key: "_afterConstruction", value: function() { this._log.info("Routing driver ".concat(this._id, " created for server address ").concat(this._address)) } }, { key: "_createConnectionProvider", value: function(t, e, n) { return new C.default({ id: this._id, address: t, routingContext: this._routingContext, hostNameResolver: (i = this._config, new I.default(i.resolver)), config: this._config, log: this._log, userAgent: e, authToken: n }); var i } }, { key: "_supportsRouting", value: function() { return !0 } }]), e
        }(a.Driver);
        e.default = c
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(58)),
            o = i(n(64)),
            g = i(n(5)),
            s = i(n(6)),
            A = i(n(16)),
            a = i(n(12)),
            C = i(n(17)),
            I = n(11),
            u = n(81),
            c = i(n(127)),
            l = i(n(236)),
            h = i(n(386)),
            d = i(n(237)),
            f = n(79),
            p = i(n(389)),
            v = i(n(227)),
            y = i(n(178)),
            b = i(n(233)),
            m = i(n(239)),
            w = i(n(63)),
            _ = i(n(174)),
            k = n(38),
            x = n(39),
            O = (0, k.int)(3e4),
            E = function(t) {
                function e(t) {
                    var n, i = t.id,
                        r = t.address,
                        o = t.routingContext,
                        s = t.hostNameResolver,
                        C = t.config,
                        I = t.log,
                        u = t.userAgent,
                        c = t.authToken,
                        l = t.routingTablePurgeDelay;
                    return (0, g.default)(this, e), (n = (0, A.default)(this, (0, a.default)(e).call(this, { id: i, config: C, log: I, userAgent: u, authToken: c }, (function(t) { return _.default.create(t, n._config, n._createConnectionErrorHandler(), n._log, o || {}) }))))._seedRouter = r, n._routingTables = {}, n._rediscovery = new h.default(new d.default(o, r.toString())), n._loadBalancingStrategy = new m.default(n._connectionPool), n._hostNameResolver = s, n._dnsResolver = new f.HostNameResolver, n._log = I, n._useSeedRouter = !0, n._routingTablePurgeDelay = l ? (0, k.int)(l) : O, n
                }
                var n, i, v, E, T, S, D, N, R, P, M, j;
                return (0, C.default)(e, t), (0, s.default)(e, [{ key: "_createConnectionErrorHandler", value: function() { return new y.default(I.SESSION_EXPIRED) } }, { key: "_handleUnavailability", value: function(t, e, n) { return this._log.warn("Routing driver ".concat(this._id, " will forget ").concat(e, " for database '").concat(n, "' because of an error ").concat(t.code, " '").concat(t.message, "'")), this.forget(e, n || ""), t } }, { key: "_handleWriteFailure", value: function(t, e, n) { return this._log.warn("Routing driver ".concat(this._id, " will forget writer ").concat(e, " for database '").concat(n, "' because of an error ").concat(t.code, " '").concat(t.message, "'")), this.forgetWriter(e, n || ""), (0, I.newError)("No longer possible to write to server at " + e, I.SESSION_EXPIRED) } }, {
                    key: "acquireConnection",
                    value: (j = (0, o.default)(r.default.mark((function t() {
                        var e, n, i, o, g, s, A, a, C, c = this,
                            l = arguments;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return e = l.length > 0 && void 0 !== l[0] ? l[0] : {}, n = e.accessMode, i = e.database, o = e.bookmark, A = new y.default(I.SESSION_EXPIRED, (function(t, e) { return c._handleUnavailability(t, e, i) }), (function(t, e) { return c._handleWriteFailure(t, e, i) })), t.next = 4, this._freshRoutingTable({ accessMode: n, database: i || "", bookmark: o });
                                case 4:
                                    if (a = t.sent, n !== u.READ) { t.next = 10; break }
                                    s = this._loadBalancingStrategy.selectReader(a.readers), g = "read", t.next = 16;
                                    break;
                                case 10:
                                    if (n !== u.WRITE) { t.next = 15; break }
                                    s = this._loadBalancingStrategy.selectWriter(a.writers), g = "write", t.next = 16;
                                    break;
                                case 15:
                                    throw (0, I.newError)("Illegal mode " + n);
                                case 16:
                                    if (s) { t.next = 18; break }
                                    throw (0, I.newError)("Failed to obtain connection towards ".concat(g, " server. Known routing table is: ").concat(a), I.SESSION_EXPIRED);
                                case 18:
                                    return t.prev = 18, t.next = 21, this._acquireConnectionToServer(s, g, a);
                                case 21:
                                    return C = t.sent, t.abrupt("return", new b.default(C, A));
                                case 25:
                                    throw t.prev = 25, t.t0 = t.catch(18), A.handleAndTransformError(t.t0, s);
                                case 29:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this, [
                            [18, 25]
                        ])
                    }))), function() { return j.apply(this, arguments) })
                }, {
                    key: "_hasProtocolVersion",
                    value: (M = (0, o.default)(r.default.mark((function t(e) {
                        var n, i, o, g, s;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.next = 2, this._resolveSeedRouter(this._seedRouter);
                                case 2:
                                    n = t.sent, o = 0;
                                case 4:
                                    if (!(o < n.length)) { t.next = 25; break }
                                    return g = _.default.create(n[o], this._config, this._createConnectionErrorHandler(), this._log), t.prev = 6, t.next = 9, g._negotiateProtocol();
                                case 9:
                                    if (!(s = g.protocol())) { t.next = 12; break }
                                    return t.abrupt("return", e(s.version));
                                case 12:
                                    return t.abrupt("return", !1);
                                case 15:
                                    t.prev = 15, t.t0 = t.catch(6), i = t.t0;
                                case 18:
                                    return t.prev = 18, t.next = 21, g.close();
                                case 21:
                                    return t.finish(18);
                                case 22:
                                    o++, t.next = 4;
                                    break;
                                case 25:
                                    if (!i) { t.next = 27; break }
                                    throw i;
                                case 27:
                                    return t.abrupt("return", !1);
                                case 28:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this, [
                            [6, 15, 18, 22]
                        ])
                    }))), function(t) { return M.apply(this, arguments) })
                }, {
                    key: "supportsMultiDb",
                    value: (P = (0, o.default)(r.default.mark((function t() {
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.next = 2, this._hasProtocolVersion((function(t) { return t >= x.BOLT_PROTOCOL_V4_0 }));
                                case 2:
                                    return t.abrupt("return", t.sent);
                                case 3:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function() { return P.apply(this, arguments) })
                }, {
                    key: "supportsTransactionConfig",
                    value: (R = (0, o.default)(r.default.mark((function t() {
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.next = 2, this._hasProtocolVersion((function(t) { return t >= x.BOLT_PROTOCOL_V3 }));
                                case 2:
                                    return t.abrupt("return", t.sent);
                                case 3:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function() { return R.apply(this, arguments) })
                }, { key: "forget", value: function(t, e) { e || "" === e ? this._routingTables[e].forget(t) : Object.values(this._routingTables).forEach((function(e) { return e.forget(t) })), this._connectionPool.purge(t).catch((function() {})) } }, { key: "forgetWriter", value: function(t, e) { e || "" === e ? this._routingTables[e].forgetWriter(t) : Object.values(this._routingTables).forEach((function(e) { return e.forgetWriter(t) })) } }, { key: "_acquireConnectionToServer", value: function(t, e, n) { return this._connectionPool.acquire(t) } }, {
                    key: "_freshRoutingTable",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = t.accessMode,
                            n = t.database,
                            i = t.bookmark,
                            r = this._routingTables[n] || new l.default({ database: n });
                        return r.isStaleFor(e) ? (this._log.info('Routing table is stale for database: "'.concat(n, '" and access mode: "').concat(e, '": ').concat(r)), this._refreshRoutingTable(r, i)) : r
                    }
                }, { key: "_refreshRoutingTable", value: function(t, e) { var n = t.routers; return this._useSeedRouter ? this._fetchRoutingTableFromSeedRouterFallbackToKnownRouters(n, t, e) : this._fetchRoutingTableFromKnownRoutersFallbackToSeedRouter(n, t, e) } }, {
                    key: "_fetchRoutingTableFromSeedRouterFallbackToKnownRouters",
                    value: (N = (0, o.default)(r.default.mark((function t(e, n, i) {
                        var o, g;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return o = [], t.next = 3, this._fetchRoutingTableUsingSeedRouter(o, this._seedRouter, n, i);
                                case 3:
                                    if (!(g = t.sent)) { t.next = 8; break }
                                    this._useSeedRouter = !1, t.next = 11;
                                    break;
                                case 8:
                                    return t.next = 10, this._fetchRoutingTableUsingKnownRouters(e, n, i);
                                case 10:
                                    g = t.sent;
                                case 11:
                                    return t.next = 13, this._applyRoutingTableIfPossible(n, g);
                                case 13:
                                    return t.abrupt("return", t.sent);
                                case 14:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function(t, e, n) { return N.apply(this, arguments) })
                }, {
                    key: "_fetchRoutingTableFromKnownRoutersFallbackToSeedRouter",
                    value: (D = (0, o.default)(r.default.mark((function t(e, n, i) {
                        var o;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.next = 2, this._fetchRoutingTableUsingKnownRouters(e, n, i);
                                case 2:
                                    if (o = t.sent) { t.next = 7; break }
                                    return t.next = 6, this._fetchRoutingTableUsingSeedRouter(e, this._seedRouter, n, i);
                                case 6:
                                    o = t.sent;
                                case 7:
                                    return t.next = 9, this._applyRoutingTableIfPossible(n, o);
                                case 9:
                                    return t.abrupt("return", t.sent);
                                case 10:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function(t, e, n) { return D.apply(this, arguments) })
                }, {
                    key: "_fetchRoutingTableUsingKnownRouters",
                    value: (S = (0, o.default)(r.default.mark((function t(n, i, o) {
                        var g, s;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.next = 2, this._fetchRoutingTable(n, i, o);
                                case 2:
                                    if (!(g = t.sent)) { t.next = 5; break }
                                    return t.abrupt("return", g);
                                case 5:
                                    return s = n.length - 1, e._forgetRouter(i, n, s), t.abrupt("return", null);
                                case 8:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function(t, e, n) { return S.apply(this, arguments) })
                }, {
                    key: "_fetchRoutingTableUsingSeedRouter",
                    value: (T = (0, o.default)(r.default.mark((function t(e, n, i, o) {
                        var g, s;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.next = 2, this._resolveSeedRouter(n);
                                case 2:
                                    return g = t.sent, s = g.filter((function(t) { return e.indexOf(t) < 0 })), t.next = 6, this._fetchRoutingTable(s, i, o);
                                case 6:
                                    return t.abrupt("return", t.sent);
                                case 7:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function(t, e, n, i) { return T.apply(this, arguments) })
                }, {
                    key: "_resolveSeedRouter",
                    value: (E = (0, o.default)(r.default.mark((function t(e) {
                        var n, i, o = this;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.next = 2, this._hostNameResolver.resolve(e);
                                case 2:
                                    return n = t.sent, t.next = 5, Promise.all(n.map((function(t) { return o._dnsResolver.resolve(t) })));
                                case 5:
                                    return i = t.sent, t.abrupt("return", [].concat.apply([], i));
                                case 7:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function(t) { return E.apply(this, arguments) })
                }, {
                    key: "_fetchRoutingTable",
                    value: function(t, n, i) {
                        var g = this;
                        return t.reduce(function() {
                            var s = (0, o.default)(r.default.mark((function o(s, A, a) {
                                var C, I, u;
                                return r.default.wrap((function(r) {
                                    for (;;) switch (r.prev = r.next) {
                                        case 0:
                                            return r.next = 2, s;
                                        case 2:
                                            if (!(C = r.sent)) { r.next = 7; break }
                                            return r.abrupt("return", C);
                                        case 7:
                                            I = a - 1, e._forgetRouter(n, t, I);
                                        case 9:
                                            return r.next = 11, g._createSessionForRediscovery(A, i);
                                        case 11:
                                            if (!(u = r.sent)) { r.next = 27; break }
                                            return r.prev = 13, r.next = 16, g._rediscovery.lookupRoutingTableOnRouter(u, n.database, A);
                                        case 16:
                                            return r.abrupt("return", r.sent);
                                        case 19:
                                            if (r.prev = 19, r.t0 = r.catch(13), !r.t0 || "Neo.ClientError.Database.DatabaseNotFound" !== r.t0.code) { r.next = 23; break }
                                            throw r.t0;
                                        case 23:
                                            return g._log.warn("unable to fetch routing table because of an error ".concat(r.t0)), r.abrupt("return", null);
                                        case 25:
                                            r.next = 28;
                                            break;
                                        case 27:
                                            return r.abrupt("return", null);
                                        case 28:
                                        case "end":
                                            return r.stop()
                                    }
                                }), o, null, [
                                    [13, 19]
                                ])
                            })));
                            return function(t, e, n) { return s.apply(this, arguments) }
                        }(), Promise.resolve(null))
                    }
                }, {
                    key: "_createSessionForRediscovery",
                    value: (v = (0, o.default)(r.default.mark((function t(e, n) {
                        var i, o;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.prev = 0, t.next = 3, this._connectionPool.acquire(e);
                                case 3:
                                    if (i = t.sent, o = new p.default(i), !(i.protocol().version < 4)) { t.next = 8; break }
                                    return t.abrupt("return", new c.default({ mode: u.WRITE, bookmark: w.default.empty(), connectionProvider: o }));
                                case 8:
                                    return t.abrupt("return", new c.default({ mode: u.READ, database: "system", bookmark: n, connectionProvider: o }));
                                case 11:
                                    if (t.prev = 11, t.t0 = t.catch(0), !t.t0 || "Neo.ClientError.Security.Unauthorized" !== t.t0.code) { t.next = 15; break }
                                    throw t.t0;
                                case 15:
                                    return t.abrupt("return", null);
                                case 16:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this, [
                            [0, 11]
                        ])
                    }))), function(t, e) { return v.apply(this, arguments) })
                }, {
                    key: "_applyRoutingTableIfPossible",
                    value: (i = (0, o.default)(r.default.mark((function t(e, n) {
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    if (n) { t.next = 2; break }
                                    throw (0, I.newError)("Could not perform discovery. No routing servers available. Known routing table: ".concat(e), I.SERVICE_UNAVAILABLE);
                                case 2:
                                    return 0 === n.writers.length && (this._useSeedRouter = !0), t.next = 5, this._updateRoutingTable(n);
                                case 5:
                                    return t.abrupt("return", n);
                                case 6:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function(t, e) { return i.apply(this, arguments) })
                }, {
                    key: "_updateRoutingTable",
                    value: (n = (0, o.default)(r.default.mark((function t(e) {
                        var n = this;
                        return r.default.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    return t.next = 2, this._connectionPool.keepAll(e.allServers());
                                case 2:
                                    Object.values(this._routingTables).forEach((function(t) { t.isExpiredFor(n._routingTablePurgeDelay) && delete n._routingTables[t.database] })), this._routingTables[e.database] = e, this._log.info("Updated routing table ".concat(e));
                                case 5:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this)
                    }))), function(t) { return n.apply(this, arguments) })
                }], [{
                    key: "_forgetRouter",
                    value: function(t, e, n) {
                        var i = e[n];
                        t && i && t.forgetRouter(i)
                    }
                }]), e
            }(v.default);
        e.default = E
    }, function(t, e, n) {
        var i = n(383),
            r = n(384),
            o = n(222),
            g = n(385);
        t.exports = function(t) { return i(t) || r(t) || o(t) || g() }
    }, function(t, e, n) {
        var i = n(223);
        t.exports = function(t) { if (Array.isArray(t)) return i(t) }
    }, function(t, e) { t.exports = function(t) { if ("undefined" != typeof Symbol && Symbol.iterator in Object(t)) return Array.from(t) } }, function(t, e) { t.exports = function() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") } }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(58)),
            o = i(n(64)),
            g = i(n(5)),
            s = i(n(6)),
            A = i(n(236)),
            a = (i(n(237)), n(11)),
            C = function() {
                function t(e) {
                    (0, g.default)(this, t), this._routingUtil = e
                }
                var e;
                return (0, s.default)(t, [{
                    key: "lookupRoutingTableOnRouter",
                    value: (e = (0, o.default)(r.default.mark((function e(n, i, o) {
                        var g, s, C, I, u, c, l;
                        return r.default.wrap((function(e) {
                            for (;;) switch (e.prev = e.next) {
                                case 0:
                                    return e.next = 2, this._routingUtil.callRoutingProcedure(n, i, o);
                                case 2:
                                    if (null !== (g = e.sent)) { e.next = 5; break }
                                    return e.abrupt("return", null);
                                case 5:
                                    if (1 === g.length) { e.next = 7; break }
                                    throw (0, a.newError)('Illegal response from router "' + o + '". Received ' + g.length + " records but expected only one.\n" + JSON.stringify(g), a.PROTOCOL_ERROR);
                                case 7:
                                    return s = g[0], C = this._routingUtil.parseTtl(s, o), I = this._routingUtil.parseServers(s, o), u = I.routers, c = I.readers, l = I.writers, t._assertNonEmpty(u, "routers", o), t._assertNonEmpty(c, "readers", o), e.abrupt("return", new A.default({ database: i, routers: u, readers: c, writers: l, expirationTime: C }));
                                case 13:
                                case "end":
                                    return e.stop()
                            }
                        }), e, this)
                    }))), function(t, n, i) { return e.apply(this, arguments) })
                }], [{ key: "_assertNonEmpty", value: function(t, e, n) { if (0 === t.length) throw (0, a.newError)("Received no " + e + " from router " + n, a.PROTOCOL_ERROR) } }]), t
            }();
        e.default = C
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.VERSION_IN_DEV = e.VERSION_4_0_0 = e.VERSION_3_5_0 = e.VERSION_3_4_0 = e.VERSION_3_2_0 = e.ServerVersion = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = n(24),
            s = new RegExp("^(Neo4j/)?(\\d+)\\.(\\d+)(?:\\.)?(\\d*)(\\.|-|\\+)?([0-9A-Za-z-.]*)?$"),
            A = function() {
                function t(e, n, i, o) {
                    (0, r.default)(this, t), this.major = e, this.minor = n, this.patch = i, this._originalVersionString = o
                }
                return (0, o.default)(t, [{ key: "compareTo", value: function(t) { var e = C(this.major, t.major); return 0 === e && 0 === (e = C(this.minor, t.minor)) && (e = C(this.patch, t.patch)), e } }, { key: "toString", value: function() { return this._originalVersionString ? this._originalVersionString : "".concat(this.major, ".").concat(this.minor, ".").concat(this.patch) } }], [{ key: "fromDriver", value: function(e) { var n = e.session(); return n.run("RETURN 1").then((function(e) { return n.close().then((function() { return t.fromString(e.summary.server.version) })) })) } }, { key: "fromString", value: function(e) { if (!e) return new t(3, 0, 0); if ((0, g.assertString)(e, "Neo4j version string"), e.toLowerCase() === "Neo4j/dev".toLowerCase()) return d; var n = e.match(s); if (!n) throw new Error("Unparsable Neo4j version: ".concat(e)); return new t(a(n[2]), a(n[3]), a(n[4] || 0), e) } }]), t
            }();

        function a(t, e) { var n = parseInt(t, 10); if (!n && 0 !== n) throw new Error("Unparsable number ".concat(e, ": '").concat(t, "'")); return n }

        function C(t, e) { return t < e ? -1 : t === e ? 0 : 1 }
        e.ServerVersion = A;
        var I = A.fromString("Neo4j/3.2.0");
        e.VERSION_3_2_0 = I;
        var u = A.fromString("Neo4j/3.4.0");
        e.VERSION_3_4_0 = u;
        var c = A.fromString("Neo4j/3.5.0");
        e.VERSION_3_5_0 = c;
        var l = A.fromString("Neo4j/4.0.0");
        e.VERSION_4_0_0 = l;
        var h = Number.MAX_SAFE_INTEGER,
            d = new A(h, h, h, "Neo4j/dev");
        e.VERSION_IN_DEV = d
    }, function(t, e, n) {
        /** @license URI.js v4.4.0 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */
        ! function(t) {
            "use strict";

            function e() { for (var t = arguments.length, e = Array(t), n = 0; n < t; n++) e[n] = arguments[n]; if (e.length > 1) { e[0] = e[0].slice(0, -1); for (var i = e.length - 1, r = 1; r < i; ++r) e[r] = e[r].slice(1, -1); return e[i] = e[i].slice(1), e.join("") } return e[0] }

            function n(t) { return "(?:" + t + ")" }

            function i(t) { return void 0 === t ? "undefined" : null === t ? "null" : Object.prototype.toString.call(t).split(" ").pop().split("]").shift().toLowerCase() }

            function r(t) { return t.toUpperCase() }

            function o(t) {
                var i = e("[0-9]", "[A-Fa-f]"),
                    r = n(n("%[EFef]" + i + "%" + i + i + "%" + i + i) + "|" + n("%[89A-Fa-f]" + i + "%" + i + i) + "|" + n("%" + i + i)),
                    o = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]",
                    g = e("[\\:\\/\\?\\#\\[\\]\\@]", o),
                    s = t ? "[\\uE000-\\uF8FF]" : "[]",
                    A = e("[A-Za-z]", "[0-9]", "[\\-\\.\\_\\~]", t ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]"),
                    a = n("[A-Za-z]" + e("[A-Za-z]", "[0-9]", "[\\+\\-\\.]") + "*"),
                    C = n(n(r + "|" + e(A, o, "[\\:]")) + "*"),
                    I = (n(n("25[0-5]") + "|" + n("2[0-4][0-9]") + "|" + n("1[0-9][0-9]") + "|" + n("[1-9][0-9]") + "|[0-9]"), n(n("25[0-5]") + "|" + n("2[0-4][0-9]") + "|" + n("1[0-9][0-9]") + "|" + n("0?[1-9][0-9]") + "|0?0?[0-9]")),
                    u = n(I + "\\." + I + "\\." + I + "\\." + I),
                    c = n(i + "{1,4}"),
                    l = n(n(c + "\\:" + c) + "|" + u),
                    h = n(n(c + "\\:") + "{6}" + l),
                    d = n("\\:\\:" + n(c + "\\:") + "{5}" + l),
                    f = n(n(c) + "?\\:\\:" + n(c + "\\:") + "{4}" + l),
                    p = n(n(n(c + "\\:") + "{0,1}" + c) + "?\\:\\:" + n(c + "\\:") + "{3}" + l),
                    v = n(n(n(c + "\\:") + "{0,2}" + c) + "?\\:\\:" + n(c + "\\:") + "{2}" + l),
                    y = n(n(n(c + "\\:") + "{0,3}" + c) + "?\\:\\:" + c + "\\:" + l),
                    b = n(n(n(c + "\\:") + "{0,4}" + c) + "?\\:\\:" + l),
                    m = n(n(n(c + "\\:") + "{0,5}" + c) + "?\\:\\:" + c),
                    w = n(n(n(c + "\\:") + "{0,6}" + c) + "?\\:\\:"),
                    _ = n([h, d, f, p, v, y, b, m, w].join("|")),
                    k = n(n(A + "|" + r) + "+"),
                    x = (n(_ + "\\%25" + k), n(_ + n("\\%25|\\%(?!" + i + "{2})") + k)),
                    O = n("[vV]" + i + "+\\." + e(A, o, "[\\:]") + "+"),
                    E = n("\\[" + n(x + "|" + _ + "|" + O) + "\\]"),
                    T = n(n(r + "|" + e(A, o)) + "*"),
                    S = n(E + "|" + u + "(?!" + T + ")|" + T),
                    D = n("[0-9]*"),
                    N = n(n(C + "@") + "?" + S + n("\\:" + D) + "?"),
                    R = n(r + "|" + e(A, o, "[\\:\\@]")),
                    P = n(R + "*"),
                    M = n(R + "+"),
                    j = n(n(r + "|" + e(A, o, "[\\@]")) + "+"),
                    F = n(n("\\/" + P) + "*"),
                    z = n("\\/" + n(M + F) + "?"),
                    L = n(j + F),
                    B = n(M + F),
                    Z = "(?!" + R + ")",
                    V = (n(F + "|" + z + "|" + L + "|" + B + "|" + Z), n(n(R + "|" + e("[\\/\\?]", s)) + "*")),
                    Y = n(n(R + "|[\\/\\?]") + "*"),
                    G = n(n("\\/\\/" + N + F) + "|" + z + "|" + B + "|" + Z),
                    U = n(a + "\\:" + G + n("\\?" + V) + "?" + n("\\#" + Y) + "?"),
                    W = n(n("\\/\\/" + N + F) + "|" + z + "|" + L + "|" + Z),
                    H = n(W + n("\\?" + V) + "?" + n("\\#" + Y) + "?");
                return n(U + "|" + H), n(a + "\\:" + G + n("\\?" + V) + "?"), n(n("\\/\\/(" + n("(" + C + ")@") + "?(" + S + ")" + n("\\:(" + D + ")") + "?)") + "?(" + F + "|" + z + "|" + B + "|" + Z + ")"), n("\\?(" + V + ")"), n("\\#(" + Y + ")"), n(n("\\/\\/(" + n("(" + C + ")@") + "?(" + S + ")" + n("\\:(" + D + ")") + "?)") + "?(" + F + "|" + z + "|" + L + "|" + Z + ")"), n("\\?(" + V + ")"), n("\\#(" + Y + ")"), n(n("\\/\\/(" + n("(" + C + ")@") + "?(" + S + ")" + n("\\:(" + D + ")") + "?)") + "?(" + F + "|" + z + "|" + B + "|" + Z + ")"), n("\\?(" + V + ")"), n("\\#(" + Y + ")"), n("(" + C + ")@"), n("\\:(" + D + ")"), { NOT_SCHEME: new RegExp(e("[^]", "[A-Za-z]", "[0-9]", "[\\+\\-\\.]"), "g"), NOT_USERINFO: new RegExp(e("[^\\%\\:]", A, o), "g"), NOT_HOST: new RegExp(e("[^\\%\\[\\]\\:]", A, o), "g"), NOT_PATH: new RegExp(e("[^\\%\\/\\:\\@]", A, o), "g"), NOT_PATH_NOSCHEME: new RegExp(e("[^\\%\\/\\@]", A, o), "g"), NOT_QUERY: new RegExp(e("[^\\%]", A, o, "[\\:\\@\\/\\?]", s), "g"), NOT_FRAGMENT: new RegExp(e("[^\\%]", A, o, "[\\:\\@\\/\\?]"), "g"), ESCAPE: new RegExp(e("[^]", A, o), "g"), UNRESERVED: new RegExp(A, "g"), OTHER_CHARS: new RegExp(e("[^\\%]", A, g), "g"), PCT_ENCODED: new RegExp(r, "g"), IPV4ADDRESS: new RegExp("^(" + u + ")$"), IPV6ADDRESS: new RegExp("^\\[?(" + _ + ")" + n(n("\\%25|\\%(?!" + i + "{2})") + "(" + k + ")") + "?\\]?$") }
            }
            var g = o(!1),
                s = o(!0),
                A = function(t, e) {
                    if (Array.isArray(t)) return t;
                    if (Symbol.iterator in Object(t)) return function(t, e) {
                        var n = [],
                            i = !0,
                            r = !1,
                            o = void 0;
                        try { for (var g, s = t[Symbol.iterator](); !(i = (g = s.next()).done) && (n.push(g.value), !e || n.length !== e); i = !0); } catch (t) { r = !0, o = t } finally { try {!i && s.return && s.return() } finally { if (r) throw o } }
                        return n
                    }(t, e);
                    throw new TypeError("Invalid attempt to destructure non-iterable instance")
                },
                a = 2147483647,
                C = /^xn--/,
                I = /[^\0-\x7E]/,
                u = /[\x2E\u3002\uFF0E\uFF61]/g,
                c = { overflow: "Overflow: input needs wider integers to process", "not-basic": "Illegal input >= 0x80 (not a basic code point)", "invalid-input": "Invalid input" },
                l = Math.floor,
                h = String.fromCharCode;

            function d(t) { throw new RangeError(c[t]) }

            function f(t, e) {
                var n = t.split("@"),
                    i = "";
                n.length > 1 && (i = n[0] + "@", t = n[1]);
                var r = function(t, e) { for (var n = [], i = t.length; i--;) n[i] = e(t[i]); return n }((t = t.replace(u, ".")).split("."), e).join(".");
                return i + r
            }

            function p(t) {
                for (var e = [], n = 0, i = t.length; n < i;) {
                    var r = t.charCodeAt(n++);
                    if (r >= 55296 && r <= 56319 && n < i) {
                        var o = t.charCodeAt(n++);
                        56320 == (64512 & o) ? e.push(((1023 & r) << 10) + (1023 & o) + 65536) : (e.push(r), n--)
                    } else e.push(r)
                }
                return e
            }
            var v = function(t, e) { return t + 22 + 75 * (t < 26) - ((0 != e) << 5) },
                y = function(t, e, n) { var i = 0; for (t = n ? l(t / 700) : t >> 1, t += l(t / e); t > 455; i += 36) t = l(t / 35); return l(i + 36 * t / (t + 38)) },
                b = function(t) {
                    var e, n = [],
                        i = t.length,
                        r = 0,
                        o = 128,
                        g = 72,
                        s = t.lastIndexOf("-");
                    s < 0 && (s = 0);
                    for (var A = 0; A < s; ++A) t.charCodeAt(A) >= 128 && d("not-basic"), n.push(t.charCodeAt(A));
                    for (var C = s > 0 ? s + 1 : 0; C < i;) {
                        for (var I = r, u = 1, c = 36;; c += 36) {
                            C >= i && d("invalid-input");
                            var h = (e = t.charCodeAt(C++)) - 48 < 10 ? e - 22 : e - 65 < 26 ? e - 65 : e - 97 < 26 ? e - 97 : 36;
                            (h >= 36 || h > l((a - r) / u)) && d("overflow"), r += h * u;
                            var f = c <= g ? 1 : c >= g + 26 ? 26 : c - g;
                            if (h < f) break;
                            var p = 36 - f;
                            u > l(a / p) && d("overflow"), u *= p
                        }
                        var v = n.length + 1;
                        g = y(r - I, v, 0 == I), l(r / v) > a - o && d("overflow"), o += l(r / v), r %= v, n.splice(r++, 0, o)
                    }
                    return String.fromCodePoint.apply(String, n)
                },
                m = function(t) {
                    var e = [],
                        n = (t = p(t)).length,
                        i = 128,
                        r = 0,
                        o = 72,
                        g = !0,
                        s = !1,
                        A = void 0;
                    try {
                        for (var C, I = t[Symbol.iterator](); !(g = (C = I.next()).done); g = !0) {
                            var u = C.value;
                            u < 128 && e.push(h(u))
                        }
                    } catch (t) { s = !0, A = t } finally { try {!g && I.return && I.return() } finally { if (s) throw A } }
                    var c = e.length,
                        f = c;
                    for (c && e.push("-"); f < n;) {
                        var b = a,
                            m = !0,
                            w = !1,
                            _ = void 0;
                        try {
                            for (var k, x = t[Symbol.iterator](); !(m = (k = x.next()).done); m = !0) {
                                var O = k.value;
                                O >= i && O < b && (b = O)
                            }
                        } catch (t) { w = !0, _ = t } finally { try {!m && x.return && x.return() } finally { if (w) throw _ } }
                        var E = f + 1;
                        b - i > l((a - r) / E) && d("overflow"), r += (b - i) * E, i = b;
                        var T = !0,
                            S = !1,
                            D = void 0;
                        try {
                            for (var N, R = t[Symbol.iterator](); !(T = (N = R.next()).done); T = !0) {
                                var P = N.value;
                                if (P < i && ++r > a && d("overflow"), P == i) {
                                    for (var M = r, j = 36;; j += 36) {
                                        var F = j <= o ? 1 : j >= o + 26 ? 26 : j - o;
                                        if (M < F) break;
                                        var z = M - F,
                                            L = 36 - F;
                                        e.push(h(v(F + z % L, 0))), M = l(z / L)
                                    }
                                    e.push(h(v(M, 0))), o = y(r, E, f == c), r = 0, ++f
                                }
                            }
                        } catch (t) { S = !0, D = t } finally { try {!T && R.return && R.return() } finally { if (S) throw D } }++r, ++i
                    }
                    return e.join("")
                },
                w = function(t) { return f(t, (function(t) { return I.test(t) ? "xn--" + m(t) : t })) },
                _ = function(t) { return f(t, (function(t) { return C.test(t) ? b(t.slice(4).toLowerCase()) : t })) },
                k = {};

            function x(t) { var e = t.charCodeAt(0); return e < 16 ? "%0" + e.toString(16).toUpperCase() : e < 128 ? "%" + e.toString(16).toUpperCase() : e < 2048 ? "%" + (e >> 6 | 192).toString(16).toUpperCase() + "%" + (63 & e | 128).toString(16).toUpperCase() : "%" + (e >> 12 | 224).toString(16).toUpperCase() + "%" + (e >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (63 & e | 128).toString(16).toUpperCase() }

            function O(t) {
                for (var e = "", n = 0, i = t.length; n < i;) {
                    var r = parseInt(t.substr(n + 1, 2), 16);
                    if (r < 128) e += String.fromCharCode(r), n += 3;
                    else if (r >= 194 && r < 224) {
                        if (i - n >= 6) {
                            var o = parseInt(t.substr(n + 4, 2), 16);
                            e += String.fromCharCode((31 & r) << 6 | 63 & o)
                        } else e += t.substr(n, 6);
                        n += 6
                    } else if (r >= 224) {
                        if (i - n >= 9) {
                            var g = parseInt(t.substr(n + 4, 2), 16),
                                s = parseInt(t.substr(n + 7, 2), 16);
                            e += String.fromCharCode((15 & r) << 12 | (63 & g) << 6 | 63 & s)
                        } else e += t.substr(n, 9);
                        n += 9
                    } else e += t.substr(n, 3), n += 3
                }
                return e
            }

            function E(t, e) {
                function n(t) { var n = O(t); return n.match(e.UNRESERVED) ? n : t }
                return t.scheme && (t.scheme = String(t.scheme).replace(e.PCT_ENCODED, n).toLowerCase().replace(e.NOT_SCHEME, "")), void 0 !== t.userinfo && (t.userinfo = String(t.userinfo).replace(e.PCT_ENCODED, n).replace(e.NOT_USERINFO, x).replace(e.PCT_ENCODED, r)), void 0 !== t.host && (t.host = String(t.host).replace(e.PCT_ENCODED, n).toLowerCase().replace(e.NOT_HOST, x).replace(e.PCT_ENCODED, r)), void 0 !== t.path && (t.path = String(t.path).replace(e.PCT_ENCODED, n).replace(t.scheme ? e.NOT_PATH : e.NOT_PATH_NOSCHEME, x).replace(e.PCT_ENCODED, r)), void 0 !== t.query && (t.query = String(t.query).replace(e.PCT_ENCODED, n).replace(e.NOT_QUERY, x).replace(e.PCT_ENCODED, r)), void 0 !== t.fragment && (t.fragment = String(t.fragment).replace(e.PCT_ENCODED, n).replace(e.NOT_FRAGMENT, x).replace(e.PCT_ENCODED, r)), t
            }

            function T(t) { return t.replace(/^0*(.*)/, "$1") || "0" }

            function S(t, e) {
                var n = t.match(e.IPV4ADDRESS) || [],
                    i = A(n, 2)[1];
                return i ? i.split(".").map(T).join(".") : t
            }

            function D(t, e) {
                var n = t.match(e.IPV6ADDRESS) || [],
                    i = A(n, 3),
                    r = i[1],
                    o = i[2];
                if (r) {
                    for (var g = r.toLowerCase().split("::").reverse(), s = A(g, 2), a = s[0], C = s[1], I = C ? C.split(":").map(T) : [], u = a.split(":").map(T), c = e.IPV4ADDRESS.test(u[u.length - 1]), l = c ? 7 : 8, h = u.length - l, d = Array(l), f = 0; f < l; ++f) d[f] = I[f] || u[h + f] || "";
                    c && (d[l - 1] = S(d[l - 1], e));
                    var p = d.reduce((function(t, e, n) {
                            if (!e || "0" === e) {
                                var i = t[t.length - 1];
                                i && i.index + i.length === n ? i.length++ : t.push({ index: n, length: 1 })
                            }
                            return t
                        }), []).sort((function(t, e) { return e.length - t.length }))[0],
                        v = void 0;
                    if (p && p.length > 1) {
                        var y = d.slice(0, p.index),
                            b = d.slice(p.index + p.length);
                        v = y.join(":") + "::" + b.join(":")
                    } else v = d.join(":");
                    return o && (v += "%" + o), v
                }
                return t
            }
            var N = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,
                R = void 0 === "".match(/(){0}/)[1];

            function P(t) {
                var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                    n = {},
                    i = !1 !== e.iri ? s : g;
                "suffix" === e.reference && (t = (e.scheme ? e.scheme + ":" : "") + "//" + t);
                var r = t.match(N);
                if (r) {
                    R ? (n.scheme = r[1], n.userinfo = r[3], n.host = r[4], n.port = parseInt(r[5], 10), n.path = r[6] || "", n.query = r[7], n.fragment = r[8], isNaN(n.port) && (n.port = r[5])) : (n.scheme = r[1] || void 0, n.userinfo = -1 !== t.indexOf("@") ? r[3] : void 0, n.host = -1 !== t.indexOf("//") ? r[4] : void 0, n.port = parseInt(r[5], 10), n.path = r[6] || "", n.query = -1 !== t.indexOf("?") ? r[7] : void 0, n.fragment = -1 !== t.indexOf("#") ? r[8] : void 0, isNaN(n.port) && (n.port = t.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? r[4] : void 0)), n.host && (n.host = D(S(n.host, i), i)), void 0 !== n.scheme || void 0 !== n.userinfo || void 0 !== n.host || void 0 !== n.port || n.path || void 0 !== n.query ? void 0 === n.scheme ? n.reference = "relative" : void 0 === n.fragment ? n.reference = "absolute" : n.reference = "uri" : n.reference = "same-document", e.reference && "suffix" !== e.reference && e.reference !== n.reference && (n.error = n.error || "URI is not a " + e.reference + " reference.");
                    var o = k[(e.scheme || n.scheme || "").toLowerCase()];
                    if (e.unicodeSupport || o && o.unicodeSupport) E(n, i);
                    else {
                        if (n.host && (e.domainHost || o && o.domainHost)) try { n.host = w(n.host.replace(i.PCT_ENCODED, O).toLowerCase()) } catch (t) { n.error = n.error || "Host's domain name can not be converted to ASCII via punycode: " + t }
                        E(n, g)
                    }
                    o && o.parse && o.parse(n, e)
                } else n.error = n.error || "URI can not be parsed.";
                return n
            }

            function M(t, e) {
                var n = !1 !== e.iri ? s : g,
                    i = [];
                return void 0 !== t.userinfo && (i.push(t.userinfo), i.push("@")), void 0 !== t.host && i.push(D(S(String(t.host), n), n).replace(n.IPV6ADDRESS, (function(t, e, n) { return "[" + e + (n ? "%25" + n : "") + "]" }))), "number" != typeof t.port && "string" != typeof t.port || (i.push(":"), i.push(String(t.port))), i.length ? i.join("") : void 0
            }
            var j = /^\.\.?\//,
                F = /^\/\.(\/|$)/,
                z = /^\/\.\.(\/|$)/,
                L = /^\/?(?:.|\n)*?(?=\/|$)/;

            function B(t) {
                for (var e = []; t.length;)
                    if (t.match(j)) t = t.replace(j, "");
                    else if (t.match(F)) t = t.replace(F, "/");
                else if (t.match(z)) t = t.replace(z, "/"), e.pop();
                else if ("." === t || ".." === t) t = "";
                else {
                    var n = t.match(L);
                    if (!n) throw new Error("Unexpected dot segment condition");
                    var i = n[0];
                    t = t.slice(i.length), e.push(i)
                }
                return e.join("")
            }

            function Z(t) {
                var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
                    n = e.iri ? s : g,
                    i = [],
                    r = k[(e.scheme || t.scheme || "").toLowerCase()];
                if (r && r.serialize && r.serialize(t, e), t.host)
                    if (n.IPV6ADDRESS.test(t.host));
                    else if (e.domainHost || r && r.domainHost) try { t.host = e.iri ? _(t.host) : w(t.host.replace(n.PCT_ENCODED, O).toLowerCase()) } catch (n) { t.error = t.error || "Host's domain name can not be converted to " + (e.iri ? "Unicode" : "ASCII") + " via punycode: " + n }
                E(t, n), "suffix" !== e.reference && t.scheme && (i.push(t.scheme), i.push(":"));
                var o = M(t, e);
                if (void 0 !== o && ("suffix" !== e.reference && i.push("//"), i.push(o), t.path && "/" !== t.path.charAt(0) && i.push("/")), void 0 !== t.path) {
                    var A = t.path;
                    e.absolutePath || r && r.absolutePath || (A = B(A)), void 0 === o && (A = A.replace(/^\/\//, "/%2F")), i.push(A)
                }
                return void 0 !== t.query && (i.push("?"), i.push(t.query)), void 0 !== t.fragment && (i.push("#"), i.push(t.fragment)), i.join("")
            }

            function V(t, e) {
                var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                    i = arguments[3],
                    r = {};
                return i || (t = P(Z(t, n), n), e = P(Z(e, n), n)), !(n = n || {}).tolerant && e.scheme ? (r.scheme = e.scheme, r.userinfo = e.userinfo, r.host = e.host, r.port = e.port, r.path = B(e.path || ""), r.query = e.query) : (void 0 !== e.userinfo || void 0 !== e.host || void 0 !== e.port ? (r.userinfo = e.userinfo, r.host = e.host, r.port = e.port, r.path = B(e.path || ""), r.query = e.query) : (e.path ? ("/" === e.path.charAt(0) ? r.path = B(e.path) : (void 0 === t.userinfo && void 0 === t.host && void 0 === t.port || t.path ? t.path ? r.path = t.path.slice(0, t.path.lastIndexOf("/") + 1) + e.path : r.path = e.path : r.path = "/" + e.path, r.path = B(r.path)), r.query = e.query) : (r.path = t.path, void 0 !== e.query ? r.query = e.query : r.query = t.query), r.userinfo = t.userinfo, r.host = t.host, r.port = t.port), r.scheme = t.scheme), r.fragment = e.fragment, r
            }

            function Y(t, e) { return t && t.toString().replace(e && e.iri ? s.PCT_ENCODED : g.PCT_ENCODED, O) }
            var G = { scheme: "http", domainHost: !0, parse: function(t, e) { return t.host || (t.error = t.error || "HTTP URIs must have a host."), t }, serialize: function(t, e) { var n = "https" === String(t.scheme).toLowerCase(); return t.port !== (n ? 443 : 80) && "" !== t.port || (t.port = void 0), t.path || (t.path = "/"), t } },
                U = { scheme: "https", domainHost: G.domainHost, parse: G.parse, serialize: G.serialize };

            function W(t) { return "boolean" == typeof t.secure ? t.secure : "wss" === String(t.scheme).toLowerCase() }
            var H = {
                    scheme: "ws",
                    domainHost: !0,
                    parse: function(t, e) { var n = t; return n.secure = W(n), n.resourceName = (n.path || "/") + (n.query ? "?" + n.query : ""), n.path = void 0, n.query = void 0, n },
                    serialize: function(t, e) {
                        if (t.port !== (W(t) ? 443 : 80) && "" !== t.port || (t.port = void 0), "boolean" == typeof t.secure && (t.scheme = t.secure ? "wss" : "ws", t.secure = void 0), t.resourceName) {
                            var n = t.resourceName.split("?"),
                                i = A(n, 2),
                                r = i[0],
                                o = i[1];
                            t.path = r && "/" !== r ? r : void 0, t.query = o, t.resourceName = void 0
                        }
                        return t.fragment = void 0, t
                    }
                },
                K = { scheme: "wss", domainHost: H.domainHost, parse: H.parse, serialize: H.serialize },
                Q = {},
                X = "[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",
                q = "[0-9A-Fa-f]",
                J = n(n("%[EFef]" + q + "%" + q + q + "%" + q + q) + "|" + n("%[89A-Fa-f]" + q + "%" + q + q) + "|" + n("%" + q + q)),
                $ = e("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]", '[\\"\\\\]'),
                tt = new RegExp(X, "g"),
                et = new RegExp(J, "g"),
                nt = new RegExp(e("[^]", "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]", "[\\.]", '[\\"]', $), "g"),
                it = new RegExp(e("[^]", X, "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"), "g"),
                rt = it;

            function ot(t) { var e = O(t); return e.match(tt) ? e : t }
            var gt = {
                    scheme: "mailto",
                    parse: function(t, e) {
                        var n = t,
                            i = n.to = n.path ? n.path.split(",") : [];
                        if (n.path = void 0, n.query) {
                            for (var r = !1, o = {}, g = n.query.split("&"), s = 0, A = g.length; s < A; ++s) {
                                var a = g[s].split("=");
                                switch (a[0]) {
                                    case "to":
                                        for (var C = a[1].split(","), I = 0, u = C.length; I < u; ++I) i.push(C[I]);
                                        break;
                                    case "subject":
                                        n.subject = Y(a[1], e);
                                        break;
                                    case "body":
                                        n.body = Y(a[1], e);
                                        break;
                                    default:
                                        r = !0, o[Y(a[0], e)] = Y(a[1], e)
                                }
                            }
                            r && (n.headers = o)
                        }
                        n.query = void 0;
                        for (var c = 0, l = i.length; c < l; ++c) {
                            var h = i[c].split("@");
                            if (h[0] = Y(h[0]), e.unicodeSupport) h[1] = Y(h[1], e).toLowerCase();
                            else try { h[1] = w(Y(h[1], e).toLowerCase()) } catch (t) { n.error = n.error || "Email address's domain name can not be converted to ASCII via punycode: " + t }
                            i[c] = h.join("@")
                        }
                        return n
                    },
                    serialize: function(t, e) {
                        var n, i = t,
                            o = null != (n = t.to) ? n instanceof Array ? n : "number" != typeof n.length || n.split || n.setInterval || n.call ? [n] : Array.prototype.slice.call(n) : [];
                        if (o) {
                            for (var g = 0, s = o.length; g < s; ++g) {
                                var A = String(o[g]),
                                    a = A.lastIndexOf("@"),
                                    C = A.slice(0, a).replace(et, ot).replace(et, r).replace(nt, x),
                                    I = A.slice(a + 1);
                                try { I = e.iri ? _(I) : w(Y(I, e).toLowerCase()) } catch (t) { i.error = i.error || "Email address's domain name can not be converted to " + (e.iri ? "Unicode" : "ASCII") + " via punycode: " + t }
                                o[g] = C + "@" + I
                            }
                            i.path = o.join(",")
                        }
                        var u = t.headers = t.headers || {};
                        t.subject && (u.subject = t.subject), t.body && (u.body = t.body);
                        var c = [];
                        for (var l in u) u[l] !== Q[l] && c.push(l.replace(et, ot).replace(et, r).replace(it, x) + "=" + u[l].replace(et, ot).replace(et, r).replace(rt, x));
                        return c.length && (i.query = c.join("&")), i
                    }
                },
                st = /^([^\:]+)\:(.*)/,
                At = {
                    scheme: "urn",
                    parse: function(t, e) {
                        var n = t.path && t.path.match(st),
                            i = t;
                        if (n) {
                            var r = e.scheme || i.scheme || "urn",
                                o = n[1].toLowerCase(),
                                g = n[2],
                                s = r + ":" + (e.nid || o),
                                A = k[s];
                            i.nid = o, i.nss = g, i.path = void 0, A && (i = A.parse(i, e))
                        } else i.error = i.error || "URN can not be parsed.";
                        return i
                    },
                    serialize: function(t, e) {
                        var n = e.scheme || t.scheme || "urn",
                            i = t.nid,
                            r = n + ":" + (e.nid || i),
                            o = k[r];
                        o && (t = o.serialize(t, e));
                        var g = t,
                            s = t.nss;
                        return g.path = (i || e.nid) + ":" + s, g
                    }
                },
                at = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/,
                Ct = { scheme: "urn:uuid", parse: function(t, e) { var n = t; return n.uuid = n.nss, n.nss = void 0, e.tolerant || n.uuid && n.uuid.match(at) || (n.error = n.error || "UUID is not valid."), n }, serialize: function(t, e) { var n = t; return n.nss = (t.uuid || "").toLowerCase(), n } };
            k[G.scheme] = G, k[U.scheme] = U, k[H.scheme] = H, k[K.scheme] = K, k[gt.scheme] = gt, k[At.scheme] = At, k[Ct.scheme] = Ct, t.SCHEMES = k, t.pctEncChar = x, t.pctDecChars = O, t.parse = P, t.removeDotSegments = B, t.serialize = Z, t.resolveComponents = V, t.resolve = function(t, e, n) {
                var i = function(t, e) {
                    var n = t;
                    if (e)
                        for (var i in e) n[i] = e[i];
                    return n
                }({ scheme: "null" }, n);
                return Z(V(P(t, i), P(e, i), i, !0), i)
            }, t.normalize = function(t, e) { return "string" == typeof t ? t = Z(P(t, e), e) : "object" === i(t) && (t = P(Z(t, e), e)), t }, t.equal = function(t, e, n) { return "string" == typeof t ? t = Z(P(t, n), n) : "object" === i(t) && (t = Z(t, n)), "string" == typeof e ? e = Z(P(e, n), n) : "object" === i(e) && (e = Z(e, n)), t === e }, t.escapeComponent = function(t, e) { return t && t.toString().replace(e && e.iri ? s.ESCAPE : g.ESCAPE, x) }, t.unescapeComponent = Y, Object.defineProperty(t, "__esModule", { value: !0 })
        }(e)
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(16)),
            s = i(n(12)),
            A = i(n(17)),
            a = function(t) {
                function e(t) { var n; return (0, r.default)(this, e), (n = (0, g.default)(this, (0, s.default)(e).call(this)))._connection = t, n }
                return (0, A.default)(e, t), (0, o.default)(e, [{
                    key: "acquireConnection",
                    value: function() {
                        var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                            e = (t.accessMode, t.database, t.bookmarks, this._connection);
                        return this._connection = null, Promise.resolve(e)
                    }
                }]), e
            }(i(n(173)).default);
        e.default = a
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = function() {
                function t(e) {
                    (0, r.default)(this, t), this._offset = e || 0
                }
                return (0, o.default)(t, [{ key: "next", value: function(t) { if (0 === t) return -1; var e = this._offset; return this._offset += 1, this._offset === Number.MAX_SAFE_INTEGER && (this._offset = 0), e % t } }]), t
            }();
        e.default = g
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = function() {
                function t() {
                    (0, r.default)(this, t)
                }
                return (0, o.default)(t, [{ key: "selectReader", value: function(t) { throw new Error("Abstract function") } }, { key: "selectWriter", value: function(t) { throw new Error("Abstract function") } }]), t
            }();
        e.default = g
    }, function(t, e, n) {
        "use strict";
        var i = n(4);
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        var r = i(n(5)),
            o = i(n(6)),
            g = i(n(179));

        function s(t) { return Promise.resolve([t]) }
        var A = function() {
            function t(e) {
                (0, r.default)(this, t), this._resolverFunction = e || s
            }
            return (0, o.default)(t, [{ key: "resolve", value: function(t) { var e = this; return new Promise((function(n) { return n(e._resolverFunction(t.asHostPort())) })).then((function(t) { if (!Array.isArray(t)) throw new TypeError("Configured resolver function should either return an array of addresses or a Promise resolved with an array of addresses." + "Each address is '<host>:<port>'. Got: ".concat(t)); return t.map((function(t) { return g.default.fromUrl(t) })) })) } }]), t
        }();
        e.default = A
    }, function(t, e, n) {
        "use strict";
        Object.defineProperty(e, "__esModule", { value: !0 }), e.default = void 0;
        e.default = "4.1.2"
    }, function(t, e, n) {
        "use strict";
        n.r(e), n.d(e, "NEOVIS_DEFAULT_CONFIG", (function() { return Ct })), n.d(e, "default", (function() { return It }));
        var i = n(139),
            r = n.n(i),
            o = n(140),
            g = n.n(o),
            s = n(141),
            A = n.n(s),
            a = n(142),
            C = n.n(a),
            I = n(241),
            u = n.n(I),
            c = n(242),
            l = n.n(c),
            h = n(181),
            d = n.n(h),
            f = n(182),
            p = n.n(f),
            v = n(243),
            y = n.n(v),
            b = n(183),
            m = n.n(b),
            w = n(244),
            _ = n.n(w),
            k = n(184),
            x = n.n(k),
            O = n(93),
            E = n.n(O),
            T = n(245),
            S = n.n(T),
            D = n(246),
            N = n.n(D),
            R = n(106),
            P = n.n(R),
            M = n(70),
            j = n.n(M),
            F = n(247),
            z = n.n(F),
            L = n(149),
            B = n.n(L),
            Z = n(150),
            V = n.n(Z),
            Y = n(109),
            G = n.n(Y),
            U = n(143),
            W = n.n(U),
            H = n(107),
            K = n.n(H),
            Q = n(33),
            X = n.n(Q),
            q = n(108),
            J = n.n(q),
            $ = n(36),
            tt = n.n($),
            et = n(240),
            nt = { neo4j: { initialQuery: "MATCH (n) WHERE exists(n.pagerank)\n                        WITH (n), RAND() AS random\n                        ORDER BY random LIMIT 3000\n                        OPTIONAL MATCH (n)-[r]-(m)\n                        //WITH n,r,m WHERE exists(n.pagerank) AND exists(m.pagerank) AND exists(m.community)\n                        RETURN n, r, m;", neo4jUri: "bolt://localhost:7687", neo4jUser: "neo4j", neo4jPassword: "neo4j", encrypted: "ENCRYPTION_OFF", trust: "TRUST_ALL_CERTIFICATES" }, visjs: { interaction: { hover: !0, hoverConnectedEdges: !0, selectConnectedEdges: !1, multiselect: "alwaysOn", zoomView: !1, experimental: {} }, physics: { barnesHut: { damping: .1 } }, nodes: { mass: 4, shape: "neo", labelHighlightBold: !1, widthConstraint: { maximum: 40 }, heightConstraint: { maximum: 40 } }, edges: { hoverWidth: 0, selectionWidth: 0, smooth: { type: "continuous", roundness: .15 }, font: { size: 9, strokeWidth: 0, align: "top" }, color: { inherit: !1 }, arrows: { to: { enabled: !0, type: "arrow", scaleFactor: .5 } } } } };

        function it(t, e) {
            var n;
            if (void 0 === J.a || null == g()(t)) {
                if (P()(t) || (n = function(t, e) { var n; if (!t) return; if ("string" == typeof t) return rt(t, e); var i = C()(n = Object.prototype.toString.call(t)).call(n, 8, -1); "Object" === i && t.constructor && (i = t.constructor.name); if ("Map" === i || "Set" === i) return A()(t); if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return rt(t, e) }(t)) || e && t && "number" == typeof t.length) {
                    n && (t = n);
                    var i = 0,
                        o = function() {};
                    return { s: o, n: function() { return i >= t.length ? { done: !0 } : { done: !1, value: t[i++] } }, e: function(t) { throw t }, f: o }
                }
                throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
            }
            var s, a = !0,
                I = !1;
            return { s: function() { n = r()(t) }, n: function() { var t = n.next(); return a = t.done, t }, e: function(t) { I = !0, s = t }, f: function() { try { a || null == n.return || n.return() } finally { if (I) throw s } } }
        }

        function rt(t, e) {
            (null == e || e > t.length) && (e = t.length);
            for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];
            return i
        }
        var ot = function() {
            function t() {
                var e;
                W()(this, t), this._handlers = (e = {}, X()(e, "completed", []), X()(e, "error", []), X()(e, "clickNode", []), X()(e, "clickEdge", []), e)
            }
            return K()(t, [{
                key: "register",
                value: function(t, e) {
                    if (void 0 === this._handlers[t]) throw new Error("Unknown event: " + t);
                    this._handlers[t].push(e)
                }
            }, {
                key: "generateEvent",
                value: function(t, e) {
                    if (void 0 === this._handlers[t]) throw new Error("Unknown event: " + t);
                    var n, i = it(this._handlers[t]);
                    try {
                        for (i.s(); !(n = i.n()).done;) {
                            (0, n.value)(e)
                        }
                    } catch (t) { i.e(t) } finally { i.f() }
                }
            }]), t
        }();

        function gt(t, e) {
            var n;
            if (void 0 === J.a || null == g()(t)) {
                if (P()(t) || (n = function(t, e) { var n; if (!t) return; if ("string" == typeof t) return st(t, e); var i = C()(n = Object.prototype.toString.call(t)).call(n, 8, -1); "Object" === i && t.constructor && (i = t.constructor.name); if ("Map" === i || "Set" === i) return A()(t); if ("Arguments" === i || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)) return st(t, e) }(t)) || e && t && "number" == typeof t.length) {
                    n && (t = n);
                    var i = 0,
                        o = function() {};
                    return { s: o, n: function() { return i >= t.length ? { done: !0 } : { done: !1, value: t[i++] } }, e: function(t) { throw t }, f: o }
                }
                throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
            }
            var s, a = !0,
                I = !1;
            return { s: function() { n = r()(t) }, n: function() { var t = n.next(); return a = t.done, t }, e: function(t) { I = !0, s = t }, f: function() { try { a || null == n.return || n.return() } finally { if (I) throw s } } }
        }

        function st(t, e) {
            (null == e || e > t.length) && (e = t.length);
            for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];
            return i
        }

        function At(t, e) {
            var n = G()(t);
            if (m.a) {
                var i = m()(t);
                e && (i = y()(i).call(i, (function(e) { return p()(t, e).enumerable }))), n.push.apply(n, i)
            }
            return n
        }

        function at(t) {
            for (var e = 1; e < arguments.length; e++) {
                var n, i = null != arguments[e] ? arguments[e] : {};
                if (e % 2) B()(n = At(Object(i), !0)).call(n, (function(e) { X()(t, e, i[e]) }));
                else if (d.a) l()(t, d()(i));
                else {
                    var r;
                    B()(r = At(Object(i))).call(r, (function(e) { u()(t, e, p()(i, e)) }))
                }
            }
            return t
        }
        var Ct = J()(),
            It = function() {
                function t(e) { W()(this, t), X()(this, "_nodes", {}), X()(this, "_edges", {}), X()(this, "_data", {}), X()(this, "_network", null), X()(this, "_events", new ot), this._init(e), this._consoleLog(e), this._consoleLog(nt) }
                var e;
                return K()(t, [{ key: "nodes", get: function() { return this._data.nodes } }, { key: "edges", get: function() { return this._data.edges } }]), K()(t, [{
                    key: "_consoleLog",
                    value: function(t) {
                        var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "log";
                        ("log" !== e || this._config.console_debug) && console[e](t)
                    }
                }, {
                    key: "_init",
                    value: function(t) {
                        if (t.labels && t.labels[Ct])
                            for (var e = 0, n = G()(t.labels); e < n.length; e++) {
                                var i = n[e];
                                t = at(at({}, t), {}, { labels: at(at({}, t.labels), {}, X()({}, i, at(at({}, t.labels[Ct]), t.labels[i]))) })
                            }
                        if (t.relationships && t.relationships[Ct])
                            for (var r = 0, o = G()(t.relationships); r < o.length; r++) {
                                var g = o[r];
                                t = at(at({}, t), {}, { relationships: at(at({}, t.relationships), {}, X()({}, g, at(at({}, t.relationships[Ct]), t.relationships[g]))) })
                            }
                        this._config = t, this._encrypted = t.encrypted || nt.neo4j.encrypted, this._trust = t.trust || nt.neo4j.trust, this._driver = tt.a.driver(t.server_url || nt.neo4j.neo4jUri, tt.a.auth.basic(t.server_user || nt.neo4j.neo4jUser, t.server_password || nt.neo4j.neo4jPassword), { encrypted: this._encrypted, trust: this._trust, maxConnectionPoolSize: 100, connectionAcquisitionTimeout: 1e4 }), this._database = t.server_database, this._query = t.initial_cypher || nt.neo4j.initialQuery, this._container = document.getElementById(t.container_id)
                    }
                }, { key: "_addNode", value: function(t) { this._nodes[t.id] = t } }, { key: "_addEdge", value: function(t) { this._edges[t.id] = t } }, {
                    key: "buildNodeVisObject",
                    value: (e = V()(j.a.mark((function t(e) {
                        var n, i, r, o, g, s, A, a, C, I, u, c, l, h, d, f, p, v, y;
                        return j.a.wrap((function(t) {
                            for (;;) switch (t.prev = t.next) {
                                case 0:
                                    if (n = {}, i = e.labels[0], r = this._config && this._config.labels && (this._config.labels[i] || this._config.labels[Ct]), o = r && r.caption, g = r && r.size, s = r && r.sizeCypher, A = r && r.community, a = r && r.image, C = r && r.font, I = r && r.title_properties || G()(e.properties), n.id = e.identity.toInt(), n.raw = e, !s) { t.next = 26; break }
                                    return n.value = 1, u = this._driver.session(this._database && { database: this._database }), t.prev = 15, t.next = 18, u.readTransaction((function(t) { return t.run(s, { id: tt.a.int(n.id) }) }));
                                case 18:
                                    c = t.sent, l = gt(c.records);
                                    try { for (l.s(); !(h = l.n()).done;) d = h.value, B()(d).call(d, (function(t) { "number" == typeof t ? n.value = t : tt.a.isInt(t) && (n.value = t.toNumber()) })) } catch (t) { l.e(t) } finally { l.f() }
                                case 21:
                                    return t.prev = 21, u.close(), t.finish(21);
                                case 24:
                                    t.next = 27;
                                    break;
                                case 26:
                                    "number" == typeof g ? n.value = g : (f = e.properties[g]) && "number" == typeof f ? n.value = f : f && "object" === z()(f) && tt.a.isInt(f) && f.inSafeRange() ? n.value = f.toNumber() : n.value = 1;
                                case 27:
                                    if ("function" == typeof o ? n.label = o(e) : o && ("number" == typeof e.properties[o] || tt.a.isInt(e.properties[o])) ? n.label = e.properties[o].toString() || "" : n.label = e.properties[o] || i || "", A) try { e.properties[A] ? n.group = e.properties[A].toNumber() || i || 0 : n.group = 0 } catch (t) { n.group = 0 } else n.group = i;
                                    n.title = "", p = gt(I);
                                    try { for (p.s(); !(v = p.n()).done;) y = v.value, e.properties.hasOwnProperty(y) && (n.title += this.propertyToString(y, e.properties[y])) } catch (t) { p.e(t) } finally { p.f() }
                                    return a ? (n.shape = "image", n.image = a) : n.shape = "dot", C && (n.font = C), t.abrupt("return", n);
                                case 35:
                                case "end":
                                    return t.stop()
                            }
                        }), t, this, [
                            [15, , 21, 24]
                        ])
                    }))), function(t) { return e.apply(this, arguments) })
                }, {
                    key: "buildEdgeVisObject",
                    value: function(t) {
                        var e = this._config && this._config.relationships && (this._config.relationships[t.type] || this._config.relationships[Ct]),
                            n = e && e.thickness,
                            i = e && e.caption,
                            r = {};
                        for (var o in r.id = t.identity.toInt(), r.from = t.start.toInt(), r.to = t.end.toInt(), r.raw = t, r.title = "", t.properties) t.properties.hasOwnProperty(o) && (r.title += this.propertyToString(o, t.properties[o]));
                        return r.value = n && "string" == typeof n ? t.properties[n] : n && "number" == typeof n ? n : 1, "boolean" == typeof i ? r.label = i ? t.type : "" : i && "string" == typeof i ? "number" == typeof t.properties[i] || tt.a.isInt(t.properties[i]) ? r.label = t.properties[i].toString() || "" : r.label = t.properties[i] || "" : r.label = t.type, r
                    }
                }, {
                    key: "propertyToString",
                    value: function(t, e) {
                        var n;
                        if (P()(e) && e.length > 1) {
                            var i, r = "<strong>".concat(t, ":</strong><br /><ul>"),
                                o = gt(e);
                            try {
                                for (o.s(); !(i = o.n()).done;) {
                                    var g = i.value;
                                    r += "<li>".concat(g, "</li>")
                                }
                            } catch (t) { o.e(t) } finally { o.f() }
                            return r + "</ul>"
                        }
                        return N()(n = "<strong>".concat(t, ":</strong> ")).call(n, e, "<br>")
                    }
                }, {
                    key: "render",
                    value: function(t) {
                        var e, n = this,
                            i = 0,
                            r = t || this._query,
                            o = this._driver.session(this._database && { database: this._database }),
                            g = [];
                        o.run(r, { limit: 30 }).subscribe({
                            onNext: function(t) {
                                var e;
                                i++, n._consoleLog("CLASS NAME"), n._consoleLog(t && t.constructor.name), n._consoleLog(t);
                                var r = S()(e = E()(t.toObject())).call(e, function() {
                                    var t = V()(j.a.mark((function t(e) {
                                        var i, r, o, g, s, A, a, C, I, u, c, l;
                                        return j.a.wrap((function(t) {
                                            for (;;) switch (t.prev = t.next) {
                                                case 0:
                                                    if (n._consoleLog("Constructor:"), n._consoleLog(e && e.constructor.name), !(e instanceof tt.a.types.Node)) { t.next = 9; break }
                                                    return t.next = 5, n.buildNodeVisObject(e);
                                                case 5:
                                                    i = t.sent;
                                                    try { n._addNode(i) } catch (t) { n._consoleLog(t, "error") }
                                                    t.next = 79;
                                                    break;
                                                case 9:
                                                    if (!(e instanceof tt.a.types.Relationship)) { t.next = 14; break }
                                                    r = n.buildEdgeVisObject(e), n._addEdge(r), t.next = 79;
                                                    break;
                                                case 14:
                                                    if (!(e instanceof tt.a.types.Path)) { t.next = 53; break }
                                                    return n._consoleLog("PATH"), n._consoleLog(e), t.next = 19, n.buildNodeVisObject(e.start);
                                                case 19:
                                                    return o = t.sent, t.next = 22, n.buildNodeVisObject(e.end);
                                                case 22:
                                                    g = t.sent, n._addNode(o), n._addNode(g), s = gt(e.segments), t.prev = 26, s.s();
                                                case 28:
                                                    if ((A = s.n()).done) { t.next = 43; break }
                                                    return a = A.value, t.t0 = n, t.next = 33, n.buildNodeVisObject(a.start);
                                                case 33:
                                                    return t.t1 = t.sent, t.t0._addNode.call(t.t0, t.t1), t.t2 = n, t.next = 38, n.buildNodeVisObject(a.end);
                                                case 38:
                                                    t.t3 = t.sent, t.t2._addNode.call(t.t2, t.t3), n._addEdge(n.buildEdgeVisObject(a.relationship));
                                                case 41:
                                                    t.next = 28;
                                                    break;
                                                case 43:
                                                    t.next = 48;
                                                    break;
                                                case 45:
                                                    t.prev = 45, t.t4 = t.catch(26), s.e(t.t4);
                                                case 48:
                                                    return t.prev = 48, s.f(), t.finish(48);
                                                case 51:
                                                    t.next = 79;
                                                    break;
                                                case 53:
                                                    if (!(e instanceof Array)) { t.next = 79; break }
                                                    C = gt(e), t.prev = 55, C.s();
                                                case 57:
                                                    if ((I = C.n()).done) { t.next = 71; break }
                                                    if (u = I.value, n._consoleLog("Array element constructor:"), n._consoleLog(u && u.constructor.name), !(u instanceof tt.a.types.Node)) { t.next = 68; break }
                                                    return t.next = 64, n.buildNodeVisObject(u);
                                                case 64:
                                                    c = t.sent, n._addNode(c), t.next = 69;
                                                    break;
                                                case 68:
                                                    u instanceof tt.a.types.Relationship && (l = n.buildEdgeVisObject(u), n._addEdge(l));
                                                case 69:
                                                    t.next = 57;
                                                    break;
                                                case 71:
                                                    t.next = 76;
                                                    break;
                                                case 73:
                                                    t.prev = 73, t.t5 = t.catch(55), C.e(t.t5);
                                                case 76:
                                                    return t.prev = 76, C.f(), t.finish(76);
                                                case 79:
                                                case "end":
                                                    return t.stop()
                                            }
                                        }), t, null, [
                                            [26, 45, 48, 51],
                                            [55, 73, 76, 79]
                                        ])
                                    })));
                                    return function(e) { return t.apply(this, arguments) }
                                }());
                                g.push(x.a.all(r))
                            },
                            onCompleted: (e = V()(j.a.mark((function t() {
                                var e, r, s;
                                return j.a.wrap((function(t) {
                                    for (;;) switch (t.prev = t.next) {
                                        case 0:
                                            return t.next = 2, x.a.all(g);
                                        case 2:
                                            o.close(), n._network && n._network.body.data.nodes.length > 0 ? (n._data.nodes.update(E()(n._nodes)), n._data.edges.update(E()(n._edges))) : (e = { nodes: { font: { size: 26, strokeWidth: 7 }, scaling: {} }, edges: { arrows: { to: { enabled: n._config.arrows || !1 } }, length: 200 }, layout: { improvedLayout: !1, hierarchical: { enabled: n._config.hierarchical || !1, sortMethod: n._config.hierarchical_sort_method || "hubsize" } }, physics: { adaptiveTimestep: !0, stabilization: { iterations: 200, fit: !0 } } }, r = n._container, n._data = { nodes: new et.a(E()(n._nodes)), edges: new et.a(E()(n._edges)) }, n._consoleLog(n._data.nodes), n._consoleLog(n._data.edges), n._network = new et.b(r, n._data, e)), n._consoleLog("completed"), _()((function() { n._network.stopSimulation() }), 1e4), n._events.generateEvent("completed", { record_count: i }), s = n, n._network.on("click", (function(t) {
                                                if (t.nodes.length > 0) {
                                                    var e = this.getNodeAt(t.pointer.DOM);
                                                    s._events.generateEvent("clickNode", { nodeId: e, node: s._nodes[e] })
                                                } else if (t.edges.length > 0) {
                                                    var n = this.getEdgeAt(t.pointer.DOM);
                                                    s._events.generateEvent("clickEdge", { edgeId: n, edge: s._edges[n] })
                                                }
                                            }));
                                        case 9:
                                        case "end":
                                            return t.stop()
                                    }
                                }), t)
                            }))), function() { return e.apply(this, arguments) }),
                            onError: function(t) { n._consoleLog(t, "error"), n._events.generateEvent("error", { error_msg: t }) }
                        })
                    }
                }, { key: "clearNetwork", value: function() { this._neo4jNodes = {}, this._neo4jEdges = {}, this._nodes = {}, this._edges = {}, this._network.setData([]) } }, { key: "registerOnEvent", value: function(t, e) { this._events.register(t, e) } }, { key: "reinit", value: function(t) { this._init(t), this.render() } }, { key: "reload", value: function() { this.clearNetwork(), this.render() } }, { key: "stabilize", value: function() { this._network.stopSimulation(), this._consoleLog("Calling stopSimulation") } }, { key: "renderWithCypher", value: function(t) { this.clearNetwork(), this._query = t, this.render() } }, { key: "updateWithCypher", value: function(t) { this.render(t) } }]), t
            }()
    }])
}));
//# sourceMappingURL=neovis.js.map