!(function (t, e) {
  typeof exports == "object" && typeof module == "object"
    ? (module.exports = e())
    : typeof define == "function" && define.amd
    ? define([], e)
    : typeof exports == "object"
    ? (exports.Raphael = e())
    : (t.Raphael = e());
})(window, function () {
  return (function (t) {
    var e = {};
    function r(i) {
      if (e[i]) return e[i].exports;
      var n = (e[i] = { i: i, l: !1, exports: {} });
      return t[i].call(n.exports, n, n.exports, r), (n.l = !0), n.exports;
    }
    return (
      (r.m = t),
      (r.c = e),
      (r.d = function (t, e, i) {
        r.o(t, e) ||
          Object.defineProperty(t, e, {
            configurable: !1,
            enumerable: !0,
            get: i,
          });
      }),
      (r.r = function (t) {
        Object.defineProperty(t, "__esModule", { value: !0 });
      }),
      (r.n = function (t) {
        var e =
          t && t.__esModule
            ? function () {
                return t.default;
              }
            : function () {
                return t;
              };
        return r.d(e, "a", e), e;
      }),
      (r.o = function (t, e) {
        return Object.prototype.hasOwnProperty.call(t, e);
      }),
      (r.p = ""),
      r((r.s = 4))
    );
  })([
    function (t, e, r) {
      var i, n;
      (i = [r(3)]),
        void 0 ===
          (n = function (t) {
            function e(i) {
              if (e.is(i, "function")) return r ? i() : t.on("raphael.DOMload", i);
              if (e.is(i, T)) return e._engine.create[c](e, i.splice(0, 3 + e.is(i[0], A))).add(i);
              var n = Array.prototype.slice.call(arguments, 0);
              if (e.is(n[n.length - 1], "function")) {
                var a = n.pop();
                return r
                  ? a.call(e._engine.create[c](e, n))
                  : t.on("raphael.DOMload", function () {
                      a.call(e._engine.create[c](e, n));
                    });
              }
              return e._engine.create[c](e, arguments);
            }
            (e.version = "2.2.0"), (e.eve = t);
            var r,
              i,
              n = /[, ]+/,
              a = {
                circle: 1,
                rect: 1,
                path: 1,
                ellipse: 1,
                text: 1,
                image: 1,
              },
              s = /\{(\d+)\}/g,
              o = "hasOwnProperty",
              l = { doc: document, win: window },
              h = {
                was: Object.prototype[o].call(l.win, "Raphael"),
                is: l.win.Raphael,
              },
              u = function () {
                this.ca = this.customAttributes = {};
              },
              c = "apply",
              f = "concat",
              p = "ontouchstart" in l.win || (l.win.DocumentTouch && l.doc instanceof DocumentTouch),
              d = "",
              g = " ",
              x = String,
              v = "split",
              y =
                "click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[
                  v
                ](g),
              m = {
                mousedown: "touchstart",
                mousemove: "touchmove",
                mouseup: "touchend",
              },
              b = x.prototype.toLowerCase,
              _ = Math,
              w = _.max,
              k = _.min,
              B = _.abs,
              C = _.pow,
              S = _.PI,
              A = "number",
              T = "array",
              M = Object.prototype.toString,
              E =
                ((e._ISURL = /^url\(['"]?(.+?)['"]?\)$/i),
                /^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i),
              N = { NaN: 1, Infinity: 1, "-Infinity": 1 },
              L = /^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/,
              P = _.round,
              z = parseFloat,
              F = parseInt,
              R = x.prototype.toUpperCase,
              j = (e._availableAttrs = {
                "arrow-end": "none",
                "arrow-start": "none",
                blur: 0,
                "clip-rect": "0 0 1e9 1e9",
                cursor: "default",
                cx: 0,
                cy: 0,
                fill: "#fff",
                "fill-opacity": 1,
                font: '10px "Arial"',
                "font-family": '"Arial"',
                "font-size": "10",
                "font-style": "normal",
                "font-weight": 400,
                gradient: 0,
                height: 0,
                href: "http://raphaeljs.com/",
                "letter-spacing": 0,
                opacity: 1,
                path: "M0,0",
                r: 0,
                rx: 0,
                ry: 0,
                src: "",
                stroke: "#000",
                "stroke-dasharray": "",
                "stroke-linecap": "butt",
                "stroke-linejoin": "butt",
                "stroke-miterlimit": 0,
                "stroke-opacity": 1,
                "stroke-width": 1,
                target: "_blank",
                "text-anchor": "middle",
                title: "Raphael",
                transform: "",
                width: 0,
                x: 0,
                y: 0,
                class: "",
              }),
              I = (e._availableAnimAttrs = {
                blur: A,
                "clip-rect": "csv",
                cx: A,
                cy: A,
                fill: "colour",
                "fill-opacity": A,
                "font-size": A,
                height: A,
                opacity: A,
                path: "path",
                r: A,
                rx: A,
                ry: A,
                stroke: "colour",
                "stroke-opacity": A,
                "stroke-width": A,
                transform: "transform",
                width: A,
                x: A,
                y: A,
              }),
              D =
                /[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/,
              q = { hs: 1, rg: 1 },
              O = /,?([achlmqrstvxz]),?/gi,
              V =
                /([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,
              Y =
                /([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi,
              W =
                /(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi,
              G =
                ((e._radial_gradient =
                  /^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/),
                {}),
              H = function (t, e) {
                return z(t) - z(e);
              },
              X = function (t) {
                return t;
              },
              U = (e._rectPath = function (t, e, r, i, n) {
                return n
                  ? [
                      ["M", t + n, e],
                      ["l", r - 2 * n, 0],
                      ["a", n, n, 0, 0, 1, n, n],
                      ["l", 0, i - 2 * n],
                      ["a", n, n, 0, 0, 1, -n, n],
                      ["l", 2 * n - r, 0],
                      ["a", n, n, 0, 0, 1, -n, -n],
                      ["l", 0, 2 * n - i],
                      ["a", n, n, 0, 0, 1, n, -n],
                      ["z"],
                    ]
                  : [["M", t, e], ["l", r, 0], ["l", 0, i], ["l", -r, 0], ["z"]];
              }),
              $ = function (t, e, r, i) {
                return (
                  i == null && (i = r),
                  [["M", t, e], ["m", 0, -i], ["a", r, i, 0, 1, 1, 0, 2 * i], ["a", r, i, 0, 1, 1, 0, -2 * i], ["z"]]
                );
              },
              Z = (e._getPath = {
                path: function (t) {
                  return t.attr("path");
                },
                circle: function (t) {
                  var e = t.attrs;
                  return $(e.cx, e.cy, e.r);
                },
                ellipse: function (t) {
                  var e = t.attrs;
                  return $(e.cx, e.cy, e.rx, e.ry);
                },
                rect: function (t) {
                  var e = t.attrs;
                  return U(e.x, e.y, e.width, e.height, e.r);
                },
                image: function (t) {
                  var e = t.attrs;
                  return U(e.x, e.y, e.width, e.height);
                },
                text: function (t) {
                  var e = t._getBBox();
                  return U(e.x, e.y, e.width, e.height);
                },
                set: function (t) {
                  var e = t._getBBox();
                  return U(e.x, e.y, e.width, e.height);
                },
              }),
              Q = (e.mapPath = function (t, e) {
                if (!e) return t;
                var r, i, n, a, s, o, l;
                for (n = 0, s = (t = At(t)).length; n < s; n++)
                  for (a = 1, o = (l = t[n]).length; a < o; a += 2)
                    (r = e.x(l[a], l[a + 1])), (i = e.y(l[a], l[a + 1])), (l[a] = r), (l[a + 1] = i);
                return t;
              });
            if (
              ((e._g = l),
              (e.type =
                l.win.SVGAngle ||
                l.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1")
                  ? "SVG"
                  : "VML"),
              e.type == "VML")
            ) {
              var J,
                K = l.doc.createElement("div");
              if (
                ((K.innerHTML = '<v:shape adj="1"/>'),
                ((J = K.firstChild).style.behavior = "url(#default#VML)"),
                !J || typeof J.adj != "object")
              )
                return (e.type = d);
              K = null;
            }
            function tt(t) {
              if (typeof t == "function" || Object(t) !== t) return t;
              var e = new t.constructor();
              for (var r in t) t[o](r) && (e[r] = tt(t[r]));
              return e;
            }
            (e.svg = !(e.vml = e.type == "VML")),
              (e._Paper = u),
              (e.fn = i = u.prototype = e.prototype),
              (e._id = 0),
              (e.is = function (t, e) {
                return (e = b.call(e)) == "finite"
                  ? !N[o](+t)
                  : e == "array"
                  ? t instanceof Array
                  : (e == "null" && t === null) ||
                    (e == typeof t && t !== null) ||
                    (e == "object" && t === Object(t)) ||
                    (e == "array" && Array.isArray && Array.isArray(t)) ||
                    M.call(t).slice(8, -1).toLowerCase() == e;
              }),
              (e.angle = function (t, r, i, n, a, s) {
                if (a == null) {
                  var o = t - i,
                    l = r - n;
                  return o || l ? (180 + (180 * _.atan2(-l, -o)) / S + 360) % 360 : 0;
                }
                return e.angle(t, r, a, s) - e.angle(i, n, a, s);
              }),
              (e.rad = function (t) {
                return ((t % 360) * S) / 180;
              }),
              (e.deg = function (t) {
                return Math.round((((180 * t) / S) % 360) * 1e3) / 1e3;
              }),
              (e.snapTo = function (t, r, i) {
                if (((i = e.is(i, "finite") ? i : 10), e.is(t, T))) {
                  for (var n = t.length; n--; ) if (B(t[n] - r) <= i) return t[n];
                } else {
                  var a = r % (t = +t);
                  if (a < i) return r - a;
                  if (a > t - i) return r - a + t;
                }
                return r;
              });
            var et, rt;
            e.createUUID =
              ((et = /[xy]/g),
              (rt = function (t) {
                var e = (16 * _.random()) | 0;
                return (t == "x" ? e : (3 & e) | 8).toString(16);
              }),
              function () {
                return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(et, rt).toUpperCase();
              });
            e.setWindow = function (r) {
              t("raphael.setWindow", e, l.win, r),
                (l.win = r),
                (l.doc = l.win.document),
                e._engine.initWin && e._engine.initWin(l.win);
            };
            var it = function (t) {
                if (e.vml) {
                  var r,
                    i = /^\s+|\s+$/g;
                  try {
                    var n = new ActiveXObject("htmlfile");
                    n.write("<body>"), n.close(), (r = n.body);
                  } catch (t) {
                    r = createPopup().document.body;
                  }
                  var a = r.createTextRange();
                  it = ht(function (t) {
                    try {
                      r.style.color = x(t).replace(i, d);
                      var e = a.queryCommandValue("ForeColor");
                      return (
                        "#" +
                        ("000000" + (e = ((255 & e) << 16) | (65280 & e) | ((16711680 & e) >>> 16)).toString(16)).slice(
                          -6,
                        )
                      );
                    } catch (t) {
                      return "none";
                    }
                  });
                } else {
                  var s = l.doc.createElement("i");
                  (s.title = "Raphaël Colour Picker"),
                    (s.style.display = "none"),
                    l.doc.body.appendChild(s),
                    (it = ht(function (t) {
                      return (s.style.color = t), l.doc.defaultView.getComputedStyle(s, d).getPropertyValue("color");
                    }));
                }
                return it(t);
              },
              nt = function () {
                return "hsb(" + [this.h, this.s, this.b] + ")";
              },
              at = function () {
                return "hsl(" + [this.h, this.s, this.l] + ")";
              },
              st = function () {
                return this.hex;
              },
              ot = function (t, r, i) {
                if (
                  (r == null &&
                    e.is(t, "object") &&
                    "r" in t &&
                    "g" in t &&
                    "b" in t &&
                    ((i = t.b), (r = t.g), (t = t.r)),
                  r == null && e.is(t, "string"))
                ) {
                  var n = e.getRGB(t);
                  (t = n.r), (r = n.g), (i = n.b);
                }
                return (t > 1 || r > 1 || i > 1) && ((t /= 255), (r /= 255), (i /= 255)), [t, r, i];
              },
              lt = function (t, r, i, n) {
                var a = {
                  r: (t *= 255),
                  g: (r *= 255),
                  b: (i *= 255),
                  hex: e.rgb(t, r, i),
                  toString: st,
                };
                return e.is(n, "finite") && (a.opacity = n), a;
              };
            function ht(t, e, r) {
              return function i() {
                var n = Array.prototype.slice.call(arguments, 0),
                  a = n.join("␀"),
                  s = (i.cache = i.cache || {}),
                  l = (i.count = i.count || []);
                return s[o](a)
                  ? ((function (t, e) {
                      for (var r = 0, i = t.length; r < i; r++) if (t[r] === e) return t.push(t.splice(r, 1)[0]);
                    })(l, a),
                    r ? r(s[a]) : s[a])
                  : (l.length >= 1e3 && delete s[l.shift()], l.push(a), (s[a] = t[c](e, n)), r ? r(s[a]) : s[a]);
              };
            }
            (e.color = function (t) {
              var r;
              return (
                e.is(t, "object") && "h" in t && "s" in t && "b" in t
                  ? ((r = e.hsb2rgb(t)), (t.r = r.r), (t.g = r.g), (t.b = r.b), (t.hex = r.hex))
                  : e.is(t, "object") && "h" in t && "s" in t && "l" in t
                  ? ((r = e.hsl2rgb(t)), (t.r = r.r), (t.g = r.g), (t.b = r.b), (t.hex = r.hex))
                  : (e.is(t, "string") && (t = e.getRGB(t)),
                    e.is(t, "object") && "r" in t && "g" in t && "b" in t
                      ? ((r = e.rgb2hsl(t)), (t.h = r.h), (t.s = r.s), (t.l = r.l), (r = e.rgb2hsb(t)), (t.v = r.b))
                      : ((t = { hex: "none" }).r = t.g = t.b = t.h = t.s = t.v = t.l = -1)),
                (t.toString = st),
                t
              );
            }),
              (e.hsb2rgb = function (t, e, r, i) {
                var n, a, s, o, l;
                return (
                  this.is(t, "object") &&
                    "h" in t &&
                    "s" in t &&
                    "b" in t &&
                    ((r = t.b), (e = t.s), (i = t.o), (t = t.h)),
                  (o = (l = r * e) * (1 - B(((t = ((t *= 360) % 360) / 60) % 2) - 1))),
                  (n = a = s = r - l),
                  lt(
                    (n += [l, o, 0, 0, o, l][(t = ~~t)]),
                    (a += [o, l, l, o, 0, 0][t]),
                    (s += [0, 0, o, l, l, o][t]),
                    i,
                  )
                );
              }),
              (e.hsl2rgb = function (t, e, r, i) {
                var n, a, s, o, l;
                return (
                  this.is(t, "object") && "h" in t && "s" in t && "l" in t && ((r = t.l), (e = t.s), (t = t.h)),
                  (t > 1 || e > 1 || r > 1) && ((t /= 360), (e /= 100), (r /= 100)),
                  (t = ((t *= 360) % 360) / 60),
                  (o = (l = 2 * e * (r < 0.5 ? r : 1 - r)) * (1 - B((t % 2) - 1))),
                  (n = a = s = r - l / 2),
                  lt(
                    (n += [l, o, 0, 0, o, l][(t = ~~t)]),
                    (a += [o, l, l, o, 0, 0][t]),
                    (s += [0, 0, o, l, l, o][t]),
                    i,
                  )
                );
              }),
              (e.rgb2hsb = function (t, e, r) {
                var i, n;
                return (
                  (t = (r = ot(t, e, r))[0]),
                  (e = r[1]),
                  (r = r[2]),
                  {
                    h:
                      (((((n = (i = w(t, e, r)) - k(t, e, r)) == 0
                        ? null
                        : i == t
                        ? (e - r) / n
                        : i == e
                        ? (r - t) / n + 2
                        : (t - e) / n + 4) +
                        360) %
                        6) *
                        60) /
                      360,
                    s: n == 0 ? 0 : n / i,
                    b: i,
                    toString: nt,
                  }
                );
              }),
              (e.rgb2hsl = function (t, e, r) {
                var i, n, a, s;
                return (
                  (t = (r = ot(t, e, r))[0]),
                  (e = r[1]),
                  (r = r[2]),
                  (i = ((n = w(t, e, r)) + (a = k(t, e, r))) / 2),
                  {
                    h:
                      (((((s = n - a) == 0 ? null : n == t ? (e - r) / s : n == e ? (r - t) / s + 2 : (t - e) / s + 4) +
                        360) %
                        6) *
                        60) /
                      360,
                    s: s == 0 ? 0 : i < 0.5 ? s / (2 * i) : s / (2 - 2 * i),
                    l: i,
                    toString: at,
                  }
                );
              }),
              (e._path2string = function () {
                return this.join(",").replace(O, "$1");
              });
            e._preload = function (t, e) {
              var r = l.doc.createElement("img");
              (r.style.cssText = "position:absolute;left:-9999em;top:-9999em"),
                (r.onload = function () {
                  e.call(this), (this.onload = null), l.doc.body.removeChild(this);
                }),
                (r.onerror = function () {
                  l.doc.body.removeChild(this);
                }),
                l.doc.body.appendChild(r),
                (r.src = t);
            };
            function ut() {
              return this.hex;
            }
            function ct(t, e) {
              for (var r = [], i = 0, n = t.length; n - 2 * !e > i; i += 2) {
                var a = [
                  { x: +t[i - 2], y: +t[i - 1] },
                  { x: +t[i], y: +t[i + 1] },
                  { x: +t[i + 2], y: +t[i + 3] },
                  { x: +t[i + 4], y: +t[i + 5] },
                ];
                e
                  ? i
                    ? n - 4 == i
                      ? (a[3] = { x: +t[0], y: +t[1] })
                      : n - 2 == i && ((a[2] = { x: +t[0], y: +t[1] }), (a[3] = { x: +t[2], y: +t[3] }))
                    : (a[0] = { x: +t[n - 2], y: +t[n - 1] })
                  : n - 4 == i
                  ? (a[3] = a[2])
                  : i || (a[0] = { x: +t[i], y: +t[i + 1] }),
                  r.push([
                    "C",
                    (-a[0].x + 6 * a[1].x + a[2].x) / 6,
                    (-a[0].y + 6 * a[1].y + a[2].y) / 6,
                    (a[1].x + 6 * a[2].x - a[3].x) / 6,
                    (a[1].y + 6 * a[2].y - a[3].y) / 6,
                    a[2].x,
                    a[2].y,
                  ]);
              }
              return r;
            }
            (e.getRGB = ht(function (t) {
              if (!t || (t = x(t)).indexOf("-") + 1)
                return {
                  r: -1,
                  g: -1,
                  b: -1,
                  hex: "none",
                  error: 1,
                  toString: ut,
                };
              if (t == "none") return { r: -1, g: -1, b: -1, hex: "none", toString: ut };
              !q[o](t.toLowerCase().substring(0, 2)) && t.charAt() != "#" && (t = it(t));
              var r,
                i,
                n,
                a,
                s,
                l,
                h = t.match(E);
              return h
                ? (h[2] &&
                    ((n = F(h[2].substring(5), 16)),
                    (i = F(h[2].substring(3, 5), 16)),
                    (r = F(h[2].substring(1, 3), 16))),
                  h[3] &&
                    ((n = F((s = h[3].charAt(3)) + s, 16)),
                    (i = F((s = h[3].charAt(2)) + s, 16)),
                    (r = F((s = h[3].charAt(1)) + s, 16))),
                  h[4] &&
                    ((l = h[4][v](D)),
                    (r = z(l[0])),
                    l[0].slice(-1) == "%" && (r *= 2.55),
                    (i = z(l[1])),
                    l[1].slice(-1) == "%" && (i *= 2.55),
                    (n = z(l[2])),
                    l[2].slice(-1) == "%" && (n *= 2.55),
                    h[1].toLowerCase().slice(0, 4) == "rgba" && (a = z(l[3])),
                    l[3] && l[3].slice(-1) == "%" && (a /= 100)),
                  h[5]
                    ? ((l = h[5][v](D)),
                      (r = z(l[0])),
                      l[0].slice(-1) == "%" && (r *= 2.55),
                      (i = z(l[1])),
                      l[1].slice(-1) == "%" && (i *= 2.55),
                      (n = z(l[2])),
                      l[2].slice(-1) == "%" && (n *= 2.55),
                      (l[0].slice(-3) == "deg" || l[0].slice(-1) == "°") && (r /= 360),
                      h[1].toLowerCase().slice(0, 4) == "hsba" && (a = z(l[3])),
                      l[3] && l[3].slice(-1) == "%" && (a /= 100),
                      e.hsb2rgb(r, i, n, a))
                    : h[6]
                    ? ((l = h[6][v](D)),
                      (r = z(l[0])),
                      l[0].slice(-1) == "%" && (r *= 2.55),
                      (i = z(l[1])),
                      l[1].slice(-1) == "%" && (i *= 2.55),
                      (n = z(l[2])),
                      l[2].slice(-1) == "%" && (n *= 2.55),
                      (l[0].slice(-3) == "deg" || l[0].slice(-1) == "°") && (r /= 360),
                      h[1].toLowerCase().slice(0, 4) == "hsla" && (a = z(l[3])),
                      l[3] && l[3].slice(-1) == "%" && (a /= 100),
                      e.hsl2rgb(r, i, n, a))
                    : (((h = { r: r, g: i, b: n, toString: ut }).hex =
                        "#" + (16777216 | n | (i << 8) | (r << 16)).toString(16).slice(1)),
                      e.is(a, "finite") && (h.opacity = a),
                      h))
                : { r: -1, g: -1, b: -1, hex: "none", error: 1, toString: ut };
            }, e)),
              (e.hsb = ht(function (t, r, i) {
                return e.hsb2rgb(t, r, i).hex;
              })),
              (e.hsl = ht(function (t, r, i) {
                return e.hsl2rgb(t, r, i).hex;
              })),
              (e.rgb = ht(function (t, e, r) {
                function i(t) {
                  return (t + 0.5) | 0;
                }
                return "#" + (16777216 | i(r) | (i(e) << 8) | (i(t) << 16)).toString(16).slice(1);
              })),
              (e.getColor = function (t) {
                var e = (this.getColor.start = this.getColor.start || {
                    h: 0,
                    s: 1,
                    b: t || 0.75,
                  }),
                  r = this.hsb2rgb(e.h, e.s, e.b);
                return (
                  (e.h += 0.075),
                  e.h > 1 && ((e.h = 0), (e.s -= 0.2), e.s <= 0 && (this.getColor.start = { h: 0, s: 1, b: e.b })),
                  r.hex
                );
              }),
              (e.getColor.reset = function () {
                delete this.start;
              }),
              (e.parsePathString = function (t) {
                if (!t) return null;
                var r = ft(t);
                if (r.arr) return mt(r.arr);
                var i = {
                    a: 7,
                    c: 6,
                    h: 1,
                    l: 2,
                    m: 2,
                    r: 4,
                    q: 4,
                    s: 4,
                    t: 2,
                    v: 1,
                    z: 0,
                  },
                  n = [];
                return (
                  e.is(t, T) && e.is(t[0], T) && (n = mt(t)),
                  n.length ||
                    x(t).replace(V, function (t, e, r) {
                      var a = [],
                        s = e.toLowerCase();
                      if (
                        (r.replace(W, function (t, e) {
                          e && a.push(+e);
                        }),
                        s == "m" &&
                          a.length > 2 &&
                          (n.push([e][f](a.splice(0, 2))), (s = "l"), (e = e == "m" ? "l" : "L")),
                        s == "r")
                      )
                        n.push([e][f](a));
                      else for (; a.length >= i[s] && (n.push([e][f](a.splice(0, i[s]))), i[s]); );
                    }),
                  (n.toString = e._path2string),
                  (r.arr = mt(n)),
                  n
                );
              }),
              (e.parseTransformString = ht(function (t) {
                if (!t) return null;
                var r = [];
                return (
                  e.is(t, T) && e.is(t[0], T) && (r = mt(t)),
                  r.length ||
                    x(t).replace(Y, function (t, e, i) {
                      var n = [];
                      b.call(e);
                      i.replace(W, function (t, e) {
                        e && n.push(+e);
                      }),
                        r.push([e][f](n));
                    }),
                  (r.toString = e._path2string),
                  r
                );
              }));
            var ft = function (t) {
              var e = (ft.ps = ft.ps || {});
              return (
                e[t] ? (e[t].sleep = 100) : (e[t] = { sleep: 100 }),
                setTimeout(function () {
                  for (var r in e) e[o](r) && r != t && (e[r].sleep--, !e[r].sleep && delete e[r]);
                }),
                e[t]
              );
            };
            function pt(t, e, r, i, n) {
              return t * (t * (-3 * e + 9 * r - 9 * i + 3 * n) + 6 * e - 12 * r + 6 * i) - 3 * e + 3 * r;
            }
            function dt(t, e, r, i, n, a, s, o, l) {
              l == null && (l = 1);
              for (
                var h = (l = l > 1 ? 1 : l < 0 ? 0 : l) / 2,
                  u = [
                    -0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816,
                    0.9816,
                  ],
                  c = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472],
                  f = 0,
                  p = 0;
                p < 12;
                p++
              ) {
                var d = h * u[p] + h,
                  g = pt(d, t, r, n, s),
                  x = pt(d, e, i, a, o),
                  v = g * g + x * x;
                f += c[p] * _.sqrt(v);
              }
              return h * f;
            }
            function gt(t, e, r, i, n, a, s, o) {
              if (!(w(t, r) < k(n, s) || k(t, r) > w(n, s) || w(e, i) < k(a, o) || k(e, i) > w(a, o))) {
                var l = (t - r) * (a - o) - (e - i) * (n - s);
                if (l) {
                  var h = ((t * i - e * r) * (n - s) - (t - r) * (n * o - a * s)) / l,
                    u = ((t * i - e * r) * (a - o) - (e - i) * (n * o - a * s)) / l,
                    c = +h.toFixed(2),
                    f = +u.toFixed(2);
                  if (
                    !(
                      c < +k(t, r).toFixed(2) ||
                      c > +w(t, r).toFixed(2) ||
                      c < +k(n, s).toFixed(2) ||
                      c > +w(n, s).toFixed(2) ||
                      f < +k(e, i).toFixed(2) ||
                      f > +w(e, i).toFixed(2) ||
                      f < +k(a, o).toFixed(2) ||
                      f > +w(a, o).toFixed(2)
                    )
                  )
                    return { x: h, y: u };
                }
              }
            }
            function xt(t, r, i) {
              var n = e.bezierBBox(t),
                a = e.bezierBBox(r);
              if (!e.isBBoxIntersect(n, a)) return i ? 0 : [];
              for (
                var s = dt.apply(0, t),
                  o = dt.apply(0, r),
                  l = w(~~(s / 5), 1),
                  h = w(~~(o / 5), 1),
                  u = [],
                  c = [],
                  f = {},
                  p = i ? 0 : [],
                  d = 0;
                d < l + 1;
                d++
              ) {
                var g = e.findDotsAtSegment.apply(e, t.concat(d / l));
                u.push({ x: g.x, y: g.y, t: d / l });
              }
              for (d = 0; d < h + 1; d++)
                (g = e.findDotsAtSegment.apply(e, r.concat(d / h))), c.push({ x: g.x, y: g.y, t: d / h });
              for (d = 0; d < l; d++)
                for (var x = 0; x < h; x++) {
                  var v = u[d],
                    y = u[d + 1],
                    m = c[x],
                    b = c[x + 1],
                    _ = B(y.x - v.x) < 0.001 ? "y" : "x",
                    C = B(b.x - m.x) < 0.001 ? "y" : "x",
                    S = gt(v.x, v.y, y.x, y.y, m.x, m.y, b.x, b.y);
                  if (S) {
                    if (f[S.x.toFixed(4)] == S.y.toFixed(4)) continue;
                    f[S.x.toFixed(4)] = S.y.toFixed(4);
                    var A = v.t + B((S[_] - v[_]) / (y[_] - v[_])) * (y.t - v.t),
                      T = m.t + B((S[C] - m[C]) / (b[C] - m[C])) * (b.t - m.t);
                    A >= 0 &&
                      A <= 1.001 &&
                      T >= 0 &&
                      T <= 1.001 &&
                      (i ? p++ : p.push({ x: S.x, y: S.y, t1: k(A, 1), t2: k(T, 1) }));
                  }
                }
              return p;
            }
            function vt(t, r, i) {
              (t = e._path2curve(t)), (r = e._path2curve(r));
              for (var n, a, s, o, l, h, u, c, f, p, d = i ? 0 : [], g = 0, x = t.length; g < x; g++) {
                var v = t[g];
                if (v[0] == "M") (n = l = v[1]), (a = h = v[2]);
                else {
                  v[0] == "C"
                    ? ((n = (f = [n, a].concat(v.slice(1)))[6]), (a = f[7]))
                    : ((f = [n, a, n, a, l, h, l, h]), (n = l), (a = h));
                  for (var y = 0, m = r.length; y < m; y++) {
                    var b = r[y];
                    if (b[0] == "M") (s = u = b[1]), (o = c = b[2]);
                    else {
                      b[0] == "C"
                        ? ((s = (p = [s, o].concat(b.slice(1)))[6]), (o = p[7]))
                        : ((p = [s, o, s, o, u, c, u, c]), (s = u), (o = c));
                      var _ = xt(f, p, i);
                      if (i) d += _;
                      else {
                        for (var w = 0, k = _.length; w < k; w++)
                          (_[w].segment1 = g), (_[w].segment2 = y), (_[w].bez1 = f), (_[w].bez2 = p);
                        d = d.concat(_);
                      }
                    }
                  }
                }
              }
              return d;
            }
            (e.findDotsAtSegment = function (t, e, r, i, n, a, s, o, l) {
              var h = 1 - l,
                u = C(h, 3),
                c = C(h, 2),
                f = l * l,
                p = f * l,
                d = u * t + 3 * c * l * r + 3 * h * l * l * n + p * s,
                g = u * e + 3 * c * l * i + 3 * h * l * l * a + p * o,
                x = t + 2 * l * (r - t) + f * (n - 2 * r + t),
                v = e + 2 * l * (i - e) + f * (a - 2 * i + e),
                y = r + 2 * l * (n - r) + f * (s - 2 * n + r),
                m = i + 2 * l * (a - i) + f * (o - 2 * a + i),
                b = h * t + l * r,
                w = h * e + l * i,
                k = h * n + l * s,
                B = h * a + l * o,
                A = 90 - (180 * _.atan2(x - y, v - m)) / S;
              return (
                (x > y || v < m) && (A += 180),
                {
                  x: d,
                  y: g,
                  m: { x: x, y: v },
                  n: { x: y, y: m },
                  start: { x: b, y: w },
                  end: { x: k, y: B },
                  alpha: A,
                }
              );
            }),
              (e.bezierBBox = function (t, r, i, n, a, s, o, l) {
                e.is(t, "array") || (t = [t, r, i, n, a, s, o, l]);
                var h = St.apply(null, t);
                return {
                  x: h.min.x,
                  y: h.min.y,
                  x2: h.max.x,
                  y2: h.max.y,
                  width: h.max.x - h.min.x,
                  height: h.max.y - h.min.y,
                };
              }),
              (e.isPointInsideBBox = function (t, e, r) {
                return e >= t.x && e <= t.x2 && r >= t.y && r <= t.y2;
              }),
              (e.isBBoxIntersect = function (t, r) {
                var i = e.isPointInsideBBox;
                return (
                  i(r, t.x, t.y) ||
                  i(r, t.x2, t.y) ||
                  i(r, t.x, t.y2) ||
                  i(r, t.x2, t.y2) ||
                  i(t, r.x, r.y) ||
                  i(t, r.x2, r.y) ||
                  i(t, r.x, r.y2) ||
                  i(t, r.x2, r.y2) ||
                  (((t.x < r.x2 && t.x > r.x) || (r.x < t.x2 && r.x > t.x)) &&
                    ((t.y < r.y2 && t.y > r.y) || (r.y < t.y2 && r.y > t.y)))
                );
              }),
              (e.pathIntersection = function (t, e) {
                return vt(t, e);
              }),
              (e.pathIntersectionNumber = function (t, e) {
                return vt(t, e, 1);
              }),
              (e.isPointInsidePath = function (t, r, i) {
                var n = e.pathBBox(t);
                return (
                  e.isPointInsideBBox(n, r, i) &&
                  vt(
                    t,
                    [
                      ["M", r, i],
                      ["H", n.x2 + 10],
                    ],
                    1,
                  ) %
                    2 ==
                    1
                );
              }),
              (e._removedFactory = function (e) {
                return function () {
                  t("raphael.log", null, "Raphaël: you are calling to method “" + e + "” of removed object", e);
                };
              });
            var yt = (e.pathBBox = function (t) {
                var e = ft(t);
                if (e.bbox) return tt(e.bbox);
                if (!t) return { x: 0, y: 0, width: 0, height: 0, x2: 0, y2: 0 };
                for (var r, i = 0, n = 0, a = [], s = [], o = 0, l = (t = At(t)).length; o < l; o++)
                  if ((r = t[o])[0] == "M") (i = r[1]), (n = r[2]), a.push(i), s.push(n);
                  else {
                    var h = St(i, n, r[1], r[2], r[3], r[4], r[5], r[6]);
                    (a = a[f](h.min.x, h.max.x)), (s = s[f](h.min.y, h.max.y)), (i = r[5]), (n = r[6]);
                  }
                var u = k[c](0, a),
                  p = k[c](0, s),
                  d = w[c](0, a),
                  g = w[c](0, s),
                  x = d - u,
                  v = g - p,
                  y = {
                    x: u,
                    y: p,
                    x2: d,
                    y2: g,
                    width: x,
                    height: v,
                    cx: u + x / 2,
                    cy: p + v / 2,
                  };
                return (e.bbox = tt(y)), y;
              }),
              mt = function (t) {
                var r = tt(t);
                return (r.toString = e._path2string), r;
              },
              bt = (e._pathToRelative = function (t) {
                var r = ft(t);
                if (r.rel) return mt(r.rel);
                (e.is(t, T) && e.is(t && t[0], T)) || (t = e.parsePathString(t));
                var i = [],
                  n = 0,
                  a = 0,
                  s = 0,
                  o = 0,
                  l = 0;
                t[0][0] == "M" && ((s = n = t[0][1]), (o = a = t[0][2]), l++, i.push(["M", n, a]));
                for (var h = l, u = t.length; h < u; h++) {
                  var c = (i[h] = []),
                    f = t[h];
                  if (f[0] != b.call(f[0]))
                    switch (((c[0] = b.call(f[0])), c[0])) {
                      case "a":
                        (c[1] = f[1]),
                          (c[2] = f[2]),
                          (c[3] = f[3]),
                          (c[4] = f[4]),
                          (c[5] = f[5]),
                          (c[6] = +(f[6] - n).toFixed(3)),
                          (c[7] = +(f[7] - a).toFixed(3));
                        break;
                      case "v":
                        c[1] = +(f[1] - a).toFixed(3);
                        break;
                      case "m":
                        (s = f[1]), (o = f[2]);
                      default:
                        for (var p = 1, d = f.length; p < d; p++) c[p] = +(f[p] - (p % 2 ? n : a)).toFixed(3);
                    }
                  else {
                    (c = i[h] = []), f[0] == "m" && ((s = f[1] + n), (o = f[2] + a));
                    for (var g = 0, x = f.length; g < x; g++) i[h][g] = f[g];
                  }
                  var v = i[h].length;
                  switch (i[h][0]) {
                    case "z":
                      (n = s), (a = o);
                      break;
                    case "h":
                      n += +i[h][v - 1];
                      break;
                    case "v":
                      a += +i[h][v - 1];
                      break;
                    default:
                      (n += +i[h][v - 2]), (a += +i[h][v - 1]);
                  }
                }
                return (i.toString = e._path2string), (r.rel = mt(i)), i;
              }),
              _t = (e._pathToAbsolute = function (t) {
                var r = ft(t);
                if (r.abs) return mt(r.abs);
                if (((e.is(t, T) && e.is(t && t[0], T)) || (t = e.parsePathString(t)), !t || !t.length))
                  return [["M", 0, 0]];
                var i = [],
                  n = 0,
                  a = 0,
                  s = 0,
                  o = 0,
                  l = 0;
                t[0][0] == "M" && ((s = n = +t[0][1]), (o = a = +t[0][2]), l++, (i[0] = ["M", n, a]));
                for (
                  var h,
                    u,
                    c = t.length == 3 && t[0][0] == "M" && t[1][0].toUpperCase() == "R" && t[2][0].toUpperCase() == "Z",
                    p = l,
                    d = t.length;
                  p < d;
                  p++
                ) {
                  if ((i.push((h = [])), (u = t[p])[0] != R.call(u[0])))
                    switch (((h[0] = R.call(u[0])), h[0])) {
                      case "A":
                        (h[1] = u[1]),
                          (h[2] = u[2]),
                          (h[3] = u[3]),
                          (h[4] = u[4]),
                          (h[5] = u[5]),
                          (h[6] = +(u[6] + n)),
                          (h[7] = +(u[7] + a));
                        break;
                      case "V":
                        h[1] = +u[1] + a;
                        break;
                      case "H":
                        h[1] = +u[1] + n;
                        break;
                      case "R":
                        for (var g = [n, a][f](u.slice(1)), x = 2, v = g.length; x < v; x++)
                          (g[x] = +g[x] + n), (g[++x] = +g[x] + a);
                        i.pop(), (i = i[f](ct(g, c)));
                        break;
                      case "M":
                        (s = +u[1] + n), (o = +u[2] + a);
                      default:
                        for (x = 1, v = u.length; x < v; x++) h[x] = +u[x] + (x % 2 ? n : a);
                    }
                  else if (u[0] == "R")
                    (g = [n, a][f](u.slice(1))), i.pop(), (i = i[f](ct(g, c))), (h = ["R"][f](u.slice(-2)));
                  else for (var y = 0, m = u.length; y < m; y++) h[y] = u[y];
                  switch (h[0]) {
                    case "Z":
                      (n = s), (a = o);
                      break;
                    case "H":
                      n = h[1];
                      break;
                    case "V":
                      a = h[1];
                      break;
                    case "M":
                      (s = h[h.length - 2]), (o = h[h.length - 1]);
                    default:
                      (n = h[h.length - 2]), (a = h[h.length - 1]);
                  }
                }
                return (i.toString = e._path2string), (r.abs = mt(i)), i;
              }),
              wt = function (t, e, r, i) {
                return [t, e, r, i, r, i];
              },
              kt = function (t, e, r, i, n, a) {
                return [
                  (1 / 3) * t + (2 / 3) * r,
                  (1 / 3) * e + (2 / 3) * i,
                  (1 / 3) * n + (2 / 3) * r,
                  (1 / 3) * a + (2 / 3) * i,
                  n,
                  a,
                ];
              },
              Bt = function (t, e, r, i, n, a, s, o, l, h) {
                var u,
                  c = (120 * S) / 180,
                  p = (S / 180) * (+n || 0),
                  d = [],
                  g = ht(function (t, e, r) {
                    return {
                      x: t * _.cos(r) - e * _.sin(r),
                      y: t * _.sin(r) + e * _.cos(r),
                    };
                  });
                if (h) (T = h[0]), (M = h[1]), (C = h[2]), (A = h[3]);
                else {
                  (t = (u = g(t, e, -p)).x), (e = u.y), (o = (u = g(o, l, -p)).x), (l = u.y);
                  _.cos((S / 180) * n), _.sin((S / 180) * n);
                  var x = (t - o) / 2,
                    y = (e - l) / 2,
                    m = (x * x) / (r * r) + (y * y) / (i * i);
                  m > 1 && ((r *= m = _.sqrt(m)), (i *= m));
                  var b = r * r,
                    w = i * i,
                    k = (a == s ? -1 : 1) * _.sqrt(B((b * w - b * y * y - w * x * x) / (b * y * y + w * x * x))),
                    C = (k * r * y) / i + (t + o) / 2,
                    A = (k * -i * x) / r + (e + l) / 2,
                    T = _.asin(((e - A) / i).toFixed(9)),
                    M = _.asin(((l - A) / i).toFixed(9));
                  (T = t < C ? S - T : T),
                    (M = o < C ? S - M : M),
                    T < 0 && (T = 2 * S + T),
                    M < 0 && (M = 2 * S + M),
                    s && T > M && (T -= 2 * S),
                    !s && M > T && (M -= 2 * S);
                }
                var E = M - T;
                if (B(E) > c) {
                  var N = M,
                    L = o,
                    P = l;
                  (M = T + c * (s && M > T ? 1 : -1)),
                    (o = C + r * _.cos(M)),
                    (l = A + i * _.sin(M)),
                    (d = Bt(o, l, r, i, n, 0, s, L, P, [M, N, C, A]));
                }
                E = M - T;
                var z = _.cos(T),
                  F = _.sin(T),
                  R = _.cos(M),
                  j = _.sin(M),
                  I = _.tan(E / 4),
                  D = (4 / 3) * r * I,
                  q = (4 / 3) * i * I,
                  O = [t, e],
                  V = [t + D * F, e - q * z],
                  Y = [o + D * j, l - q * R],
                  W = [o, l];
                if (((V[0] = 2 * O[0] - V[0]), (V[1] = 2 * O[1] - V[1]), h)) return [V, Y, W][f](d);
                for (var G = [], H = 0, X = (d = [V, Y, W][f](d).join()[v](",")).length; H < X; H++)
                  G[H] = H % 2 ? g(d[H - 1], d[H], p).y : g(d[H], d[H + 1], p).x;
                return G;
              },
              Ct = function (t, e, r, i, n, a, s, o, l) {
                var h = 1 - l;
                return {
                  x: C(h, 3) * t + 3 * C(h, 2) * l * r + 3 * h * l * l * n + C(l, 3) * s,
                  y: C(h, 3) * e + 3 * C(h, 2) * l * i + 3 * h * l * l * a + C(l, 3) * o,
                };
              },
              St = ht(function (t, e, r, i, n, a, s, o) {
                var l,
                  h = n - 2 * r + t - (s - 2 * n + r),
                  u = 2 * (r - t) - 2 * (n - r),
                  f = t - r,
                  p = (-u + _.sqrt(u * u - 4 * h * f)) / 2 / h,
                  d = (-u - _.sqrt(u * u - 4 * h * f)) / 2 / h,
                  g = [e, o],
                  x = [t, s];
                return (
                  B(p) > "1e12" && (p = 0.5),
                  B(d) > "1e12" && (d = 0.5),
                  p > 0 && p < 1 && ((l = Ct(t, e, r, i, n, a, s, o, p)), x.push(l.x), g.push(l.y)),
                  d > 0 && d < 1 && ((l = Ct(t, e, r, i, n, a, s, o, d)), x.push(l.x), g.push(l.y)),
                  (h = a - 2 * i + e - (o - 2 * a + i)),
                  (f = e - i),
                  (p = (-(u = 2 * (i - e) - 2 * (a - i)) + _.sqrt(u * u - 4 * h * f)) / 2 / h),
                  (d = (-u - _.sqrt(u * u - 4 * h * f)) / 2 / h),
                  B(p) > "1e12" && (p = 0.5),
                  B(d) > "1e12" && (d = 0.5),
                  p > 0 && p < 1 && ((l = Ct(t, e, r, i, n, a, s, o, p)), x.push(l.x), g.push(l.y)),
                  d > 0 && d < 1 && ((l = Ct(t, e, r, i, n, a, s, o, d)), x.push(l.x), g.push(l.y)),
                  {
                    min: { x: k[c](0, x), y: k[c](0, g) },
                    max: { x: w[c](0, x), y: w[c](0, g) },
                  }
                );
              }),
              At = (e._path2curve = ht(
                function (t, e) {
                  var r = !e && ft(t);
                  if (!e && r.curve) return mt(r.curve);
                  for (
                    var i = _t(t),
                      n = e && _t(e),
                      a = {
                        x: 0,
                        y: 0,
                        bx: 0,
                        by: 0,
                        X: 0,
                        Y: 0,
                        qx: null,
                        qy: null,
                      },
                      s = {
                        x: 0,
                        y: 0,
                        bx: 0,
                        by: 0,
                        X: 0,
                        Y: 0,
                        qx: null,
                        qy: null,
                      },
                      o = function (t, e, r) {
                        var i, n;
                        if (!t) return ["C", e.x, e.y, e.x, e.y, e.x, e.y];
                        switch ((!(t[0] in { T: 1, Q: 1 }) && (e.qx = e.qy = null), t[0])) {
                          case "M":
                            (e.X = t[1]), (e.Y = t[2]);
                            break;
                          case "A":
                            t = ["C"][f](Bt[c](0, [e.x, e.y][f](t.slice(1))));
                            break;
                          case "S":
                            r == "C" || r == "S"
                              ? ((i = 2 * e.x - e.bx), (n = 2 * e.y - e.by))
                              : ((i = e.x), (n = e.y)),
                              (t = ["C", i, n][f](t.slice(1)));
                            break;
                          case "T":
                            r == "Q" || r == "T"
                              ? ((e.qx = 2 * e.x - e.qx), (e.qy = 2 * e.y - e.qy))
                              : ((e.qx = e.x), (e.qy = e.y)),
                              (t = ["C"][f](kt(e.x, e.y, e.qx, e.qy, t[1], t[2])));
                            break;
                          case "Q":
                            (e.qx = t[1]), (e.qy = t[2]), (t = ["C"][f](kt(e.x, e.y, t[1], t[2], t[3], t[4])));
                            break;
                          case "L":
                            t = ["C"][f](wt(e.x, e.y, t[1], t[2]));
                            break;
                          case "H":
                            t = ["C"][f](wt(e.x, e.y, t[1], e.y));
                            break;
                          case "V":
                            t = ["C"][f](wt(e.x, e.y, e.x, t[1]));
                            break;
                          case "Z":
                            t = ["C"][f](wt(e.x, e.y, e.X, e.Y));
                        }
                        return t;
                      },
                      l = function (t, e) {
                        if (t[e].length > 7) {
                          t[e].shift();
                          for (var r = t[e]; r.length; )
                            (u[e] = "A"), n && (p[e] = "A"), t.splice(e++, 0, ["C"][f](r.splice(0, 6)));
                          t.splice(e, 1), (v = w(i.length, (n && n.length) || 0));
                        }
                      },
                      h = function (t, e, r, a, s) {
                        t &&
                          e &&
                          t[s][0] == "M" &&
                          e[s][0] != "M" &&
                          (e.splice(s, 0, ["M", a.x, a.y]),
                          (r.bx = 0),
                          (r.by = 0),
                          (r.x = t[s][1]),
                          (r.y = t[s][2]),
                          (v = w(i.length, (n && n.length) || 0)));
                      },
                      u = [],
                      p = [],
                      d = "",
                      g = "",
                      x = 0,
                      v = w(i.length, (n && n.length) || 0);
                    x < v;
                    x++
                  ) {
                    i[x] && (d = i[x][0]),
                      d != "C" && ((u[x] = d), x && (g = u[x - 1])),
                      (i[x] = o(i[x], a, g)),
                      u[x] != "A" && d == "C" && (u[x] = "C"),
                      l(i, x),
                      n &&
                        (n[x] && (d = n[x][0]),
                        d != "C" && ((p[x] = d), x && (g = p[x - 1])),
                        (n[x] = o(n[x], s, g)),
                        p[x] != "A" && d == "C" && (p[x] = "C"),
                        l(n, x)),
                      h(i, n, a, s, x),
                      h(n, i, s, a, x);
                    var y = i[x],
                      m = n && n[x],
                      b = y.length,
                      _ = n && m.length;
                    (a.x = y[b - 2]),
                      (a.y = y[b - 1]),
                      (a.bx = z(y[b - 4]) || a.x),
                      (a.by = z(y[b - 3]) || a.y),
                      (s.bx = n && (z(m[_ - 4]) || s.x)),
                      (s.by = n && (z(m[_ - 3]) || s.y)),
                      (s.x = n && m[_ - 2]),
                      (s.y = n && m[_ - 1]);
                  }
                  return n || (r.curve = mt(i)), n ? [i, n] : i;
                },
                null,
                mt,
              )),
              Tt =
                ((e._parseDots = ht(function (t) {
                  for (var r = [], i = 0, n = t.length; i < n; i++) {
                    var a = {},
                      s = t[i].match(/^([^:]*):?([\d\.]*)/);
                    if (((a.color = e.getRGB(s[1])), a.color.error)) return null;
                    (a.opacity = a.color.opacity), (a.color = a.color.hex), s[2] && (a.offset = s[2] + "%"), r.push(a);
                  }
                  for (i = 1, n = r.length - 1; i < n; i++)
                    if (!r[i].offset) {
                      for (var o = z(r[i - 1].offset || 0), l = 0, h = i + 1; h < n; h++)
                        if (r[h].offset) {
                          l = r[h].offset;
                          break;
                        }
                      l || ((l = 100), (h = n));
                      for (var u = ((l = z(l)) - o) / (h - i + 1); i < h; i++) (o += u), (r[i].offset = o + "%");
                    }
                  return r;
                })),
                (e._tear = function (t, e) {
                  t == e.top && (e.top = t.prev),
                    t == e.bottom && (e.bottom = t.next),
                    t.next && (t.next.prev = t.prev),
                    t.prev && (t.prev.next = t.next);
                })),
              Mt =
                ((e._tofront = function (t, e) {
                  e.top !== t && (Tt(t, e), (t.next = null), (t.prev = e.top), (e.top.next = t), (e.top = t));
                }),
                (e._toback = function (t, e) {
                  e.bottom !== t &&
                    (Tt(t, e), (t.next = e.bottom), (t.prev = null), (e.bottom.prev = t), (e.bottom = t));
                }),
                (e._insertafter = function (t, e, r) {
                  Tt(t, r),
                    e == r.top && (r.top = t),
                    e.next && (e.next.prev = t),
                    (t.next = e.next),
                    (t.prev = e),
                    (e.next = t);
                }),
                (e._insertbefore = function (t, e, r) {
                  Tt(t, r),
                    e == r.bottom && (r.bottom = t),
                    e.prev && (e.prev.next = t),
                    (t.prev = e.prev),
                    (e.prev = t),
                    (t.next = e);
                }),
                (e.toMatrix = function (t, e) {
                  var r = yt(t),
                    i = {
                      _: { transform: d },
                      getBBox: function () {
                        return r;
                      },
                    };
                  return Et(i, e), i.matrix;
                })),
              Et =
                ((e.transformPath = function (t, e) {
                  return Q(t, Mt(t, e));
                }),
                (e._extractTransform = function (t, r) {
                  if (r == null) return t._.transform;
                  r = x(r).replace(/\.{3}|\u2026/g, t._.transform || d);
                  var i,
                    n,
                    a = e.parseTransformString(r),
                    s = 0,
                    o = 1,
                    l = 1,
                    h = t._,
                    u = new Pt();
                  if (((h.transform = a || []), a))
                    for (var c = 0, f = a.length; c < f; c++) {
                      var p,
                        g,
                        v,
                        y,
                        m,
                        b = a[c],
                        _ = b.length,
                        w = x(b[0]).toLowerCase(),
                        k = b[0] != w,
                        B = k ? u.invert() : 0;
                      w == "t" && _ == 3
                        ? k
                          ? ((p = B.x(0, 0)),
                            (g = B.y(0, 0)),
                            (v = B.x(b[1], b[2])),
                            (y = B.y(b[1], b[2])),
                            u.translate(v - p, y - g))
                          : u.translate(b[1], b[2])
                        : w == "r"
                        ? _ == 2
                          ? ((m = m || t.getBBox(1)),
                            u.rotate(b[1], m.x + m.width / 2, m.y + m.height / 2),
                            (s += b[1]))
                          : _ == 4 &&
                            (k
                              ? ((v = B.x(b[2], b[3])), (y = B.y(b[2], b[3])), u.rotate(b[1], v, y))
                              : u.rotate(b[1], b[2], b[3]),
                            (s += b[1]))
                        : w == "s"
                        ? _ == 2 || _ == 3
                          ? ((m = m || t.getBBox(1)),
                            u.scale(b[1], b[_ - 1], m.x + m.width / 2, m.y + m.height / 2),
                            (o *= b[1]),
                            (l *= b[_ - 1]))
                          : _ == 5 &&
                            (k
                              ? ((v = B.x(b[3], b[4])), (y = B.y(b[3], b[4])), u.scale(b[1], b[2], v, y))
                              : u.scale(b[1], b[2], b[3], b[4]),
                            (o *= b[1]),
                            (l *= b[2]))
                        : w == "m" && _ == 7 && u.add(b[1], b[2], b[3], b[4], b[5], b[6]),
                        (h.dirtyT = 1),
                        (t.matrix = u);
                    }
                  (t.matrix = u),
                    (h.sx = o),
                    (h.sy = l),
                    (h.deg = s),
                    (h.dx = i = u.e),
                    (h.dy = n = u.f),
                    o == 1 && l == 1 && !s && h.bbox ? ((h.bbox.x += +i), (h.bbox.y += +n)) : (h.dirtyT = 1);
                })),
              Nt = function (t) {
                var e = t[0];
                switch (e.toLowerCase()) {
                  case "t":
                    return [e, 0, 0];
                  case "m":
                    return [e, 1, 0, 0, 1, 0, 0];
                  case "r":
                    return t.length == 4 ? [e, 0, t[2], t[3]] : [e, 0];
                  case "s":
                    return t.length == 5 ? [e, 1, 1, t[3], t[4]] : t.length == 3 ? [e, 1, 1] : [e, 1];
                }
              },
              Lt = (e._equaliseTransform = function (t, r) {
                (r = x(r).replace(/\.{3}|\u2026/g, t)),
                  (t = e.parseTransformString(t) || []),
                  (r = e.parseTransformString(r) || []);
                for (var i, n, a, s, o = w(t.length, r.length), l = [], h = [], u = 0; u < o; u++) {
                  if (
                    ((a = t[u] || Nt(r[u])),
                    (s = r[u] || Nt(a)),
                    a[0] != s[0] ||
                      (a[0].toLowerCase() == "r" && (a[2] != s[2] || a[3] != s[3])) ||
                      (a[0].toLowerCase() == "s" && (a[3] != s[3] || a[4] != s[4])))
                  )
                    return;
                  for (l[u] = [], h[u] = [], i = 0, n = w(a.length, s.length); i < n; i++)
                    i in a && (l[u][i] = a[i]), i in s && (h[u][i] = s[i]);
                }
                return { from: l, to: h };
              });
            function Pt(t, e, r, i, n, a) {
              t != null
                ? ((this.a = +t), (this.b = +e), (this.c = +r), (this.d = +i), (this.e = +n), (this.f = +a))
                : ((this.a = 1), (this.b = 0), (this.c = 0), (this.d = 1), (this.e = 0), (this.f = 0));
            }
            (e._getContainer = function (t, r, i, n) {
              var a;
              if ((a = n != null || e.is(t, "object") ? t : l.doc.getElementById(t)) != null)
                return a.tagName
                  ? r == null
                    ? {
                        container: a,
                        width: a.style.pixelWidth || a.offsetWidth,
                        height: a.style.pixelHeight || a.offsetHeight,
                      }
                    : { container: a, width: r, height: i }
                  : { container: 1, x: t, y: r, width: i, height: n };
            }),
              (e.pathToRelative = bt),
              (e._engine = {}),
              (e.path2curve = At),
              (e.matrix = function (t, e, r, i, n, a) {
                return new Pt(t, e, r, i, n, a);
              }),
              (function (t) {
                function r(t) {
                  return t[0] * t[0] + t[1] * t[1];
                }
                function i(t) {
                  var e = _.sqrt(r(t));
                  t[0] && (t[0] /= e), t[1] && (t[1] /= e);
                }
                (t.add = function (t, e, r, i, n, a) {
                  var s,
                    o,
                    l,
                    h,
                    u = [[], [], []],
                    c = [
                      [this.a, this.c, this.e],
                      [this.b, this.d, this.f],
                      [0, 0, 1],
                    ],
                    f = [
                      [t, r, n],
                      [e, i, a],
                      [0, 0, 1],
                    ];
                  for (
                    t &&
                      t instanceof Pt &&
                      (f = [
                        [t.a, t.c, t.e],
                        [t.b, t.d, t.f],
                        [0, 0, 1],
                      ]),
                      s = 0;
                    s < 3;
                    s++
                  )
                    for (o = 0; o < 3; o++) {
                      for (h = 0, l = 0; l < 3; l++) h += c[s][l] * f[l][o];
                      u[s][o] = h;
                    }
                  (this.a = u[0][0]),
                    (this.b = u[1][0]),
                    (this.c = u[0][1]),
                    (this.d = u[1][1]),
                    (this.e = u[0][2]),
                    (this.f = u[1][2]);
                }),
                  (t.invert = function () {
                    var t = this,
                      e = t.a * t.d - t.b * t.c;
                    return new Pt(
                      t.d / e,
                      -t.b / e,
                      -t.c / e,
                      t.a / e,
                      (t.c * t.f - t.d * t.e) / e,
                      (t.b * t.e - t.a * t.f) / e,
                    );
                  }),
                  (t.clone = function () {
                    return new Pt(this.a, this.b, this.c, this.d, this.e, this.f);
                  }),
                  (t.translate = function (t, e) {
                    this.add(1, 0, 0, 1, t, e);
                  }),
                  (t.scale = function (t, e, r, i) {
                    e == null && (e = t),
                      (r || i) && this.add(1, 0, 0, 1, r, i),
                      this.add(t, 0, 0, e, 0, 0),
                      (r || i) && this.add(1, 0, 0, 1, -r, -i);
                  }),
                  (t.rotate = function (t, r, i) {
                    (t = e.rad(t)), (r = r || 0), (i = i || 0);
                    var n = +_.cos(t).toFixed(9),
                      a = +_.sin(t).toFixed(9);
                    this.add(n, a, -a, n, r, i), this.add(1, 0, 0, 1, -r, -i);
                  }),
                  (t.x = function (t, e) {
                    return t * this.a + e * this.c + this.e;
                  }),
                  (t.y = function (t, e) {
                    return t * this.b + e * this.d + this.f;
                  }),
                  (t.get = function (t) {
                    return +this[x.fromCharCode(97 + t)].toFixed(4);
                  }),
                  (t.toString = function () {
                    return e.svg
                      ? "matrix(" +
                          [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() +
                          ")"
                      : [this.get(0), this.get(2), this.get(1), this.get(3), 0, 0].join();
                  }),
                  (t.toFilter = function () {
                    return (
                      "progid:DXImageTransform.Microsoft.Matrix(M11=" +
                      this.get(0) +
                      ", M12=" +
                      this.get(2) +
                      ", M21=" +
                      this.get(1) +
                      ", M22=" +
                      this.get(3) +
                      ", Dx=" +
                      this.get(4) +
                      ", Dy=" +
                      this.get(5) +
                      ", sizingmethod='auto expand')"
                    );
                  }),
                  (t.offset = function () {
                    return [this.e.toFixed(4), this.f.toFixed(4)];
                  }),
                  (t.split = function () {
                    var t = {};
                    (t.dx = this.e), (t.dy = this.f);
                    var n = [
                      [this.a, this.c],
                      [this.b, this.d],
                    ];
                    (t.scalex = _.sqrt(r(n[0]))),
                      i(n[0]),
                      (t.shear = n[0][0] * n[1][0] + n[0][1] * n[1][1]),
                      (n[1] = [n[1][0] - n[0][0] * t.shear, n[1][1] - n[0][1] * t.shear]),
                      (t.scaley = _.sqrt(r(n[1]))),
                      i(n[1]),
                      (t.shear /= t.scaley);
                    var a = -n[0][1],
                      s = n[1][1];
                    return (
                      s < 0
                        ? ((t.rotate = e.deg(_.acos(s))), a < 0 && (t.rotate = 360 - t.rotate))
                        : (t.rotate = e.deg(_.asin(a))),
                      (t.isSimple = !(+t.shear.toFixed(9) || (t.scalex.toFixed(9) != t.scaley.toFixed(9) && t.rotate))),
                      (t.isSuperSimple =
                        !+t.shear.toFixed(9) && t.scalex.toFixed(9) == t.scaley.toFixed(9) && !t.rotate),
                      (t.noRotation = !+t.shear.toFixed(9) && !t.rotate),
                      t
                    );
                  }),
                  (t.toTransformString = function (t) {
                    var e = t || this[v]();
                    return e.isSimple
                      ? ((e.scalex = +e.scalex.toFixed(4)),
                        (e.scaley = +e.scaley.toFixed(4)),
                        (e.rotate = +e.rotate.toFixed(4)),
                        (e.dx || e.dy ? "t" + [e.dx, e.dy] : d) +
                          (e.scalex != 1 || e.scaley != 1 ? "s" + [e.scalex, e.scaley, 0, 0] : d) +
                          (e.rotate ? "r" + [e.rotate, 0, 0] : d))
                      : "m" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)];
                  });
              })(Pt.prototype);
            for (
              var zt = function () {
                  this.returnValue = !1;
                },
                Ft = function () {
                  return this.originalEvent.preventDefault();
                },
                Rt = function () {
                  this.cancelBubble = !0;
                },
                jt = function () {
                  return this.originalEvent.stopPropagation();
                },
                It = function (t) {
                  var e = l.doc.documentElement.scrollTop || l.doc.body.scrollTop,
                    r = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft;
                  return { x: t.clientX + r, y: t.clientY + e };
                },
                Dt = l.doc.addEventListener
                  ? function (t, e, r, i) {
                      var n = function (t) {
                        var e = It(t);
                        return r.call(i, t, e.x, e.y);
                      };
                      if ((t.addEventListener(e, n, !1), p && m[e])) {
                        var a = function (e) {
                          for (var n = It(e), a = e, s = 0, o = e.targetTouches && e.targetTouches.length; s < o; s++)
                            if (e.targetTouches[s].target == t) {
                              ((e = e.targetTouches[s]).originalEvent = a),
                                (e.preventDefault = Ft),
                                (e.stopPropagation = jt);
                              break;
                            }
                          return r.call(i, e, n.x, n.y);
                        };
                        t.addEventListener(m[e], a, !1);
                      }
                      return function () {
                        return t.removeEventListener(e, n, !1), p && m[e] && t.removeEventListener(m[e], a, !1), !0;
                      };
                    }
                  : l.doc.attachEvent
                  ? function (t, e, r, i) {
                      var n = function (t) {
                        t = t || l.win.event;
                        var e = l.doc.documentElement.scrollTop || l.doc.body.scrollTop,
                          n = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft,
                          a = t.clientX + n,
                          s = t.clientY + e;
                        return (
                          (t.preventDefault = t.preventDefault || zt),
                          (t.stopPropagation = t.stopPropagation || Rt),
                          r.call(i, t, a, s)
                        );
                      };
                      return (
                        t.attachEvent("on" + e, n),
                        function () {
                          return t.detachEvent("on" + e, n), !0;
                        }
                      );
                    }
                  : void 0,
                qt = [],
                Ot = function (e) {
                  for (
                    var r,
                      i = e.clientX,
                      n = e.clientY,
                      a = l.doc.documentElement.scrollTop || l.doc.body.scrollTop,
                      s = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft,
                      o = qt.length;
                    o--;

                  ) {
                    if (((r = qt[o]), p && e.touches)) {
                      for (var h, u = e.touches.length; u--; )
                        if ((h = e.touches[u]).identifier == r.el._drag.id) {
                          (i = h.clientX), (n = h.clientY), (e.originalEvent ? e.originalEvent : e).preventDefault();
                          break;
                        }
                    } else e.preventDefault();
                    var c,
                      f = r.el.node,
                      d = f.nextSibling,
                      g = f.parentNode,
                      x = f.style.display;
                    l.win.opera && g.removeChild(f),
                      (f.style.display = "none"),
                      (c = r.el.paper.getElementByPoint(i, n)),
                      (f.style.display = x),
                      l.win.opera && (d ? g.insertBefore(f, d) : g.appendChild(f)),
                      c && t("raphael.drag.over." + r.el.id, r.el, c),
                      (i += s),
                      (n += a),
                      t(
                        "raphael.drag.move." + r.el.id,
                        r.move_scope || r.el,
                        i - r.el._drag.x,
                        n - r.el._drag.y,
                        i,
                        n,
                        e,
                      );
                  }
                },
                Vt = function (r) {
                  e.unmousemove(Ot).unmouseup(Vt);
                  for (var i, n = qt.length; n--; )
                    ((i = qt[n]).el._drag = {}),
                      t("raphael.drag.end." + i.el.id, i.end_scope || i.start_scope || i.move_scope || i.el, r);
                  qt = [];
                },
                Yt = (e.el = {}),
                Wt = y.length;
              Wt--;

            )
              !(function (t) {
                (e[t] = Yt[t] =
                  function (r, i) {
                    return (
                      e.is(r, "function") &&
                        ((this.events = this.events || []),
                        this.events.push({
                          name: t,
                          f: r,
                          unbind: Dt(this.shape || this.node || l.doc, t, r, i || this),
                        })),
                      this
                    );
                  }),
                  (e["un" + t] = Yt["un" + t] =
                    function (r) {
                      for (var i = this.events || [], n = i.length; n--; )
                        i[n].name != t ||
                          (!e.is(r, "undefined") && i[n].f != r) ||
                          (i[n].unbind(), i.splice(n, 1), !i.length && delete this.events);
                      return this;
                    });
              })(y[Wt]);
            (Yt.data = function (r, i) {
              var n = (G[this.id] = G[this.id] || {});
              if (arguments.length == 0) return n;
              if (arguments.length == 1) {
                if (e.is(r, "object")) {
                  for (var a in r) r[o](a) && this.data(a, r[a]);
                  return this;
                }
                return t("raphael.data.get." + this.id, this, n[r], r), n[r];
              }
              return (n[r] = i), t("raphael.data.set." + this.id, this, i, r), this;
            }),
              (Yt.removeData = function (t) {
                return t == null ? (G[this.id] = {}) : G[this.id] && delete G[this.id][t], this;
              }),
              (Yt.getData = function () {
                return tt(G[this.id] || {});
              }),
              (Yt.hover = function (t, e, r, i) {
                return this.mouseover(t, r).mouseout(e, i || r);
              }),
              (Yt.unhover = function (t, e) {
                return this.unmouseover(t).unmouseout(e);
              });
            var Gt = [];
            (Yt.drag = function (r, i, n, a, s, o) {
              function h(h) {
                (h.originalEvent || h).preventDefault();
                var u = h.clientX,
                  c = h.clientY,
                  f = l.doc.documentElement.scrollTop || l.doc.body.scrollTop,
                  d = l.doc.documentElement.scrollLeft || l.doc.body.scrollLeft;
                if (((this._drag.id = h.identifier), p && h.touches))
                  for (var g, x = h.touches.length; x--; )
                    if (((g = h.touches[x]), (this._drag.id = g.identifier), g.identifier == this._drag.id)) {
                      (u = g.clientX), (c = g.clientY);
                      break;
                    }
                (this._drag.x = u + d),
                  (this._drag.y = c + f),
                  !qt.length && e.mousemove(Ot).mouseup(Vt),
                  qt.push({
                    el: this,
                    move_scope: a,
                    start_scope: s,
                    end_scope: o,
                  }),
                  i && t.on("raphael.drag.start." + this.id, i),
                  r && t.on("raphael.drag.move." + this.id, r),
                  n && t.on("raphael.drag.end." + this.id, n),
                  t("raphael.drag.start." + this.id, s || a || this, h.clientX + d, h.clientY + f, h);
              }
              return (this._drag = {}), Gt.push({ el: this, start: h }), this.mousedown(h), this;
            }),
              (Yt.onDragOver = function (e) {
                e ? t.on("raphael.drag.over." + this.id, e) : t.unbind("raphael.drag.over." + this.id);
              }),
              (Yt.undrag = function () {
                for (var r = Gt.length; r--; )
                  Gt[r].el == this &&
                    (this.unmousedown(Gt[r].start), Gt.splice(r, 1), t.unbind("raphael.drag.*." + this.id));
                !Gt.length && e.unmousemove(Ot).unmouseup(Vt), (qt = []);
              }),
              (i.circle = function (t, r, i) {
                var n = e._engine.circle(this, t || 0, r || 0, i || 0);
                return this.__set__ && this.__set__.push(n), n;
              }),
              (i.rect = function (t, r, i, n, a) {
                var s = e._engine.rect(this, t || 0, r || 0, i || 0, n || 0, a || 0);
                return this.__set__ && this.__set__.push(s), s;
              }),
              (i.ellipse = function (t, r, i, n) {
                var a = e._engine.ellipse(this, t || 0, r || 0, i || 0, n || 0);
                return this.__set__ && this.__set__.push(a), a;
              }),
              (i.path = function (t) {
                t && !e.is(t, "string") && !e.is(t[0], T) && (t += d);
                var r = e._engine.path(e.format[c](e, arguments), this);
                return this.__set__ && this.__set__.push(r), r;
              }),
              (i.image = function (t, r, i, n, a) {
                var s = e._engine.image(this, t || "about:blank", r || 0, i || 0, n || 0, a || 0);
                return this.__set__ && this.__set__.push(s), s;
              }),
              (i.text = function (t, r, i) {
                var n = e._engine.text(this, t || 0, r || 0, x(i));
                return this.__set__ && this.__set__.push(n), n;
              }),
              (i.set = function (t) {
                !e.is(t, "array") && (t = Array.prototype.splice.call(arguments, 0, arguments.length));
                var r = new he(t);
                return this.__set__ && this.__set__.push(r), (r.paper = this), (r.type = "set"), r;
              }),
              (i.setStart = function (t) {
                this.__set__ = t || this.set();
              }),
              (i.setFinish = function (t) {
                var e = this.__set__;
                return delete this.__set__, e;
              }),
              (i.getSize = function () {
                var t = this.canvas.parentNode;
                return { width: t.offsetWidth, height: t.offsetHeight };
              }),
              (i.setSize = function (t, r) {
                return e._engine.setSize.call(this, t, r);
              }),
              (i.setViewBox = function (t, r, i, n, a) {
                return e._engine.setViewBox.call(this, t, r, i, n, a);
              }),
              (i.top = i.bottom = null),
              (i.raphael = e);
            function Ht() {
              return this.x + g + this.y + g + this.width + " × " + this.height;
            }
            (i.getElementByPoint = function (t, e) {
              var r,
                i,
                n,
                a,
                s,
                o,
                h,
                u = this.canvas,
                c = l.doc.elementFromPoint(t, e);
              if (l.win.opera && c.tagName == "svg") {
                var f =
                    ((i = (r = u).getBoundingClientRect()),
                    (n = r.ownerDocument),
                    (a = n.body),
                    (s = n.documentElement),
                    (o = s.clientTop || a.clientTop || 0),
                    (h = s.clientLeft || a.clientLeft || 0),
                    {
                      y: i.top + (l.win.pageYOffset || s.scrollTop || a.scrollTop) - o,
                      x: i.left + (l.win.pageXOffset || s.scrollLeft || a.scrollLeft) - h,
                    }),
                  p = u.createSVGRect();
                (p.x = t - f.x), (p.y = e - f.y), (p.width = p.height = 1);
                var d = u.getIntersectionList(p, null);
                d.length && (c = d[d.length - 1]);
              }
              if (!c) return null;
              for (; c.parentNode && c != u.parentNode && !c.raphael; ) c = c.parentNode;
              return c == this.canvas.parentNode && (c = u), (c = c && c.raphael ? this.getById(c.raphaelid) : null);
            }),
              (i.getElementsByBBox = function (t) {
                var r = this.set();
                return (
                  this.forEach(function (i) {
                    e.isBBoxIntersect(i.getBBox(), t) && r.push(i);
                  }),
                  r
                );
              }),
              (i.getById = function (t) {
                for (var e = this.bottom; e; ) {
                  if (e.id == t) return e;
                  e = e.next;
                }
                return null;
              }),
              (i.forEach = function (t, e) {
                for (var r = this.bottom; r; ) {
                  if (!1 === t.call(e, r)) return this;
                  r = r.next;
                }
                return this;
              }),
              (i.getElementsByPoint = function (t, e) {
                var r = this.set();
                return (
                  this.forEach(function (i) {
                    i.isPointInside(t, e) && r.push(i);
                  }),
                  r
                );
              }),
              (Yt.isPointInside = function (t, r) {
                var i = (this.realPath = Z[this.type](this));
                return (
                  this.attr("transform") &&
                    this.attr("transform").length &&
                    (i = e.transformPath(i, this.attr("transform"))),
                  e.isPointInsidePath(i, t, r)
                );
              }),
              (Yt.getBBox = function (t) {
                if (this.removed) return {};
                var e = this._;
                return t
                  ? ((!e.dirty && e.bboxwt) ||
                      ((this.realPath = Z[this.type](this)),
                      (e.bboxwt = yt(this.realPath)),
                      (e.bboxwt.toString = Ht),
                      (e.dirty = 0)),
                    e.bboxwt)
                  : ((e.dirty || e.dirtyT || !e.bbox) &&
                      ((!e.dirty && this.realPath) || ((e.bboxwt = 0), (this.realPath = Z[this.type](this))),
                      (e.bbox = yt(Q(this.realPath, this.matrix))),
                      (e.bbox.toString = Ht),
                      (e.dirty = e.dirtyT = 0)),
                    e.bbox);
              }),
              (Yt.clone = function () {
                if (this.removed) return null;
                var t = this.paper[this.type]().attr(this.attr());
                return this.__set__ && this.__set__.push(t), t;
              }),
              (Yt.glow = function (t) {
                if (this.type == "text") return null;
                var e = {
                    width: ((t = t || {}).width || 10) + (+this.attr("stroke-width") || 1),
                    fill: t.fill || !1,
                    opacity: t.opacity == null ? 0.5 : t.opacity,
                    offsetx: t.offsetx || 0,
                    offsety: t.offsety || 0,
                    color: t.color || "#000",
                  },
                  r = e.width / 2,
                  i = this.paper,
                  n = i.set(),
                  a = this.realPath || Z[this.type](this);
                a = this.matrix ? Q(a, this.matrix) : a;
                for (var s = 1; s < r + 1; s++)
                  n.push(
                    i.path(a).attr({
                      stroke: e.color,
                      fill: e.fill ? e.color : "none",
                      "stroke-linejoin": "round",
                      "stroke-linecap": "round",
                      "stroke-width": +((e.width / r) * s).toFixed(3),
                      opacity: +(e.opacity / r).toFixed(3),
                    }),
                  );
                return n.insertBefore(this).translate(e.offsetx, e.offsety);
              });
            var Xt = function (t, r, i, n, a, s, o, l, h) {
                return h == null
                  ? dt(t, r, i, n, a, s, o, l)
                  : e.findDotsAtSegment(
                      t,
                      r,
                      i,
                      n,
                      a,
                      s,
                      o,
                      l,
                      (function (t, e, r, i, n, a, s, o, l) {
                        if (!(l < 0 || dt(t, e, r, i, n, a, s, o) < l)) {
                          var h,
                            u = 0.5,
                            c = 1 - u;
                          for (h = dt(t, e, r, i, n, a, s, o, c); B(h - l) > 0.01; )
                            (u /= 2), (h = dt(t, e, r, i, n, a, s, o, (c += (h < l ? 1 : -1) * u)));
                          return c;
                        }
                      })(t, r, i, n, a, s, o, l, h),
                    );
              },
              Ut = function (t, r) {
                return function (i, n, a) {
                  for (var s, o, l, h, u, c = "", f = {}, p = 0, d = 0, g = (i = At(i)).length; d < g; d++) {
                    if ((l = i[d])[0] == "M") (s = +l[1]), (o = +l[2]);
                    else {
                      if (p + (h = Xt(s, o, l[1], l[2], l[3], l[4], l[5], l[6])) > n) {
                        if (r && !f.start) {
                          if (
                            ((c += [
                              "C" + (u = Xt(s, o, l[1], l[2], l[3], l[4], l[5], l[6], n - p)).start.x,
                              u.start.y,
                              u.m.x,
                              u.m.y,
                              u.x,
                              u.y,
                            ]),
                            a)
                          )
                            return c;
                          (f.start = c),
                            (c = ["M" + u.x, u.y + "C" + u.n.x, u.n.y, u.end.x, u.end.y, l[5], l[6]].join()),
                            (p += h),
                            (s = +l[5]),
                            (o = +l[6]);
                          continue;
                        }
                        if (!t && !r)
                          return {
                            x: (u = Xt(s, o, l[1], l[2], l[3], l[4], l[5], l[6], n - p)).x,
                            y: u.y,
                            alpha: u.alpha,
                          };
                      }
                      (p += h), (s = +l[5]), (o = +l[6]);
                    }
                    c += l.shift() + l;
                  }
                  return (
                    (f.end = c),
                    (u = t ? p : r ? f : e.findDotsAtSegment(s, o, l[0], l[1], l[2], l[3], l[4], l[5], 1)).alpha &&
                      (u = { x: u.x, y: u.y, alpha: u.alpha }),
                    u
                  );
                };
              },
              $t = Ut(1),
              Zt = Ut(),
              Qt = Ut(0, 1);
            (e.getTotalLength = $t),
              (e.getPointAtLength = Zt),
              (e.getSubpath = function (t, e, r) {
                if (this.getTotalLength(t) - r < 1e-6) return Qt(t, e).end;
                var i = Qt(t, r, 1);
                return e ? Qt(i, e).end : i;
              }),
              (Yt.getTotalLength = function () {
                var t = this.getPath();
                if (t) return this.node.getTotalLength ? this.node.getTotalLength() : $t(t);
              }),
              (Yt.getPointAtLength = function (t) {
                var e = this.getPath();
                if (e) return Zt(e, t);
              }),
              (Yt.getPath = function () {
                var t,
                  r = e._getPath[this.type];
                if (this.type != "text" && this.type != "set") return r && (t = r(this)), t;
              }),
              (Yt.getSubpath = function (t, r) {
                var i = this.getPath();
                if (i) return e.getSubpath(i, t, r);
              });
            var Jt = (e.easing_formulas = {
              linear: function (t) {
                return t;
              },
              "<": function (t) {
                return C(t, 1.7);
              },
              ">": function (t) {
                return C(t, 0.48);
              },
              "<>": function (t) {
                var e = 0.48 - t / 1.04,
                  r = _.sqrt(0.1734 + e * e),
                  i = r - e,
                  n = -r - e,
                  a = C(B(i), 1 / 3) * (i < 0 ? -1 : 1) + C(B(n), 1 / 3) * (n < 0 ? -1 : 1) + 0.5;
                return 3 * (1 - a) * a * a + a * a * a;
              },
              backIn: function (t) {
                var e = 1.70158;
                return t * t * ((e + 1) * t - e);
              },
              backOut: function (t) {
                var e = 1.70158;
                return (t -= 1) * t * ((e + 1) * t + e) + 1;
              },
              elastic: function (t) {
                return t == !!t ? t : C(2, -10 * t) * _.sin((2 * S * (t - 0.075)) / 0.3) + 1;
              },
              bounce: function (t) {
                var e = 7.5625,
                  r = 2.75;
                return t < 1 / r
                  ? e * t * t
                  : t < 2 / r
                  ? e * (t -= 1.5 / r) * t + 0.75
                  : t < 2.5 / r
                  ? e * (t -= 2.25 / r) * t + 0.9375
                  : e * (t -= 2.625 / r) * t + 0.984375;
              },
            });
            (Jt.easeIn = Jt["ease-in"] = Jt["<"]),
              (Jt.easeOut = Jt["ease-out"] = Jt[">"]),
              (Jt.easeInOut = Jt["ease-in-out"] = Jt["<>"]),
              (Jt["back-in"] = Jt.backIn),
              (Jt["back-out"] = Jt.backOut);
            var Kt = [],
              te =
                window.requestAnimationFrame ||
                window.webkitRequestAnimationFrame ||
                window.mozRequestAnimationFrame ||
                window.oRequestAnimationFrame ||
                window.msRequestAnimationFrame ||
                function (t) {
                  setTimeout(t, 16);
                },
              ee = function () {
                for (var r = +new Date(), i = 0; i < Kt.length; i++) {
                  var n = Kt[i];
                  if (!n.el.removed && !n.paused) {
                    var a,
                      s,
                      l = r - n.start,
                      h = n.ms,
                      u = n.easing,
                      c = n.from,
                      p = n.diff,
                      d = n.to,
                      x = (n.t, n.el),
                      v = {},
                      y = {};
                    if (
                      (n.initstatus
                        ? ((l = ((n.initstatus * n.anim.top - n.prev) / (n.percent - n.prev)) * h),
                          (n.status = n.initstatus),
                          delete n.initstatus,
                          n.stop && Kt.splice(i--, 1))
                        : (n.status = (n.prev + (n.percent - n.prev) * (l / h)) / n.anim.top),
                      !(l < 0))
                    )
                      if (l < h) {
                        var m = u(l / h);
                        for (var b in c)
                          if (c[o](b)) {
                            switch (I[b]) {
                              case A:
                                a = +c[b] + m * h * p[b];
                                break;
                              case "colour":
                                a =
                                  "rgb(" +
                                  [
                                    re(P(c[b].r + m * h * p[b].r)),
                                    re(P(c[b].g + m * h * p[b].g)),
                                    re(P(c[b].b + m * h * p[b].b)),
                                  ].join(",") +
                                  ")";
                                break;
                              case "path":
                                a = [];
                                for (var _ = 0, w = c[b].length; _ < w; _++) {
                                  a[_] = [c[b][_][0]];
                                  for (var k = 1, B = c[b][_].length; k < B; k++)
                                    a[_][k] = +c[b][_][k] + m * h * p[b][_][k];
                                  a[_] = a[_].join(g);
                                }
                                a = a.join(g);
                                break;
                              case "transform":
                                if (p[b].real)
                                  for (a = [], _ = 0, w = c[b].length; _ < w; _++)
                                    for (a[_] = [c[b][_][0]], k = 1, B = c[b][_].length; k < B; k++)
                                      a[_][k] = c[b][_][k] + m * h * p[b][_][k];
                                else {
                                  var C = function (t) {
                                    return +c[b][t] + m * h * p[b][t];
                                  };
                                  a = [["m", C(0), C(1), C(2), C(3), C(4), C(5)]];
                                }
                                break;
                              case "csv":
                                if (b == "clip-rect") for (a = [], _ = 4; _--; ) a[_] = +c[b][_] + m * h * p[b][_];
                                break;
                              default:
                                var S = [][f](c[b]);
                                for (a = [], _ = x.paper.customAttributes[b].length; _--; )
                                  a[_] = +S[_] + m * h * p[b][_];
                            }
                            v[b] = a;
                          }
                        x.attr(v),
                          (function (e, r, i) {
                            setTimeout(function () {
                              t("raphael.anim.frame." + e, r, i);
                            });
                          })(x.id, x, n.anim);
                      } else {
                        if (
                          ((function (r, i, n) {
                            setTimeout(function () {
                              t("raphael.anim.frame." + i.id, i, n),
                                t("raphael.anim.finish." + i.id, i, n),
                                e.is(r, "function") && r.call(i);
                            });
                          })(n.callback, x, n.anim),
                          x.attr(d),
                          Kt.splice(i--, 1),
                          n.repeat > 1 && !n.next)
                        ) {
                          for (s in d) d[o](s) && (y[s] = n.totalOrigin[s]);
                          n.el.attr(y), ae(n.anim, n.el, n.anim.percents[0], null, n.totalOrigin, n.repeat - 1);
                        }
                        n.next && !n.stop && ae(n.anim, n.el, n.next, null, n.totalOrigin, n.repeat);
                      }
                  }
                }
                Kt.length && te(ee);
              },
              re = function (t) {
                return t > 255 ? 255 : t < 0 ? 0 : t;
              };
            function ie(t, e, r, i, n, a) {
              var s = 3 * e,
                o = 3 * (i - e) - s,
                l = 1 - s - o,
                h = 3 * r,
                u = 3 * (n - r) - h,
                c = 1 - h - u;
              function f(t) {
                return ((l * t + o) * t + s) * t;
              }
              return (function (t, e) {
                var r = (function (t, e) {
                  var r, i, n, a, h, u;
                  for (n = t, u = 0; u < 8; u++) {
                    if (((a = f(n) - t), B(a) < e)) return n;
                    if (B((h = (3 * l * n + 2 * o) * n + s)) < 1e-6) break;
                    n -= a / h;
                  }
                  if (((i = 1), (n = t) < (r = 0))) return r;
                  if (n > i) return i;
                  for (; r < i; ) {
                    if (((a = f(n)), B(a - t) < e)) return n;
                    t > a ? (r = n) : (i = n), (n = (i - r) / 2 + r);
                  }
                  return n;
                })(t, e);
                return ((c * r + u) * r + h) * r;
              })(t, 1 / (200 * a));
            }
            function ne(t, e) {
              var r = [],
                i = {};
              if (((this.ms = e), (this.times = 1), t)) {
                for (var n in t) t[o](n) && ((i[z(n)] = t[n]), r.push(z(n)));
                r.sort(H);
              }
              (this.anim = i), (this.top = r[r.length - 1]), (this.percents = r);
            }
            function ae(r, i, a, s, l, h) {
              a = z(a);
              var u,
                c,
                p,
                d,
                g,
                y,
                m = r.ms,
                b = {},
                _ = {},
                w = {};
              if (s)
                for (B = 0, C = Kt.length; B < C; B++) {
                  var k = Kt[B];
                  if (k.el.id == i.id && k.anim == r) {
                    k.percent != a ? (Kt.splice(B, 1), (p = 1)) : (c = k), i.attr(k.totalOrigin);
                    break;
                  }
                }
              else s = +_;
              for (var B = 0, C = r.percents.length; B < C; B++) {
                if (r.percents[B] == a || r.percents[B] > s * r.top) {
                  (a = r.percents[B]),
                    (g = r.percents[B - 1] || 0),
                    (m = (m / r.top) * (a - g)),
                    (d = r.percents[B + 1]),
                    (u = r.anim[a]);
                  break;
                }
                s && i.attr(r.anim[r.percents[B]]);
              }
              if (u) {
                if (c) (c.initstatus = s), (c.start = new Date() - c.ms * s);
                else {
                  for (var S in u)
                    if (u[o](S) && (I[o](S) || i.paper.customAttributes[o](S)))
                      switch (((b[S] = i.attr(S)), b[S] == null && (b[S] = j[S]), (_[S] = u[S]), I[S])) {
                        case A:
                          w[S] = (_[S] - b[S]) / m;
                          break;
                        case "colour":
                          b[S] = e.getRGB(b[S]);
                          var T = e.getRGB(_[S]);
                          w[S] = {
                            r: (T.r - b[S].r) / m,
                            g: (T.g - b[S].g) / m,
                            b: (T.b - b[S].b) / m,
                          };
                          break;
                        case "path":
                          var M = At(b[S], _[S]),
                            E = M[1];
                          for (b[S] = M[0], w[S] = [], B = 0, C = b[S].length; B < C; B++) {
                            w[S][B] = [0];
                            for (var N = 1, P = b[S][B].length; N < P; N++) w[S][B][N] = (E[B][N] - b[S][B][N]) / m;
                          }
                          break;
                        case "transform":
                          var F = i._,
                            R = Lt(F[S], _[S]);
                          if (R)
                            for (
                              b[S] = R.from, _[S] = R.to, w[S] = [], w[S].real = !0, B = 0, C = b[S].length;
                              B < C;
                              B++
                            )
                              for (w[S][B] = [b[S][B][0]], N = 1, P = b[S][B].length; N < P; N++)
                                w[S][B][N] = (_[S][B][N] - b[S][B][N]) / m;
                          else {
                            var D = i.matrix || new Pt(),
                              q = {
                                _: { transform: F.transform },
                                getBBox: function () {
                                  return i.getBBox(1);
                                },
                              };
                            (b[S] = [D.a, D.b, D.c, D.d, D.e, D.f]),
                              Et(q, _[S]),
                              (_[S] = q._.transform),
                              (w[S] = [
                                (q.matrix.a - D.a) / m,
                                (q.matrix.b - D.b) / m,
                                (q.matrix.c - D.c) / m,
                                (q.matrix.d - D.d) / m,
                                (q.matrix.e - D.e) / m,
                                (q.matrix.f - D.f) / m,
                              ]);
                          }
                          break;
                        case "csv":
                          var O = x(u[S])[v](n),
                            V = x(b[S])[v](n);
                          if (S == "clip-rect")
                            for (b[S] = V, w[S] = [], B = V.length; B--; ) w[S][B] = (O[B] - b[S][B]) / m;
                          _[S] = O;
                          break;
                        default:
                          for (
                            O = [][f](u[S]), V = [][f](b[S]), w[S] = [], B = i.paper.customAttributes[S].length;
                            B--;

                          )
                            w[S][B] = ((O[B] || 0) - (V[B] || 0)) / m;
                      }
                  var Y = u.easing,
                    W = e.easing_formulas[Y];
                  if (!W)
                    if ((W = x(Y).match(L)) && W.length == 5) {
                      var G = W;
                      W = function (t) {
                        return ie(t, +G[1], +G[2], +G[3], +G[4], m);
                      };
                    } else W = X;
                  if (
                    ((k = {
                      anim: r,
                      percent: a,
                      timestamp: (y = u.start || r.start || +new Date()),
                      start: y + (r.del || 0),
                      status: 0,
                      initstatus: s || 0,
                      stop: !1,
                      ms: m,
                      easing: W,
                      from: b,
                      diff: w,
                      to: _,
                      el: i,
                      callback: u.callback,
                      prev: g,
                      next: d,
                      repeat: h || r.times,
                      origin: i.attr(),
                      totalOrigin: l,
                    }),
                    Kt.push(k),
                    s && !c && !p && ((k.stop = !0), (k.start = new Date() - m * s), Kt.length == 1))
                  )
                    return ee();
                  p && (k.start = new Date() - k.ms * s), Kt.length == 1 && te(ee);
                }
                t("raphael.anim.start." + i.id, i, r);
              }
            }
            function se(t) {
              for (var e = 0; e < Kt.length; e++) Kt[e].el.paper == t && Kt.splice(e--, 1);
            }
            (Yt.animateWith = function (t, r, i, n, a, s) {
              if (this.removed) return s && s.call(this), this;
              var o = i instanceof ne ? i : e.animation(i, n, a, s);
              ae(o, this, o.percents[0], null, this.attr());
              for (var l = 0, h = Kt.length; l < h; l++)
                if (Kt[l].anim == r && Kt[l].el == t) {
                  Kt[h - 1].start = Kt[l].start;
                  break;
                }
              return this;
            }),
              (Yt.onAnimation = function (e) {
                return e ? t.on("raphael.anim.frame." + this.id, e) : t.unbind("raphael.anim.frame." + this.id), this;
              }),
              (ne.prototype.delay = function (t) {
                var e = new ne(this.anim, this.ms);
                return (e.times = this.times), (e.del = +t || 0), e;
              }),
              (ne.prototype.repeat = function (t) {
                var e = new ne(this.anim, this.ms);
                return (e.del = this.del), (e.times = _.floor(w(t, 0)) || 1), e;
              }),
              (e.animation = function (t, r, i, n) {
                if (t instanceof ne) return t;
                (!e.is(i, "function") && i) || ((n = n || i || null), (i = null)), (t = Object(t)), (r = +r || 0);
                var a,
                  s,
                  l = {};
                for (s in t) t[o](s) && z(s) != s && z(s) + "%" != s && ((a = !0), (l[s] = t[s]));
                if (a) return i && (l.easing = i), n && (l.callback = n), new ne({ 100: l }, r);
                if (n) {
                  var h = 0;
                  for (var u in t) {
                    var c = F(u);
                    t[o](u) && c > h && (h = c);
                  }
                  !t[(h += "%")].callback && (t[h].callback = n);
                }
                return new ne(t, r);
              }),
              (Yt.animate = function (t, r, i, n) {
                if (this.removed) return n && n.call(this), this;
                var a = t instanceof ne ? t : e.animation(t, r, i, n);
                return ae(a, this, a.percents[0], null, this.attr()), this;
              }),
              (Yt.setTime = function (t, e) {
                return t && e != null && this.status(t, k(e, t.ms) / t.ms), this;
              }),
              (Yt.status = function (t, e) {
                var r,
                  i,
                  n = [],
                  a = 0;
                if (e != null) return ae(t, this, -1, k(e, 1)), this;
                for (r = Kt.length; a < r; a++)
                  if ((i = Kt[a]).el.id == this.id && (!t || i.anim == t)) {
                    if (t) return i.status;
                    n.push({ anim: i.anim, status: i.status });
                  }
                return t ? 0 : n;
              }),
              (Yt.pause = function (e) {
                for (var r = 0; r < Kt.length; r++)
                  Kt[r].el.id != this.id ||
                    (e && Kt[r].anim != e) ||
                    (!1 !== t("raphael.anim.pause." + this.id, this, Kt[r].anim) && (Kt[r].paused = !0));
                return this;
              }),
              (Yt.resume = function (e) {
                for (var r = 0; r < Kt.length; r++)
                  if (Kt[r].el.id == this.id && (!e || Kt[r].anim == e)) {
                    var i = Kt[r];
                    !1 !== t("raphael.anim.resume." + this.id, this, i.anim) &&
                      (delete i.paused, this.status(i.anim, i.status));
                  }
                return this;
              }),
              (Yt.stop = function (e) {
                for (var r = 0; r < Kt.length; r++)
                  Kt[r].el.id != this.id ||
                    (e && Kt[r].anim != e) ||
                    (!1 !== t("raphael.anim.stop." + this.id, this, Kt[r].anim) && Kt.splice(r--, 1));
                return this;
              }),
              t.on("raphael.remove", se),
              t.on("raphael.clear", se),
              (Yt.toString = function () {
                return "Raphaël’s object";
              });
            var oe,
              le,
              he = function (t) {
                if (((this.items = []), (this.length = 0), (this.type = "set"), t))
                  for (var e = 0, r = t.length; e < r; e++)
                    !t[e] ||
                      (t[e].constructor != Yt.constructor && t[e].constructor != he) ||
                      ((this[this.items.length] = this.items[this.items.length] = t[e]), this.length++);
              },
              ue = he.prototype;
            for (var ce in ((ue.push = function () {
              for (var t, e, r = 0, i = arguments.length; r < i; r++)
                !(t = arguments[r]) ||
                  (t.constructor != Yt.constructor && t.constructor != he) ||
                  ((this[(e = this.items.length)] = this.items[e] = t), this.length++);
              return this;
            }),
            (ue.pop = function () {
              return this.length && delete this[this.length--], this.items.pop();
            }),
            (ue.forEach = function (t, e) {
              for (var r = 0, i = this.items.length; r < i; r++) if (!1 === t.call(e, this.items[r], r)) return this;
              return this;
            }),
            Yt))
              Yt[o](ce) &&
                (ue[ce] = (function (t) {
                  return function () {
                    var e = arguments;
                    return this.forEach(function (r) {
                      r[t][c](r, e);
                    });
                  };
                })(ce));
            return (
              (ue.attr = function (t, r) {
                if (t && e.is(t, T) && e.is(t[0], "object"))
                  for (var i = 0, n = t.length; i < n; i++) this.items[i].attr(t[i]);
                else for (var a = 0, s = this.items.length; a < s; a++) this.items[a].attr(t, r);
                return this;
              }),
              (ue.clear = function () {
                for (; this.length; ) this.pop();
              }),
              (ue.splice = function (t, e, r) {
                (t = t < 0 ? w(this.length + t, 0) : t), (e = w(0, k(this.length - t, e)));
                var i,
                  n = [],
                  a = [],
                  s = [];
                for (i = 2; i < arguments.length; i++) s.push(arguments[i]);
                for (i = 0; i < e; i++) a.push(this[t + i]);
                for (; i < this.length - t; i++) n.push(this[t + i]);
                var o = s.length;
                for (i = 0; i < o + n.length; i++) this.items[t + i] = this[t + i] = i < o ? s[i] : n[i - o];
                for (i = this.items.length = this.length -= e - o; this[i]; ) delete this[i++];
                return new he(a);
              }),
              (ue.exclude = function (t) {
                for (var e = 0, r = this.length; e < r; e++) if (this[e] == t) return this.splice(e, 1), !0;
              }),
              (ue.animate = function (t, r, i, n) {
                (e.is(i, "function") || !i) && (n = i || null);
                var a,
                  s,
                  o = this.items.length,
                  l = o,
                  h = this;
                if (!o) return this;
                n &&
                  (s = function () {
                    !--o && n.call(h);
                  }),
                  (i = e.is(i, "string") ? i : s);
                var u = e.animation(t, r, i, s);
                for (a = this.items[--l].animate(u); l--; )
                  this.items[l] && !this.items[l].removed && this.items[l].animateWith(a, u, u),
                    (this.items[l] && !this.items[l].removed) || o--;
                return this;
              }),
              (ue.insertAfter = function (t) {
                for (var e = this.items.length; e--; ) this.items[e].insertAfter(t);
                return this;
              }),
              (ue.getBBox = function () {
                for (var t = [], e = [], r = [], i = [], n = this.items.length; n--; )
                  if (!this.items[n].removed) {
                    var a = this.items[n].getBBox();
                    t.push(a.x), e.push(a.y), r.push(a.x + a.width), i.push(a.y + a.height);
                  }
                return {
                  x: (t = k[c](0, t)),
                  y: (e = k[c](0, e)),
                  x2: (r = w[c](0, r)),
                  y2: (i = w[c](0, i)),
                  width: r - t,
                  height: i - e,
                };
              }),
              (ue.clone = function (t) {
                t = this.paper.set();
                for (var e = 0, r = this.items.length; e < r; e++) t.push(this.items[e].clone());
                return t;
              }),
              (ue.toString = function () {
                return "Raphaël‘s set";
              }),
              (ue.glow = function (t) {
                var e = this.paper.set();
                return (
                  this.forEach(function (r, i) {
                    var n = r.glow(t);
                    n != null &&
                      n.forEach(function (t, r) {
                        e.push(t);
                      });
                  }),
                  e
                );
              }),
              (ue.isPointInside = function (t, e) {
                var r = !1;
                return (
                  this.forEach(function (i) {
                    if (i.isPointInside(t, e)) return (r = !0), !1;
                  }),
                  r
                );
              }),
              (e.registerFont = function (t) {
                if (!t.face) return t;
                this.fonts = this.fonts || {};
                var e = { w: t.w, face: {}, glyphs: {} },
                  r = t.face["font-family"];
                for (var i in t.face) t.face[o](i) && (e.face[i] = t.face[i]);
                if ((this.fonts[r] ? this.fonts[r].push(e) : (this.fonts[r] = [e]), !t.svg))
                  for (var n in ((e.face["units-per-em"] = F(t.face["units-per-em"], 10)), t.glyphs))
                    if (t.glyphs[o](n)) {
                      var a = t.glyphs[n];
                      if (
                        ((e.glyphs[n] = {
                          w: a.w,
                          k: {},
                          d:
                            a.d &&
                            "M" +
                              a.d.replace(/[mlcxtrv]/g, function (t) {
                                return (
                                  {
                                    l: "L",
                                    c: "C",
                                    x: "z",
                                    t: "m",
                                    r: "l",
                                    v: "c",
                                  }[t] || "M"
                                );
                              }) +
                              "z",
                        }),
                        a.k)
                      )
                        for (var s in a.k) a[o](s) && (e.glyphs[n].k[s] = a.k[s]);
                    }
                return t;
              }),
              (i.getFont = function (t, r, i, n) {
                if (
                  ((n = n || "normal"),
                  (i = i || "normal"),
                  (r = +r || { normal: 400, bold: 700, lighter: 300, bolder: 800 }[r] || 400),
                  e.fonts)
                ) {
                  var a,
                    s = e.fonts[t];
                  if (!s) {
                    var l = new RegExp("(^|\\s)" + t.replace(/[^\w\d\s+!~.:_-]/g, d) + "(\\s|$)", "i");
                    for (var h in e.fonts)
                      if (e.fonts[o](h) && l.test(h)) {
                        s = e.fonts[h];
                        break;
                      }
                  }
                  if (s)
                    for (
                      var u = 0, c = s.length;
                      u < c &&
                      ((a = s[u]).face["font-weight"] != r ||
                        (a.face["font-style"] != i && a.face["font-style"]) ||
                        a.face["font-stretch"] != n);
                      u++
                    );
                  return a;
                }
              }),
              (i.print = function (t, r, i, a, s, o, l, h) {
                (o = o || "middle"), (l = w(k(l || 0, 1), -1)), (h = w(k(h || 1, 3), 1));
                var u,
                  c = x(i)[v](d),
                  f = 0,
                  p = 0,
                  g = d;
                if ((e.is(a, "string") && (a = this.getFont(a)), a)) {
                  u = (s || 16) / a.face["units-per-em"];
                  for (
                    var y = a.face.bbox[v](n),
                      m = +y[0],
                      b = y[3] - y[1],
                      _ = 0,
                      B = +y[1] + (o == "baseline" ? b + +a.face.descent : b / 2),
                      C = 0,
                      S = c.length;
                    C < S;
                    C++
                  ) {
                    if (c[C] == "\n") (f = 0), (T = 0), (p = 0), (_ += b * h);
                    else {
                      var A = (p && a.glyphs[c[C - 1]]) || {},
                        T = a.glyphs[c[C]];
                      (f += p ? (A.w || a.w) + ((A.k && A.k[c[C]]) || 0) + a.w * l : 0), (p = 1);
                    }
                    T &&
                      T.d &&
                      (g += e.transformPath(T.d, ["t", f * u, _ * u, "s", u, u, m, B, "t", (t - m) / u, (r - B) / u]));
                  }
                }
                return this.path(g).attr({ fill: "#000", stroke: "none" });
              }),
              (i.add = function (t) {
                if (e.is(t, "array"))
                  for (var r, i = this.set(), n = 0, s = t.length; n < s; n++)
                    (r = t[n] || {}), a[o](r.type) && i.push(this[r.type]().attr(r));
                return i;
              }),
              (e.format = function (t, r) {
                var i = e.is(r, T) ? [0][f](r) : arguments;
                return (
                  t &&
                    e.is(t, "string") &&
                    i.length - 1 &&
                    (t = t.replace(s, function (t, e) {
                      return i[++e] == null ? d : i[e];
                    })),
                  t || d
                );
              }),
              (e.fullfill =
                ((oe = /\{([^\}]+)\}/g),
                (le = /(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g),
                function (t, e) {
                  return String(t).replace(oe, function (t, r) {
                    return (function (t, e, r) {
                      var i = r;
                      return (
                        e.replace(le, function (t, e, r, n, a) {
                          (e = e || n), i && (e in i && (i = i[e]), typeof i == "function" && a && (i = i()));
                        }),
                        (i = (i == null || i == r ? t : i) + "")
                      );
                    })(t, r, e);
                  });
                })),
              (e.ninja = function () {
                if (h.was) l.win.Raphael = h.is;
                else {
                  window.Raphael = void 0;
                  try {
                    delete window.Raphael;
                  } catch (t) {}
                }
                return e;
              }),
              (e.st = ue),
              t.on("raphael.DOMload", function () {
                r = !0;
              }),
              (function (t, r, i) {
                t.readyState == null &&
                  t.addEventListener &&
                  (t.addEventListener(
                    "DOMContentLoaded",
                    (i = function () {
                      t.removeEventListener("DOMContentLoaded", i, !1), (t.readyState = "complete");
                    }),
                    !1,
                  ),
                  (t.readyState = "loading")),
                  (function r() {
                    /in/.test(t.readyState) ? setTimeout(r, 9) : e.eve("raphael.DOMload");
                  })();
              })(document),
              e
            );
          }.apply(e, i)) || (t.exports = n);
    },
    function (t, e, r) {
      var i, n;
      (i = [r(0)]),
        void 0 ===
          (n = function (t) {
            if (!t || t.vml) {
              var e = "hasOwnProperty",
                r = String,
                i = parseFloat,
                n = Math,
                a = n.round,
                s = n.max,
                o = n.min,
                l = n.abs,
                h = /[, ]+/,
                u = t.eve,
                c = " ",
                f = "",
                p = {
                  M: "m",
                  L: "l",
                  C: "c",
                  Z: "x",
                  m: "t",
                  l: "r",
                  c: "v",
                  z: "x",
                },
                d = /([clmz]),?([^clmz]*)/gi,
                g = / progid:\S+Blur\([^\)]+\)/g,
                x = /-?[^,\s-]+/g,
                v = "position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)",
                y = 21600,
                m = { path: 1, rect: 1, image: 1 },
                b = { circle: 1, ellipse: 1 },
                _ = function (e, r, i) {
                  var n = t.matrix();
                  return n.rotate(-e, 0.5, 0.5), { dx: n.x(r, i), dy: n.y(r, i) };
                },
                w = function (t, e, r, i, n, a) {
                  var s = t._,
                    o = t.matrix,
                    h = s.fillpos,
                    u = t.node,
                    f = u.style,
                    p = 1,
                    d = "",
                    g = y / e,
                    x = y / r;
                  if (((f.visibility = "hidden"), e && r)) {
                    if (((u.coordsize = l(g) + c + l(x)), (f.rotation = a * (e * r < 0 ? -1 : 1)), a)) {
                      var v = _(a, i, n);
                      (i = v.dx), (n = v.dy);
                    }
                    if (
                      (e < 0 && (d += "x"),
                      r < 0 && (d += " y") && (p = -1),
                      (f.flip = d),
                      (u.coordorigin = i * -g + c + n * -x),
                      h || s.fillsize)
                    ) {
                      var m = u.getElementsByTagName("fill");
                      (m = m && m[0]),
                        u.removeChild(m),
                        h && ((v = _(a, o.x(h[0], h[1]), o.y(h[0], h[1]))), (m.position = v.dx * p + c + v.dy * p)),
                        s.fillsize && (m.size = s.fillsize[0] * l(e) + c + s.fillsize[1] * l(r)),
                        u.appendChild(m);
                    }
                    f.visibility = "visible";
                  }
                };
              t.toString = function () {
                return (
                  "Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël " + this.version
                );
              };
              var k,
                B = function (t, e, i) {
                  for (
                    var n = r(e).toLowerCase().split("-"),
                      a = i ? "end" : "start",
                      s = n.length,
                      o = "classic",
                      l = "medium",
                      h = "medium";
                    s--;

                  )
                    switch (n[s]) {
                      case "block":
                      case "classic":
                      case "oval":
                      case "diamond":
                      case "open":
                      case "none":
                        o = n[s];
                        break;
                      case "wide":
                      case "narrow":
                        h = n[s];
                        break;
                      case "long":
                      case "short":
                        l = n[s];
                    }
                  var u = t.node.getElementsByTagName("stroke")[0];
                  (u[a + "arrow"] = o), (u[a + "arrowlength"] = l), (u[a + "arrowwidth"] = h);
                },
                C = function (n, l) {
                  n.attrs = n.attrs || {};
                  var u = n.node,
                    g = n.attrs,
                    v = u.style,
                    _ =
                      m[n.type] &&
                      (l.x != g.x ||
                        l.y != g.y ||
                        l.width != g.width ||
                        l.height != g.height ||
                        l.cx != g.cx ||
                        l.cy != g.cy ||
                        l.rx != g.rx ||
                        l.ry != g.ry ||
                        l.r != g.r),
                    C = b[n.type] && (g.cx != l.cx || g.cy != l.cy || g.r != l.r || g.rx != l.rx || g.ry != l.ry),
                    A = n;
                  for (var T in l) l[e](T) && (g[T] = l[T]);
                  if (
                    (_ && ((g.path = t._getPath[n.type](n)), (n._.dirty = 1)),
                    l.href && (u.href = l.href),
                    l.title && (u.title = l.title),
                    l.target && (u.target = l.target),
                    l.cursor && (v.cursor = l.cursor),
                    "blur" in l && n.blur(l.blur),
                    ((l.path && n.type == "path") || _) &&
                      ((u.path = (function (e) {
                        var i = /[ahqstv]/gi,
                          n = t._pathToAbsolute;
                        if (
                          (r(e).match(i) && (n = t._path2curve),
                          (i = /[clmz]/g),
                          n == t._pathToAbsolute && !r(e).match(i))
                        ) {
                          var s = r(e).replace(d, function (t, e, r) {
                            var i = [],
                              n = e.toLowerCase() == "m",
                              s = p[e];
                            return (
                              r.replace(x, function (t) {
                                n && i.length == 2 && ((s += i + p[e == "m" ? "l" : "L"]), (i = [])), i.push(a(t * y));
                              }),
                              s + i
                            );
                          });
                          return s;
                        }
                        var o,
                          l,
                          h = n(e);
                        s = [];
                        for (var u = 0, g = h.length; u < g; u++) {
                          (o = h[u]), (l = h[u][0].toLowerCase()) == "z" && (l = "x");
                          for (var v = 1, m = o.length; v < m; v++) l += a(o[v] * y) + (v != m - 1 ? "," : f);
                          s.push(l);
                        }
                        return s.join(c);
                      })(~r(g.path).toLowerCase().indexOf("r") ? t._pathToAbsolute(g.path) : g.path)),
                      (n._.dirty = 1),
                      n.type == "image" &&
                        ((n._.fillpos = [g.x, g.y]), (n._.fillsize = [g.width, g.height]), w(n, 1, 1, 0, 0, 0))),
                    "transform" in l && n.transform(l.transform),
                    C)
                  ) {
                    var M = +g.cx,
                      E = +g.cy,
                      N = +g.rx || +g.r || 0,
                      L = +g.ry || +g.r || 0;
                    (u.path = t.format(
                      "ar{0},{1},{2},{3},{4},{1},{4},{1}x",
                      a((M - N) * y),
                      a((E - L) * y),
                      a((M + N) * y),
                      a((E + L) * y),
                      a(M * y),
                    )),
                      (n._.dirty = 1);
                  }
                  if ("clip-rect" in l) {
                    var P = r(l["clip-rect"]).split(h);
                    if (P.length == 4) {
                      (P[2] = +P[2] + +P[0]), (P[3] = +P[3] + +P[1]);
                      var z = u.clipRect || t._g.doc.createElement("div"),
                        F = z.style;
                      (F.clip = t.format("rect({1}px {2}px {3}px {0}px)", P)),
                        u.clipRect ||
                          ((F.position = "absolute"),
                          (F.top = 0),
                          (F.left = 0),
                          (F.width = n.paper.width + "px"),
                          (F.height = n.paper.height + "px"),
                          u.parentNode.insertBefore(z, u),
                          z.appendChild(u),
                          (u.clipRect = z));
                    }
                    l["clip-rect"] || (u.clipRect && (u.clipRect.style.clip = "auto"));
                  }
                  if (n.textpath) {
                    var R = n.textpath.style;
                    l.font && (R.font = l.font),
                      l["font-family"] &&
                        (R.fontFamily = '"' + l["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g, f) + '"'),
                      l["font-size"] && (R.fontSize = l["font-size"]),
                      l["font-weight"] && (R.fontWeight = l["font-weight"]),
                      l["font-style"] && (R.fontStyle = l["font-style"]);
                  }
                  if (
                    ("arrow-start" in l && B(A, l["arrow-start"]),
                    "arrow-end" in l && B(A, l["arrow-end"], 1),
                    l.opacity != null ||
                      l.fill != null ||
                      l.src != null ||
                      l.stroke != null ||
                      l["stroke-width"] != null ||
                      l["stroke-opacity"] != null ||
                      l["fill-opacity"] != null ||
                      l["stroke-dasharray"] != null ||
                      l["stroke-miterlimit"] != null ||
                      l["stroke-linejoin"] != null ||
                      l["stroke-linecap"] != null)
                  ) {
                    var j = u.getElementsByTagName("fill");
                    if (
                      (!(j = j && j[0]) && (j = k("fill")),
                      n.type == "image" && l.src && (j.src = l.src),
                      l.fill && (j.on = !0),
                      (j.on != null && l.fill != "none" && l.fill !== null) || (j.on = !1),
                      j.on && l.fill)
                    ) {
                      var I = r(l.fill).match(t._ISURL);
                      if (I) {
                        j.parentNode == u && u.removeChild(j), (j.rotate = !0), (j.src = I[1]), (j.type = "tile");
                        var D = n.getBBox(1);
                        (j.position = D.x + c + D.y),
                          (n._.fillpos = [D.x, D.y]),
                          t._preload(I[1], function () {
                            n._.fillsize = [this.offsetWidth, this.offsetHeight];
                          });
                      } else
                        (j.color = t.getRGB(l.fill).hex),
                          (j.src = f),
                          (j.type = "solid"),
                          t.getRGB(l.fill).error &&
                            (A.type in { circle: 1, ellipse: 1 } || r(l.fill).charAt() != "r") &&
                            S(A, l.fill, j) &&
                            ((g.fill = "none"), (g.gradient = l.fill), (j.rotate = !1));
                    }
                    if ("fill-opacity" in l || "opacity" in l) {
                      var q =
                        ((+g["fill-opacity"] + 1 || 2) - 1) *
                        ((+g.opacity + 1 || 2) - 1) *
                        ((+t.getRGB(l.fill).o + 1 || 2) - 1);
                      (q = o(s(q, 0), 1)), (j.opacity = q), j.src && (j.color = "none");
                    }
                    u.appendChild(j);
                    var O = u.getElementsByTagName("stroke") && u.getElementsByTagName("stroke")[0],
                      V = !1;
                    !O && (V = O = k("stroke")),
                      ((l.stroke && l.stroke != "none") ||
                        l["stroke-width"] ||
                        l["stroke-opacity"] != null ||
                        l["stroke-dasharray"] ||
                        l["stroke-miterlimit"] ||
                        l["stroke-linejoin"] ||
                        l["stroke-linecap"]) &&
                        (O.on = !0),
                      (l.stroke == "none" ||
                        l.stroke === null ||
                        O.on == null ||
                        l.stroke == 0 ||
                        l["stroke-width"] == 0) &&
                        (O.on = !1);
                    var Y = t.getRGB(l.stroke);
                    O.on && l.stroke && (O.color = Y.hex),
                      (q = ((+g["stroke-opacity"] + 1 || 2) - 1) * ((+g.opacity + 1 || 2) - 1) * ((+Y.o + 1 || 2) - 1));
                    var W = 0.75 * (i(l["stroke-width"]) || 1);
                    if (
                      ((q = o(s(q, 0), 1)),
                      l["stroke-width"] == null && (W = g["stroke-width"]),
                      l["stroke-width"] && (O.weight = W),
                      W && W < 1 && (q *= W) && (O.weight = 1),
                      (O.opacity = q),
                      l["stroke-linejoin"] && (O.joinstyle = l["stroke-linejoin"] || "miter"),
                      (O.miterlimit = l["stroke-miterlimit"] || 8),
                      l["stroke-linecap"] &&
                        (O.endcap =
                          l["stroke-linecap"] == "butt"
                            ? "flat"
                            : l["stroke-linecap"] == "square"
                            ? "square"
                            : "round"),
                      "stroke-dasharray" in l)
                    ) {
                      var G = {
                        "-": "shortdash",
                        ".": "shortdot",
                        "-.": "shortdashdot",
                        "-..": "shortdashdotdot",
                        ". ": "dot",
                        "- ": "dash",
                        "--": "longdash",
                        "- .": "dashdot",
                        "--.": "longdashdot",
                        "--..": "longdashdotdot",
                      };
                      O.dashstyle = G[e](l["stroke-dasharray"]) ? G[l["stroke-dasharray"]] : f;
                    }
                    V && u.appendChild(O);
                  }
                  if (A.type == "text") {
                    A.paper.canvas.style.display = f;
                    var H = A.paper.span,
                      X = g.font && g.font.match(/\d+(?:\.\d*)?(?=px)/);
                    (v = H.style),
                      g.font && (v.font = g.font),
                      g["font-family"] && (v.fontFamily = g["font-family"]),
                      g["font-weight"] && (v.fontWeight = g["font-weight"]),
                      g["font-style"] && (v.fontStyle = g["font-style"]),
                      (X = i(g["font-size"] || (X && X[0])) || 10),
                      (v.fontSize = 100 * X + "px"),
                      A.textpath.string &&
                        (H.innerHTML = r(A.textpath.string)
                          .replace(/</g, "&#60;")
                          .replace(/&/g, "&#38;")
                          .replace(/\n/g, "<br>"));
                    var U = H.getBoundingClientRect();
                    (A.W = g.w = (U.right - U.left) / 100),
                      (A.H = g.h = (U.bottom - U.top) / 100),
                      (A.X = g.x),
                      (A.Y = g.y + A.H / 2),
                      ("x" in l || "y" in l) &&
                        (A.path.v = t.format("m{0},{1}l{2},{1}", a(g.x * y), a(g.y * y), a(g.x * y) + 1));
                    for (
                      var $ = ["x", "y", "text", "font", "font-family", "font-weight", "font-style", "font-size"],
                        Z = 0,
                        Q = $.length;
                      Z < Q;
                      Z++
                    )
                      if ($[Z] in l) {
                        A._.dirty = 1;
                        break;
                      }
                    switch (g["text-anchor"]) {
                      case "start":
                        (A.textpath.style["v-text-align"] = "left"), (A.bbx = A.W / 2);
                        break;
                      case "end":
                        (A.textpath.style["v-text-align"] = "right"), (A.bbx = -A.W / 2);
                        break;
                      default:
                        (A.textpath.style["v-text-align"] = "center"), (A.bbx = 0);
                    }
                    A.textpath.style["v-text-kern"] = !0;
                  }
                },
                S = function (e, a, s) {
                  e.attrs = e.attrs || {};
                  e.attrs;
                  var o = Math.pow,
                    l = "linear",
                    h = ".5 .5";
                  if (
                    ((e.attrs.gradient = a),
                    (a = (a = r(a).replace(t._radial_gradient, function (t, e, r) {
                      return (
                        (l = "radial"),
                        e &&
                          r &&
                          ((e = i(e)),
                          (r = i(r)),
                          o(e - 0.5, 2) + o(r - 0.5, 2) > 0.25 &&
                            (r = n.sqrt(0.25 - o(e - 0.5, 2)) * (2 * (r > 0.5) - 1) + 0.5),
                          (h = e + c + r)),
                        f
                      );
                    })).split(/\s*\-\s*/)),
                    l == "linear")
                  ) {
                    var u = a.shift();
                    if (((u = -i(u)), isNaN(u))) return null;
                  }
                  var p = t._parseDots(a);
                  if (!p) return null;
                  if (((e = e.shape || e.node), p.length)) {
                    e.removeChild(s),
                      (s.on = !0),
                      (s.method = "none"),
                      (s.color = p[0].color),
                      (s.color2 = p[p.length - 1].color);
                    for (var d = [], g = 0, x = p.length; g < x; g++)
                      p[g].offset && d.push(p[g].offset + c + p[g].color);
                    (s.colors = d.length ? d.join() : "0% " + s.color),
                      l == "radial"
                        ? ((s.type = "gradientTitle"),
                          (s.focus = "100%"),
                          (s.focussize = "0 0"),
                          (s.focusposition = h),
                          (s.angle = 0))
                        : ((s.type = "gradient"), (s.angle = (270 - u) % 360)),
                      e.appendChild(s);
                  }
                  return 1;
                },
                A = function (e, r) {
                  (this[0] = this.node = e),
                    (e.raphael = !0),
                    (this.id = t._oid++),
                    (e.raphaelid = this.id),
                    (this.X = 0),
                    (this.Y = 0),
                    (this.attrs = {}),
                    (this.paper = r),
                    (this.matrix = t.matrix()),
                    (this._ = {
                      transform: [],
                      sx: 1,
                      sy: 1,
                      dx: 0,
                      dy: 0,
                      deg: 0,
                      dirty: 1,
                      dirtyT: 1,
                    }),
                    !r.bottom && (r.bottom = this),
                    (this.prev = r.top),
                    r.top && (r.top.next = this),
                    (r.top = this),
                    (this.next = null);
                },
                T = t.el;
              (A.prototype = T),
                (T.constructor = A),
                (T.transform = function (e) {
                  if (e == null) return this._.transform;
                  var i,
                    n = this.paper._viewBoxShift,
                    a = n ? "s" + [n.scale, n.scale] + "-1-1t" + [n.dx, n.dy] : f;
                  n && (i = e = r(e).replace(/\.{3}|\u2026/g, this._.transform || f)), t._extractTransform(this, a + e);
                  var s,
                    o = this.matrix.clone(),
                    l = this.skew,
                    h = this.node,
                    u = ~r(this.attrs.fill).indexOf("-"),
                    p = !r(this.attrs.fill).indexOf("url(");
                  if ((o.translate(1, 1), p || u || this.type == "image"))
                    if (
                      ((l.matrix = "1 0 0 1"), (l.offset = "0 0"), (s = o.split()), (u && s.noRotation) || !s.isSimple)
                    ) {
                      h.style.filter = o.toFilter();
                      var d = this.getBBox(),
                        g = this.getBBox(1),
                        x = d.x - g.x,
                        v = d.y - g.y;
                      (h.coordorigin = x * -y + c + v * -y), w(this, 1, 1, x, v, 0);
                    } else (h.style.filter = f), w(this, s.scalex, s.scaley, s.dx, s.dy, s.rotate);
                  else (h.style.filter = f), (l.matrix = r(o)), (l.offset = o.offset());
                  return i !== null && ((this._.transform = i), t._extractTransform(this, i)), this;
                }),
                (T.rotate = function (t, e, n) {
                  if (this.removed) return this;
                  if (t != null) {
                    if (
                      ((t = r(t).split(h)).length - 1 && ((e = i(t[1])), (n = i(t[2]))),
                      (t = i(t[0])),
                      n == null && (e = n),
                      e == null || n == null)
                    ) {
                      var a = this.getBBox(1);
                      (e = a.x + a.width / 2), (n = a.y + a.height / 2);
                    }
                    return (this._.dirtyT = 1), this.transform(this._.transform.concat([["r", t, e, n]])), this;
                  }
                }),
                (T.translate = function (t, e) {
                  return this.removed
                    ? this
                    : ((t = r(t).split(h)).length - 1 && (e = i(t[1])),
                      (t = i(t[0]) || 0),
                      (e = +e || 0),
                      this._.bbox && ((this._.bbox.x += t), (this._.bbox.y += e)),
                      this.transform(this._.transform.concat([["t", t, e]])),
                      this);
                }),
                (T.scale = function (t, e, n, a) {
                  if (this.removed) return this;
                  if (
                    ((t = r(t).split(h)).length - 1 &&
                      ((e = i(t[1])), (n = i(t[2])), (a = i(t[3])), isNaN(n) && (n = null), isNaN(a) && (a = null)),
                    (t = i(t[0])),
                    e == null && (e = t),
                    a == null && (n = a),
                    n == null || a == null)
                  )
                    var s = this.getBBox(1);
                  return (
                    (n = n == null ? s.x + s.width / 2 : n),
                    (a = a == null ? s.y + s.height / 2 : a),
                    this.transform(this._.transform.concat([["s", t, e, n, a]])),
                    (this._.dirtyT = 1),
                    this
                  );
                }),
                (T.hide = function () {
                  return !this.removed && (this.node.style.display = "none"), this;
                }),
                (T.show = function () {
                  return !this.removed && (this.node.style.display = f), this;
                }),
                (T.auxGetBBox = t.el.getBBox),
                (T.getBBox = function () {
                  var t = this.auxGetBBox();
                  if (this.paper && this.paper._viewBoxShift) {
                    var e = {},
                      r = 1 / this.paper._viewBoxShift.scale;
                    return (
                      (e.x = t.x - this.paper._viewBoxShift.dx),
                      (e.x *= r),
                      (e.y = t.y - this.paper._viewBoxShift.dy),
                      (e.y *= r),
                      (e.width = t.width * r),
                      (e.height = t.height * r),
                      (e.x2 = e.x + e.width),
                      (e.y2 = e.y + e.height),
                      e
                    );
                  }
                  return t;
                }),
                (T._getBBox = function () {
                  return this.removed
                    ? {}
                    : {
                        x: this.X + (this.bbx || 0) - this.W / 2,
                        y: this.Y - this.H,
                        width: this.W,
                        height: this.H,
                      };
                }),
                (T.remove = function () {
                  if (!this.removed && this.node.parentNode) {
                    for (var e in (this.paper.__set__ && this.paper.__set__.exclude(this),
                    t.eve.unbind("raphael.*.*." + this.id),
                    t._tear(this, this.paper),
                    this.node.parentNode.removeChild(this.node),
                    this.shape && this.shape.parentNode.removeChild(this.shape),
                    this))
                      this[e] = typeof this[e] == "function" ? t._removedFactory(e) : null;
                    this.removed = !0;
                  }
                }),
                (T.attr = function (r, i) {
                  if (this.removed) return this;
                  if (r == null) {
                    var n = {};
                    for (var a in this.attrs) this.attrs[e](a) && (n[a] = this.attrs[a]);
                    return (
                      n.gradient && n.fill == "none" && (n.fill = n.gradient) && delete n.gradient,
                      (n.transform = this._.transform),
                      n
                    );
                  }
                  if (i == null && t.is(r, "string")) {
                    if (r == "fill" && this.attrs.fill == "none" && this.attrs.gradient) return this.attrs.gradient;
                    for (var s = r.split(h), o = {}, l = 0, c = s.length; l < c; l++)
                      (r = s[l]) in this.attrs
                        ? (o[r] = this.attrs[r])
                        : t.is(this.paper.customAttributes[r], "function")
                        ? (o[r] = this.paper.customAttributes[r].def)
                        : (o[r] = t._availableAttrs[r]);
                    return c - 1 ? o : o[s[0]];
                  }
                  if (this.attrs && i == null && t.is(r, "array")) {
                    for (o = {}, l = 0, c = r.length; l < c; l++) o[r[l]] = this.attr(r[l]);
                    return o;
                  }
                  var f;
                  for (var p in (i != null && ((f = {})[r] = i), i == null && t.is(r, "object") && (f = r), f))
                    u("raphael.attr." + p + "." + this.id, this, f[p]);
                  if (f) {
                    for (p in this.paper.customAttributes)
                      if (
                        this.paper.customAttributes[e](p) &&
                        f[e](p) &&
                        t.is(this.paper.customAttributes[p], "function")
                      ) {
                        var d = this.paper.customAttributes[p].apply(this, [].concat(f[p]));
                        for (var g in ((this.attrs[p] = f[p]), d)) d[e](g) && (f[g] = d[g]);
                      }
                    f.text && this.type == "text" && (this.textpath.string = f.text), C(this, f);
                  }
                  return this;
                }),
                (T.toFront = function () {
                  return (
                    !this.removed && this.node.parentNode.appendChild(this.node),
                    this.paper && this.paper.top != this && t._tofront(this, this.paper),
                    this
                  );
                }),
                (T.toBack = function () {
                  return this.removed
                    ? this
                    : (this.node.parentNode.firstChild != this.node &&
                        (this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild),
                        t._toback(this, this.paper)),
                      this);
                }),
                (T.insertAfter = function (e) {
                  return this.removed
                    ? this
                    : (e.constructor == t.st.constructor && (e = e[e.length - 1]),
                      e.node.nextSibling
                        ? e.node.parentNode.insertBefore(this.node, e.node.nextSibling)
                        : e.node.parentNode.appendChild(this.node),
                      t._insertafter(this, e, this.paper),
                      this);
                }),
                (T.insertBefore = function (e) {
                  return this.removed
                    ? this
                    : (e.constructor == t.st.constructor && (e = e[0]),
                      e.node.parentNode.insertBefore(this.node, e.node),
                      t._insertbefore(this, e, this.paper),
                      this);
                }),
                (T.blur = function (e) {
                  var r = this.node.runtimeStyle,
                    i = r.filter;
                  return (
                    (i = i.replace(g, f)),
                    +e != 0
                      ? ((this.attrs.blur = e),
                        (r.filter = i + c + " progid:DXImageTransform.Microsoft.Blur(pixelradius=" + (+e || 1.5) + ")"),
                        (r.margin = t.format("-{0}px 0 0 -{0}px", a(+e || 1.5))))
                      : ((r.filter = i), (r.margin = 0), delete this.attrs.blur),
                    this
                  );
                }),
                (t._engine.path = function (t, e) {
                  var r = k("shape");
                  (r.style.cssText = v), (r.coordsize = y + c + y), (r.coordorigin = e.coordorigin);
                  var i = new A(r, e),
                    n = { fill: "none", stroke: "#000" };
                  t && (n.path = t),
                    (i.type = "path"),
                    (i.path = []),
                    (i.Path = f),
                    C(i, n),
                    e.canvas && e.canvas.appendChild(r);
                  var a = k("skew");
                  return (a.on = !0), r.appendChild(a), (i.skew = a), i.transform(f), i;
                }),
                (t._engine.rect = function (e, r, i, n, a, s) {
                  var o = t._rectPath(r, i, n, a, s),
                    l = e.path(o),
                    h = l.attrs;
                  return (
                    (l.X = h.x = r),
                    (l.Y = h.y = i),
                    (l.W = h.width = n),
                    (l.H = h.height = a),
                    (h.r = s),
                    (h.path = o),
                    (l.type = "rect"),
                    l
                  );
                }),
                (t._engine.ellipse = function (t, e, r, i, n) {
                  var a = t.path();
                  a.attrs;
                  return (
                    (a.X = e - i),
                    (a.Y = r - n),
                    (a.W = 2 * i),
                    (a.H = 2 * n),
                    (a.type = "ellipse"),
                    C(a, { cx: e, cy: r, rx: i, ry: n }),
                    a
                  );
                }),
                (t._engine.circle = function (t, e, r, i) {
                  var n = t.path();
                  n.attrs;
                  return (
                    (n.X = e - i),
                    (n.Y = r - i),
                    (n.W = n.H = 2 * i),
                    (n.type = "circle"),
                    C(n, { cx: e, cy: r, r: i }),
                    n
                  );
                }),
                (t._engine.image = function (e, r, i, n, a, s) {
                  var o = t._rectPath(i, n, a, s),
                    l = e.path(o).attr({ stroke: "none" }),
                    h = l.attrs,
                    u = l.node,
                    c = u.getElementsByTagName("fill")[0];
                  return (
                    (h.src = r),
                    (l.X = h.x = i),
                    (l.Y = h.y = n),
                    (l.W = h.width = a),
                    (l.H = h.height = s),
                    (h.path = o),
                    (l.type = "image"),
                    c.parentNode == u && u.removeChild(c),
                    (c.rotate = !0),
                    (c.src = r),
                    (c.type = "tile"),
                    (l._.fillpos = [i, n]),
                    (l._.fillsize = [a, s]),
                    u.appendChild(c),
                    w(l, 1, 1, 0, 0, 0),
                    l
                  );
                }),
                (t._engine.text = function (e, i, n, s) {
                  var o = k("shape"),
                    l = k("path"),
                    h = k("textpath");
                  (i = i || 0),
                    (n = n || 0),
                    (s = s || ""),
                    (l.v = t.format("m{0},{1}l{2},{1}", a(i * y), a(n * y), a(i * y) + 1)),
                    (l.textpathok = !0),
                    (h.string = r(s)),
                    (h.on = !0),
                    (o.style.cssText = v),
                    (o.coordsize = y + c + y),
                    (o.coordorigin = "0 0");
                  var u = new A(o, e),
                    p = {
                      fill: "#000",
                      stroke: "none",
                      font: t._availableAttrs.font,
                      text: s,
                    };
                  (u.shape = o),
                    (u.path = l),
                    (u.textpath = h),
                    (u.type = "text"),
                    (u.attrs.text = r(s)),
                    (u.attrs.x = i),
                    (u.attrs.y = n),
                    (u.attrs.w = 1),
                    (u.attrs.h = 1),
                    C(u, p),
                    o.appendChild(h),
                    o.appendChild(l),
                    e.canvas.appendChild(o);
                  var d = k("skew");
                  return (d.on = !0), o.appendChild(d), (u.skew = d), u.transform(f), u;
                }),
                (t._engine.setSize = function (e, r) {
                  var i = this.canvas.style;
                  return (
                    (this.width = e),
                    (this.height = r),
                    e == +e && (e += "px"),
                    r == +r && (r += "px"),
                    (i.width = e),
                    (i.height = r),
                    (i.clip = "rect(0 " + e + " " + r + " 0)"),
                    this._viewBox && t._engine.setViewBox.apply(this, this._viewBox),
                    this
                  );
                }),
                (t._engine.setViewBox = function (e, r, i, n, a) {
                  t.eve("raphael.setViewBox", this, this._viewBox, [e, r, i, n, a]);
                  var s,
                    o,
                    l = this.getSize(),
                    h = l.width,
                    u = l.height;
                  return (
                    a &&
                      ((o = h / i),
                      i * (s = u / n) < h && (e -= (h - i * s) / 2 / s),
                      n * o < u && (r -= (u - n * o) / 2 / o)),
                    (this._viewBox = [e, r, i, n, !!a]),
                    (this._viewBoxShift = { dx: -e, dy: -r, scale: l }),
                    this.forEach(function (t) {
                      t.transform("...");
                    }),
                    this
                  );
                }),
                (t._engine.initWin = function (t) {
                  var e = t.document;
                  e.styleSheets.length < 31
                    ? e.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)")
                    : e.styleSheets[0].addRule(".rvml", "behavior:url(#default#VML)");
                  try {
                    !e.namespaces.rvml && e.namespaces.add("rvml", "urn:schemas-microsoft-com:vml"),
                      (k = function (t) {
                        return e.createElement("<rvml:" + t + ' class="rvml">');
                      });
                  } catch (t) {
                    k = function (t) {
                      return e.createElement("<" + t + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">');
                    };
                  }
                }),
                t._engine.initWin(t._g.win),
                (t._engine.create = function () {
                  var e = t._getContainer.apply(0, arguments),
                    r = e.container,
                    i = e.height,
                    n = e.width,
                    a = e.x,
                    s = e.y;
                  if (!r) throw new Error("VML container not found.");
                  var o = new t._Paper(),
                    l = (o.canvas = t._g.doc.createElement("div")),
                    h = l.style;
                  return (
                    (a = a || 0),
                    (s = s || 0),
                    (n = n || 512),
                    (i = i || 342),
                    (o.width = n),
                    (o.height = i),
                    n == +n && (n += "px"),
                    i == +i && (i += "px"),
                    (o.coordsize = 216e5 + c + 216e5),
                    (o.coordorigin = "0 0"),
                    (o.span = t._g.doc.createElement("span")),
                    (o.span.style.cssText =
                      "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;"),
                    l.appendChild(o.span),
                    (h.cssText = t.format(
                      "top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",
                      n,
                      i,
                    )),
                    r == 1
                      ? (t._g.doc.body.appendChild(l),
                        (h.left = a + "px"),
                        (h.top = s + "px"),
                        (h.position = "absolute"))
                      : r.firstChild
                      ? r.insertBefore(l, r.firstChild)
                      : r.appendChild(l),
                    (o.renderfix = function () {}),
                    o
                  );
                }),
                (t.prototype.clear = function () {
                  t.eve("raphael.clear", this),
                    (this.canvas.innerHTML = f),
                    (this.span = t._g.doc.createElement("span")),
                    (this.span.style.cssText =
                      "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;"),
                    this.canvas.appendChild(this.span),
                    (this.bottom = this.top = null);
                }),
                (t.prototype.remove = function () {
                  for (var e in (t.eve("raphael.remove", this), this.canvas.parentNode.removeChild(this.canvas), this))
                    this[e] = typeof this[e] == "function" ? t._removedFactory(e) : null;
                  return !0;
                });
              var M = t.st;
              for (var E in T)
                T[e](E) &&
                  !M[e](E) &&
                  (M[E] = (function (t) {
                    return function () {
                      var e = arguments;
                      return this.forEach(function (r) {
                        r[t].apply(r, e);
                      });
                    };
                  })(E));
            }
          }.apply(e, i)) || (t.exports = n);
    },
    function (t, e, r) {
      var i, n;
      (i = [r(0)]),
        void 0 ===
          (n = function (t) {
            if (!t || t.svg) {
              var e = "hasOwnProperty",
                r = String,
                i = parseFloat,
                n = parseInt,
                a = Math,
                s = a.max,
                o = a.abs,
                l = a.pow,
                h = /[, ]+/,
                u = t.eve,
                c = "",
                f = " ",
                p = "http://www.w3.org/1999/xlink",
                d = {
                  block: "M5,0 0,2.5 5,5z",
                  classic: "M5,0 0,2.5 5,5 3.5,3 3.5,2z",
                  diamond: "M2.5,0 5,2.5 2.5,5 0,2.5z",
                  open: "M6,1 1,3.5 6,6",
                  oval: "M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z",
                },
                g = {};
              t.toString = function () {
                return "Your browser supports SVG.\nYou are running Raphaël " + this.version;
              };
              var x = function (i, n) {
                  if (n)
                    for (var a in (typeof i == "string" && (i = x(i)), n))
                      n[e](a) &&
                        (a.substring(0, 6) == "xlink:"
                          ? i.setAttributeNS(p, a.substring(6), r(n[a]))
                          : i.setAttribute(a, r(n[a])));
                  else
                    (i = t._g.doc.createElementNS("http://www.w3.org/2000/svg", i)).style &&
                      (i.style.webkitTapHighlightColor = "rgba(0,0,0,0)");
                  return i;
                },
                v = function (e, n) {
                  var h = "linear",
                    u = e.id + n,
                    f = 0.5,
                    p = 0.5,
                    d = e.node,
                    g = e.paper,
                    v = d.style,
                    m = t._g.doc.getElementById(u);
                  if (!m) {
                    if (
                      ((n = (n = r(n).replace(t._radial_gradient, function (t, e, r) {
                        if (((h = "radial"), e && r)) {
                          f = i(e);
                          var n = 2 * ((p = i(r)) > 0.5) - 1;
                          l(f - 0.5, 2) + l(p - 0.5, 2) > 0.25 &&
                            (p = a.sqrt(0.25 - l(f - 0.5, 2)) * n + 0.5) &&
                            p != 0.5 &&
                            (p = p.toFixed(5) - 1e-5 * n);
                        }
                        return c;
                      })).split(/\s*\-\s*/)),
                      h == "linear")
                    ) {
                      var b = n.shift();
                      if (((b = -i(b)), isNaN(b))) return null;
                      var _ = [0, 0, a.cos(t.rad(b)), a.sin(t.rad(b))],
                        w = 1 / (s(o(_[2]), o(_[3])) || 1);
                      (_[2] *= w),
                        (_[3] *= w),
                        _[2] < 0 && ((_[0] = -_[2]), (_[2] = 0)),
                        _[3] < 0 && ((_[1] = -_[3]), (_[3] = 0));
                    }
                    var k = t._parseDots(n);
                    if (!k) return null;
                    if (
                      ((u = u.replace(/[\(\)\s,\xb0#]/g, "_")),
                      e.gradient && u != e.gradient.id && (g.defs.removeChild(e.gradient), delete e.gradient),
                      !e.gradient)
                    ) {
                      (m = x(h + "Gradient", { id: u })),
                        (e.gradient = m),
                        x(
                          m,
                          h == "radial"
                            ? { fx: f, fy: p }
                            : {
                                x1: _[0],
                                y1: _[1],
                                x2: _[2],
                                y2: _[3],
                                gradientTransform: e.matrix.invert(),
                              },
                        ),
                        g.defs.appendChild(m);
                      for (var B = 0, C = k.length; B < C; B++)
                        m.appendChild(
                          x("stop", {
                            offset: k[B].offset ? k[B].offset : B ? "100%" : "0%",
                            "stop-color": k[B].color || "#fff",
                            "stop-opacity": isFinite(k[B].opacity) ? k[B].opacity : 1,
                          }),
                        );
                    }
                  }
                  return (
                    x(d, { fill: y(u), opacity: 1, "fill-opacity": 1 }),
                    (v.fill = c),
                    (v.opacity = 1),
                    (v.fillOpacity = 1),
                    1
                  );
                },
                y = function (t) {
                  if ((e = document.documentMode) && (e === 9 || e === 10)) return "url('#" + t + "')";
                  var e,
                    r = document.location;
                  return "url('" + (r.protocol + "//" + r.host + r.pathname + r.search) + "#" + t + "')";
                },
                m = function (t) {
                  var e = t.getBBox(1);
                  x(t.pattern, {
                    patternTransform: t.matrix.invert() + " translate(" + e.x + "," + e.y + ")",
                  });
                },
                b = function (i, n, a) {
                  if (i.type == "path") {
                    for (
                      var s,
                        o,
                        l,
                        h,
                        u,
                        f = r(n).toLowerCase().split("-"),
                        p = i.paper,
                        v = a ? "end" : "start",
                        y = i.node,
                        m = i.attrs,
                        b = m["stroke-width"],
                        _ = f.length,
                        w = "classic",
                        k = 3,
                        B = 3,
                        C = 5;
                      _--;

                    )
                      switch (f[_]) {
                        case "block":
                        case "classic":
                        case "oval":
                        case "diamond":
                        case "open":
                        case "none":
                          w = f[_];
                          break;
                        case "wide":
                          B = 5;
                          break;
                        case "narrow":
                          B = 2;
                          break;
                        case "long":
                          k = 5;
                          break;
                        case "short":
                          k = 2;
                      }
                    if (
                      (w == "open"
                        ? ((k += 2),
                          (B += 2),
                          (C += 2),
                          (l = 1),
                          (h = a ? 4 : 1),
                          (u = { fill: "none", stroke: m.stroke }))
                        : ((h = l = k / 2), (u = { fill: m.stroke, stroke: "none" })),
                      i._.arrows
                        ? a
                          ? (i._.arrows.endPath && g[i._.arrows.endPath]--,
                            i._.arrows.endMarker && g[i._.arrows.endMarker]--)
                          : (i._.arrows.startPath && g[i._.arrows.startPath]--,
                            i._.arrows.startMarker && g[i._.arrows.startMarker]--)
                        : (i._.arrows = {}),
                      w != "none")
                    ) {
                      var S = "raphael-marker-" + w,
                        A = "raphael-marker-" + v + w + k + B + "-obj" + i.id;
                      t._g.doc.getElementById(S)
                        ? g[S]++
                        : (p.defs.appendChild(
                            x(x("path"), {
                              "stroke-linecap": "round",
                              d: d[w],
                              id: S,
                            }),
                          ),
                          (g[S] = 1));
                      var T,
                        M = t._g.doc.getElementById(A);
                      M
                        ? (g[A]++, (T = M.getElementsByTagName("use")[0]))
                        : ((M = x(x("marker"), {
                            id: A,
                            markerHeight: B,
                            markerWidth: k,
                            orient: "auto",
                            refX: h,
                            refY: B / 2,
                          })),
                          (T = x(x("use"), {
                            "xlink:href": "#" + S,
                            transform:
                              (a ? "rotate(180 " + k / 2 + " " + B / 2 + ") " : c) +
                              "scale(" +
                              k / C +
                              "," +
                              B / C +
                              ")",
                            "stroke-width": (1 / ((k / C + B / C) / 2)).toFixed(4),
                          })),
                          M.appendChild(T),
                          p.defs.appendChild(M),
                          (g[A] = 1)),
                        x(T, u);
                      var E = l * (w != "diamond" && w != "oval");
                      a
                        ? ((s = i._.arrows.startdx * b || 0), (o = t.getTotalLength(m.path) - E * b))
                        : ((s = E * b), (o = t.getTotalLength(m.path) - (i._.arrows.enddx * b || 0))),
                        ((u = {})["marker-" + v] = "url(#" + A + ")"),
                        (o || s) && (u.d = t.getSubpath(m.path, s, o)),
                        x(y, u),
                        (i._.arrows[v + "Path"] = S),
                        (i._.arrows[v + "Marker"] = A),
                        (i._.arrows[v + "dx"] = E),
                        (i._.arrows[v + "Type"] = w),
                        (i._.arrows[v + "String"] = n);
                    } else
                      a
                        ? ((s = i._.arrows.startdx * b || 0), (o = t.getTotalLength(m.path) - s))
                        : ((s = 0), (o = t.getTotalLength(m.path) - (i._.arrows.enddx * b || 0))),
                        i._.arrows[v + "Path"] && x(y, { d: t.getSubpath(m.path, s, o) }),
                        delete i._.arrows[v + "Path"],
                        delete i._.arrows[v + "Marker"],
                        delete i._.arrows[v + "dx"],
                        delete i._.arrows[v + "Type"],
                        delete i._.arrows[v + "String"];
                    for (u in g)
                      if (g[e](u) && !g[u]) {
                        var N = t._g.doc.getElementById(u);
                        N && N.parentNode.removeChild(N);
                      }
                  }
                },
                _ = {
                  "-": [3, 1],
                  ".": [1, 1],
                  "-.": [3, 1, 1, 1],
                  "-..": [3, 1, 1, 1, 1, 1],
                  ". ": [1, 3],
                  "- ": [4, 3],
                  "--": [8, 3],
                  "- .": [4, 3, 1, 3],
                  "--.": [8, 3, 1, 3],
                  "--..": [8, 3, 1, 3, 1, 3],
                },
                w = function (t, e, i) {
                  if ((e = _[r(e).toLowerCase()])) {
                    for (
                      var n = t.attrs["stroke-width"] || "1",
                        a = { round: n, square: n, butt: 0 }[t.attrs["stroke-linecap"] || i["stroke-linecap"]] || 0,
                        s = [],
                        o = e.length;
                      o--;

                    )
                      s[o] = e[o] * n + (o % 2 ? 1 : -1) * a;
                    x(t.node, { "stroke-dasharray": s.join(",") });
                  } else x(t.node, { "stroke-dasharray": "none" });
                },
                k = function (i, a) {
                  var l = i.node,
                    u = i.attrs,
                    f = l.style.visibility;
                  for (var d in ((l.style.visibility = "hidden"), a))
                    if (a[e](d)) {
                      if (!t._availableAttrs[e](d)) continue;
                      var g = a[d];
                      switch (((u[d] = g), d)) {
                        case "blur":
                          i.blur(g);
                          break;
                        case "title":
                          var y = l.getElementsByTagName("title");
                          if (y.length && (y = y[0])) y.firstChild.nodeValue = g;
                          else {
                            y = x("title");
                            var _ = t._g.doc.createTextNode(g);
                            y.appendChild(_), l.appendChild(y);
                          }
                          break;
                        case "href":
                        case "target":
                          var k = l.parentNode;
                          if (k.tagName.toLowerCase() != "a") {
                            var C = x("a");
                            k.insertBefore(C, l), C.appendChild(l), (k = C);
                          }
                          d == "target"
                            ? k.setAttributeNS(p, "show", g == "blank" ? "new" : g)
                            : k.setAttributeNS(p, d, g);
                          break;
                        case "cursor":
                          l.style.cursor = g;
                          break;
                        case "transform":
                          i.transform(g);
                          break;
                        case "arrow-start":
                          b(i, g);
                          break;
                        case "arrow-end":
                          b(i, g, 1);
                          break;
                        case "clip-rect":
                          var S = r(g).split(h);
                          if (S.length == 4) {
                            i.clip && i.clip.parentNode.parentNode.removeChild(i.clip.parentNode);
                            var A = x("clipPath"),
                              T = x("rect");
                            (A.id = t.createUUID()),
                              x(T, {
                                x: S[0],
                                y: S[1],
                                width: S[2],
                                height: S[3],
                              }),
                              A.appendChild(T),
                              i.paper.defs.appendChild(A),
                              x(l, { "clip-path": "url(#" + A.id + ")" }),
                              (i.clip = T);
                          }
                          if (!g) {
                            var M = l.getAttribute("clip-path");
                            if (M) {
                              var E = t._g.doc.getElementById(M.replace(/(^url\(#|\)$)/g, c));
                              E && E.parentNode.removeChild(E), x(l, { "clip-path": c }), delete i.clip;
                            }
                          }
                          break;
                        case "path":
                          i.type == "path" &&
                            (x(l, {
                              d: g ? (u.path = t._pathToAbsolute(g)) : "M0,0",
                            }),
                            (i._.dirty = 1),
                            i._.arrows &&
                              ("startString" in i._.arrows && b(i, i._.arrows.startString),
                              "endString" in i._.arrows && b(i, i._.arrows.endString, 1)));
                          break;
                        case "width":
                          if ((l.setAttribute(d, g), (i._.dirty = 1), !u.fx)) break;
                          (d = "x"), (g = u.x);
                        case "x":
                          u.fx && (g = -u.x - (u.width || 0));
                        case "rx":
                          if (d == "rx" && i.type == "rect") break;
                        case "cx":
                          l.setAttribute(d, g), i.pattern && m(i), (i._.dirty = 1);
                          break;
                        case "height":
                          if ((l.setAttribute(d, g), (i._.dirty = 1), !u.fy)) break;
                          (d = "y"), (g = u.y);
                        case "y":
                          u.fy && (g = -u.y - (u.height || 0));
                        case "ry":
                          if (d == "ry" && i.type == "rect") break;
                        case "cy":
                          l.setAttribute(d, g), i.pattern && m(i), (i._.dirty = 1);
                          break;
                        case "r":
                          i.type == "rect" ? x(l, { rx: g, ry: g }) : l.setAttribute(d, g), (i._.dirty = 1);
                          break;
                        case "src":
                          i.type == "image" && l.setAttributeNS(p, "href", g);
                          break;
                        case "stroke-width":
                          (i._.sx == 1 && i._.sy == 1) || (g /= s(o(i._.sx), o(i._.sy)) || 1),
                            l.setAttribute(d, g),
                            u["stroke-dasharray"] && w(i, u["stroke-dasharray"], a),
                            i._.arrows &&
                              ("startString" in i._.arrows && b(i, i._.arrows.startString),
                              "endString" in i._.arrows && b(i, i._.arrows.endString, 1));
                          break;
                        case "stroke-dasharray":
                          w(i, g, a);
                          break;
                        case "fill":
                          var N = r(g).match(t._ISURL);
                          if (N) {
                            A = x("pattern");
                            var L = x("image");
                            (A.id = t.createUUID()),
                              x(A, {
                                x: 0,
                                y: 0,
                                patternUnits: "userSpaceOnUse",
                                height: 1,
                                width: 1,
                              }),
                              x(L, { x: 0, y: 0, "xlink:href": N[1] }),
                              A.appendChild(L),
                              (function (e) {
                                t._preload(N[1], function () {
                                  var t = this.offsetWidth,
                                    r = this.offsetHeight;
                                  x(e, { width: t, height: r }), x(L, { width: t, height: r });
                                });
                              })(A),
                              i.paper.defs.appendChild(A),
                              x(l, { fill: "url(#" + A.id + ")" }),
                              (i.pattern = A),
                              i.pattern && m(i);
                            break;
                          }
                          var P = t.getRGB(g);
                          if (P.error) {
                            if ((i.type == "circle" || i.type == "ellipse" || r(g).charAt() != "r") && v(i, g)) {
                              if ("opacity" in u || "fill-opacity" in u) {
                                var z = t._g.doc.getElementById(l.getAttribute("fill").replace(/^url\(#|\)$/g, c));
                                if (z) {
                                  var F = z.getElementsByTagName("stop");
                                  x(F[F.length - 1], {
                                    "stop-opacity":
                                      ("opacity" in u ? u.opacity : 1) * ("fill-opacity" in u ? u["fill-opacity"] : 1),
                                  });
                                }
                              }
                              (u.gradient = g), (u.fill = "none");
                              break;
                            }
                          } else
                            delete a.gradient,
                              delete u.gradient,
                              !t.is(u.opacity, "undefined") &&
                                t.is(a.opacity, "undefined") &&
                                x(l, { opacity: u.opacity }),
                              !t.is(u["fill-opacity"], "undefined") &&
                                t.is(a["fill-opacity"], "undefined") &&
                                x(l, { "fill-opacity": u["fill-opacity"] });
                          P[e]("opacity") &&
                            x(l, {
                              "fill-opacity": P.opacity > 1 ? P.opacity / 100 : P.opacity,
                            });
                        case "stroke":
                          (P = t.getRGB(g)),
                            l.setAttribute(d, P.hex),
                            d == "stroke" &&
                              P[e]("opacity") &&
                              x(l, {
                                "stroke-opacity": P.opacity > 1 ? P.opacity / 100 : P.opacity,
                              }),
                            d == "stroke" &&
                              i._.arrows &&
                              ("startString" in i._.arrows && b(i, i._.arrows.startString),
                              "endString" in i._.arrows && b(i, i._.arrows.endString, 1));
                          break;
                        case "gradient":
                          (i.type == "circle" || i.type == "ellipse" || r(g).charAt() != "r") && v(i, g);
                          break;
                        case "opacity":
                          u.gradient && !u[e]("stroke-opacity") && x(l, { "stroke-opacity": g > 1 ? g / 100 : g });
                        case "fill-opacity":
                          if (u.gradient) {
                            (z = t._g.doc.getElementById(l.getAttribute("fill").replace(/^url\(#|\)$/g, c))) &&
                              ((F = z.getElementsByTagName("stop")), x(F[F.length - 1], { "stop-opacity": g }));
                            break;
                          }
                        default:
                          d == "font-size" && (g = n(g, 10) + "px");
                          var R = d.replace(/(\-.)/g, function (t) {
                            return t.substring(1).toUpperCase();
                          });
                          (l.style[R] = g), (i._.dirty = 1), l.setAttribute(d, g);
                      }
                    }
                  B(i, a), (l.style.visibility = f);
                },
                B = function (i, a) {
                  if (
                    i.type == "text" &&
                    (a[e]("text") || a[e]("font") || a[e]("font-size") || a[e]("x") || a[e]("y"))
                  ) {
                    var s = i.attrs,
                      o = i.node,
                      l = o.firstChild
                        ? n(t._g.doc.defaultView.getComputedStyle(o.firstChild, c).getPropertyValue("font-size"), 10)
                        : 10;
                    if (a[e]("text")) {
                      for (s.text = a.text; o.firstChild; ) o.removeChild(o.firstChild);
                      for (var h, u = r(a.text).split("\n"), f = [], p = 0, d = u.length; p < d; p++)
                        (h = x("tspan")),
                          p && x(h, { dy: 1.2 * l, x: s.x }),
                          h.appendChild(t._g.doc.createTextNode(u[p])),
                          o.appendChild(h),
                          (f[p] = h);
                    } else
                      for (p = 0, d = (f = o.getElementsByTagName("tspan")).length; p < d; p++)
                        p ? x(f[p], { dy: 1.2 * l, x: s.x }) : x(f[0], { dy: 0 });
                    x(o, { x: s.x, y: s.y }), (i._.dirty = 1);
                    var g = i._getBBox(),
                      v = s.y - (g.y + g.height / 2);
                    v && t.is(v, "finite") && x(f[0], { dy: v });
                  }
                },
                C = function (t) {
                  return t.parentNode && t.parentNode.tagName.toLowerCase() === "a" ? t.parentNode : t;
                },
                S = function (e, r) {
                  (this[0] = this.node = e),
                    (e.raphael = !0),
                    (this.id = ("0000" + ((Math.random() * Math.pow(36, 5)) << 0).toString(36)).slice(-5)),
                    (e.raphaelid = this.id),
                    (this.matrix = t.matrix()),
                    (this.realPath = null),
                    (this.paper = r),
                    (this.attrs = this.attrs || {}),
                    (this._ = {
                      transform: [],
                      sx: 1,
                      sy: 1,
                      deg: 0,
                      dx: 0,
                      dy: 0,
                      dirty: 1,
                    }),
                    !r.bottom && (r.bottom = this),
                    (this.prev = r.top),
                    r.top && (r.top.next = this),
                    (r.top = this),
                    (this.next = null);
                },
                A = t.el;
              (S.prototype = A),
                (A.constructor = S),
                (t._engine.path = function (t, e) {
                  var r = x("path");
                  e.canvas && e.canvas.appendChild(r);
                  var i = new S(r, e);
                  return (i.type = "path"), k(i, { fill: "none", stroke: "#000", path: t }), i;
                }),
                (A.rotate = function (t, e, n) {
                  if (this.removed) return this;
                  if (
                    ((t = r(t).split(h)).length - 1 && ((e = i(t[1])), (n = i(t[2]))),
                    (t = i(t[0])),
                    n == null && (e = n),
                    e == null || n == null)
                  ) {
                    var a = this.getBBox(1);
                    (e = a.x + a.width / 2), (n = a.y + a.height / 2);
                  }
                  return this.transform(this._.transform.concat([["r", t, e, n]])), this;
                }),
                (A.scale = function (t, e, n, a) {
                  if (this.removed) return this;
                  if (
                    ((t = r(t).split(h)).length - 1 && ((e = i(t[1])), (n = i(t[2])), (a = i(t[3]))),
                    (t = i(t[0])),
                    e == null && (e = t),
                    a == null && (n = a),
                    n == null || a == null)
                  )
                    var s = this.getBBox(1);
                  return (
                    (n = n == null ? s.x + s.width / 2 : n),
                    (a = a == null ? s.y + s.height / 2 : a),
                    this.transform(this._.transform.concat([["s", t, e, n, a]])),
                    this
                  );
                }),
                (A.translate = function (t, e) {
                  return this.removed
                    ? this
                    : ((t = r(t).split(h)).length - 1 && (e = i(t[1])),
                      (t = i(t[0]) || 0),
                      (e = +e || 0),
                      this.transform(this._.transform.concat([["t", t, e]])),
                      this);
                }),
                (A.transform = function (r) {
                  var i = this._;
                  if (r == null) return i.transform;
                  if (
                    (t._extractTransform(this, r),
                    this.clip && x(this.clip, { transform: this.matrix.invert() }),
                    this.pattern && m(this),
                    this.node && x(this.node, { transform: this.matrix }),
                    i.sx != 1 || i.sy != 1)
                  ) {
                    var n = this.attrs[e]("stroke-width") ? this.attrs["stroke-width"] : 1;
                    this.attr({ "stroke-width": n });
                  }
                  return this;
                }),
                (A.hide = function () {
                  return this.removed || (this.node.style.display = "none"), this;
                }),
                (A.show = function () {
                  return this.removed || (this.node.style.display = ""), this;
                }),
                (A.remove = function () {
                  var e = C(this.node);
                  if (!this.removed && e.parentNode) {
                    var r = this.paper;
                    for (var i in (r.__set__ && r.__set__.exclude(this),
                    u.unbind("raphael.*.*." + this.id),
                    this.gradient && r.defs.removeChild(this.gradient),
                    t._tear(this, r),
                    e.parentNode.removeChild(e),
                    this.removeData(),
                    this))
                      this[i] = typeof this[i] == "function" ? t._removedFactory(i) : null;
                    this.removed = !0;
                  }
                }),
                (A._getBBox = function () {
                  if (this.node.style.display == "none") {
                    this.show();
                    var t = !0;
                  }
                  var e,
                    r = !1;
                  this.paper.canvas.parentElement
                    ? (e = this.paper.canvas.parentElement.style)
                    : this.paper.canvas.parentNode && (e = this.paper.canvas.parentNode.style),
                    e && e.display == "none" && ((r = !0), (e.display = ""));
                  var i = {};
                  try {
                    i = this.node.getBBox();
                  } catch (t) {
                    i = {
                      x: this.node.clientLeft,
                      y: this.node.clientTop,
                      width: this.node.clientWidth,
                      height: this.node.clientHeight,
                    };
                  } finally {
                    (i = i || {}), r && (e.display = "none");
                  }
                  return t && this.hide(), i;
                }),
                (A.attr = function (r, i) {
                  if (this.removed) return this;
                  if (r == null) {
                    var n = {};
                    for (var a in this.attrs) this.attrs[e](a) && (n[a] = this.attrs[a]);
                    return (
                      n.gradient && n.fill == "none" && (n.fill = n.gradient) && delete n.gradient,
                      (n.transform = this._.transform),
                      n
                    );
                  }
                  if (i == null && t.is(r, "string")) {
                    if (r == "fill" && this.attrs.fill == "none" && this.attrs.gradient) return this.attrs.gradient;
                    if (r == "transform") return this._.transform;
                    for (var s = r.split(h), o = {}, l = 0, c = s.length; l < c; l++)
                      (r = s[l]) in this.attrs
                        ? (o[r] = this.attrs[r])
                        : t.is(this.paper.customAttributes[r], "function")
                        ? (o[r] = this.paper.customAttributes[r].def)
                        : (o[r] = t._availableAttrs[r]);
                    return c - 1 ? o : o[s[0]];
                  }
                  if (i == null && t.is(r, "array")) {
                    for (o = {}, l = 0, c = r.length; l < c; l++) o[r[l]] = this.attr(r[l]);
                    return o;
                  }
                  if (i != null) {
                    var f = {};
                    f[r] = i;
                  } else r != null && t.is(r, "object") && (f = r);
                  for (var p in f) u("raphael.attr." + p + "." + this.id, this, f[p]);
                  for (p in this.paper.customAttributes)
                    if (
                      this.paper.customAttributes[e](p) &&
                      f[e](p) &&
                      t.is(this.paper.customAttributes[p], "function")
                    ) {
                      var d = this.paper.customAttributes[p].apply(this, [].concat(f[p]));
                      for (var g in ((this.attrs[p] = f[p]), d)) d[e](g) && (f[g] = d[g]);
                    }
                  return k(this, f), this;
                }),
                (A.toFront = function () {
                  if (this.removed) return this;
                  var e = C(this.node);
                  e.parentNode.appendChild(e);
                  var r = this.paper;
                  return r.top != this && t._tofront(this, r), this;
                }),
                (A.toBack = function () {
                  if (this.removed) return this;
                  var e = C(this.node),
                    r = e.parentNode;
                  r.insertBefore(e, r.firstChild), t._toback(this, this.paper);
                  this.paper;
                  return this;
                }),
                (A.insertAfter = function (e) {
                  if (this.removed || !e) return this;
                  var r = C(this.node),
                    i = C(e.node || e[e.length - 1].node);
                  return (
                    i.nextSibling ? i.parentNode.insertBefore(r, i.nextSibling) : i.parentNode.appendChild(r),
                    t._insertafter(this, e, this.paper),
                    this
                  );
                }),
                (A.insertBefore = function (e) {
                  if (this.removed || !e) return this;
                  var r = C(this.node),
                    i = C(e.node || e[0].node);
                  return i.parentNode.insertBefore(r, i), t._insertbefore(this, e, this.paper), this;
                }),
                (A.blur = function (e) {
                  var r = this;
                  if (+e != 0) {
                    var i = x("filter"),
                      n = x("feGaussianBlur");
                    (r.attrs.blur = e),
                      (i.id = t.createUUID()),
                      x(n, { stdDeviation: +e || 1.5 }),
                      i.appendChild(n),
                      r.paper.defs.appendChild(i),
                      (r._blur = i),
                      x(r.node, { filter: "url(#" + i.id + ")" });
                  } else
                    r._blur && (r._blur.parentNode.removeChild(r._blur), delete r._blur, delete r.attrs.blur),
                      r.node.removeAttribute("filter");
                  return r;
                }),
                (t._engine.circle = function (t, e, r, i) {
                  var n = x("circle");
                  t.canvas && t.canvas.appendChild(n);
                  var a = new S(n, t);
                  return (
                    (a.attrs = {
                      cx: e,
                      cy: r,
                      r: i,
                      fill: "none",
                      stroke: "#000",
                    }),
                    (a.type = "circle"),
                    x(n, a.attrs),
                    a
                  );
                }),
                (t._engine.rect = function (t, e, r, i, n, a) {
                  var s = x("rect");
                  t.canvas && t.canvas.appendChild(s);
                  var o = new S(s, t);
                  return (
                    (o.attrs = {
                      x: e,
                      y: r,
                      width: i,
                      height: n,
                      rx: a || 0,
                      ry: a || 0,
                      fill: "none",
                      stroke: "#000",
                    }),
                    (o.type = "rect"),
                    x(s, o.attrs),
                    o
                  );
                }),
                (t._engine.ellipse = function (t, e, r, i, n) {
                  var a = x("ellipse");
                  t.canvas && t.canvas.appendChild(a);
                  var s = new S(a, t);
                  return (
                    (s.attrs = {
                      cx: e,
                      cy: r,
                      rx: i,
                      ry: n,
                      fill: "none",
                      stroke: "#000",
                    }),
                    (s.type = "ellipse"),
                    x(a, s.attrs),
                    s
                  );
                }),
                (t._engine.image = function (t, e, r, i, n, a) {
                  var s = x("image");
                  x(s, {
                    x: r,
                    y: i,
                    width: n,
                    height: a,
                    preserveAspectRatio: "none",
                  }),
                    s.setAttributeNS(p, "href", e),
                    t.canvas && t.canvas.appendChild(s);
                  var o = new S(s, t);
                  return (o.attrs = { x: r, y: i, width: n, height: a, src: e }), (o.type = "image"), o;
                }),
                (t._engine.text = function (e, r, i, n) {
                  var a = x("text");
                  e.canvas && e.canvas.appendChild(a);
                  var s = new S(a, e);
                  return (
                    (s.attrs = {
                      x: r,
                      y: i,
                      "text-anchor": "middle",
                      text: n,
                      "font-family": t._availableAttrs["font-family"],
                      "font-size": t._availableAttrs["font-size"],
                      stroke: "none",
                      fill: "#000",
                    }),
                    (s.type = "text"),
                    k(s, s.attrs),
                    s
                  );
                }),
                (t._engine.setSize = function (t, e) {
                  return (
                    (this.width = t || this.width),
                    (this.height = e || this.height),
                    this.canvas.setAttribute("width", this.width),
                    this.canvas.setAttribute("height", this.height),
                    this._viewBox && this.setViewBox.apply(this, this._viewBox),
                    this
                  );
                }),
                (t._engine.create = function () {
                  var e = t._getContainer.apply(0, arguments),
                    r = e && e.container,
                    i = e.x,
                    n = e.y,
                    a = e.width,
                    s = e.height;
                  if (!r) throw new Error("SVG container not found.");
                  var o,
                    l = x("svg"),
                    h = "overflow:hidden;";
                  return (
                    (i = i || 0),
                    (n = n || 0),
                    (a = a || 512),
                    x(l, {
                      height: (s = s || 342),
                      version: 1.1,
                      width: a,
                      xmlns: "http://www.w3.org/2000/svg",
                      "xmlns:xlink": "http://www.w3.org/1999/xlink",
                    }),
                    r == 1
                      ? ((l.style.cssText = h + "position:absolute;left:" + i + "px;top:" + n + "px"),
                        t._g.doc.body.appendChild(l),
                        (o = 1))
                      : ((l.style.cssText = h + "position:relative"),
                        r.firstChild ? r.insertBefore(l, r.firstChild) : r.appendChild(l)),
                    ((r = new t._Paper()).width = a),
                    (r.height = s),
                    (r.canvas = l),
                    r.clear(),
                    (r._left = r._top = 0),
                    o && (r.renderfix = function () {}),
                    r.renderfix(),
                    r
                  );
                }),
                (t._engine.setViewBox = function (t, e, r, i, n) {
                  u("raphael.setViewBox", this, this._viewBox, [t, e, r, i, n]);
                  var a,
                    o,
                    l = this.getSize(),
                    h = s(r / l.width, i / l.height),
                    c = this.top,
                    p = n ? "xMidYMid meet" : "xMinYMin";
                  for (
                    t == null
                      ? (this._vbSize && (h = 1), delete this._vbSize, (a = "0 0 " + this.width + f + this.height))
                      : ((this._vbSize = h), (a = t + f + e + f + r + f + i)),
                      x(this.canvas, { viewBox: a, preserveAspectRatio: p });
                    h && c;

                  )
                    (o = "stroke-width" in c.attrs ? c.attrs["stroke-width"] : 1),
                      c.attr({ "stroke-width": o }),
                      (c._.dirty = 1),
                      (c._.dirtyT = 1),
                      (c = c.prev);
                  return (this._viewBox = [t, e, r, i, !!n]), this;
                }),
                (t.prototype.renderfix = function () {
                  var t,
                    e = this.canvas,
                    r = e.style;
                  try {
                    t = e.getScreenCTM() || e.createSVGMatrix();
                  } catch (r) {
                    t = e.createSVGMatrix();
                  }
                  var i = -t.e % 1,
                    n = -t.f % 1;
                  (i || n) &&
                    (i && ((this._left = (this._left + i) % 1), (r.left = this._left + "px")),
                    n && ((this._top = (this._top + n) % 1), (r.top = this._top + "px")));
                }),
                (t.prototype.clear = function () {
                  t.eve("raphael.clear", this);
                  for (var e = this.canvas; e.firstChild; ) e.removeChild(e.firstChild);
                  (this.bottom = this.top = null),
                    (this.desc = x("desc")).appendChild(t._g.doc.createTextNode("Created with Raphaël " + t.version)),
                    e.appendChild(this.desc),
                    e.appendChild((this.defs = x("defs")));
                }),
                (t.prototype.remove = function () {
                  for (var e in (u("raphael.remove", this),
                  this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas),
                  this))
                    this[e] = typeof this[e] == "function" ? t._removedFactory(e) : null;
                });
              var T = t.st;
              for (var M in A)
                A[e](M) &&
                  !T[e](M) &&
                  (T[M] = (function (t) {
                    return function () {
                      var e = arguments;
                      return this.forEach(function (r) {
                        r[t].apply(r, e);
                      });
                    };
                  })(M));
            }
          }.apply(e, i)) || (t.exports = n);
    },
    function (t, e, r) {
      var i, n, a, s, o, l, h, u, c, f, p, d, g, x;
      (s = "hasOwnProperty"),
        (o = /[\.\/]/),
        (l = /\s*,\s*/),
        (h = function (t, e) {
          return t - e;
        }),
        (u = { n: {} }),
        (c = function () {
          for (var t = 0, e = this.length; t < e; t++) if (void 0 !== this[t]) return this[t];
        }),
        (f = function () {
          for (var t = this.length; --t; ) if (void 0 !== this[t]) return this[t];
        }),
        (p = Object.prototype.toString),
        (d = String),
        (g =
          Array.isArray ||
          function (t) {
            return t instanceof Array || p.call(t) == "[object Array]";
          }),
        ((x = function (t, e) {
          var r,
            i = a,
            s = Array.prototype.slice.call(arguments, 2),
            o = x.listeners(t),
            l = 0,
            u = [],
            p = {},
            d = [],
            g = n;
          (d.firstDefined = c), (d.lastDefined = f), (n = t), (a = 0);
          for (var v = 0, y = o.length; v < y; v++)
            "zIndex" in o[v] && (u.push(o[v].zIndex), o[v].zIndex < 0 && (p[o[v].zIndex] = o[v]));
          for (u.sort(h); u[l] < 0; ) if (((r = p[u[l++]]), d.push(r.apply(e, s)), a)) return (a = i), d;
          for (v = 0; v < y; v++)
            if ("zIndex" in (r = o[v]))
              if (r.zIndex == u[l]) {
                if ((d.push(r.apply(e, s)), a)) break;
                do {
                  if (((r = p[u[++l]]) && d.push(r.apply(e, s)), a)) break;
                } while (r);
              } else p[r.zIndex] = r;
            else if ((d.push(r.apply(e, s)), a)) break;
          return (a = i), (n = g), d;
        })._events = u),
        (x.listeners = function (t) {
          var e,
            r,
            i,
            n,
            a,
            s,
            l,
            h,
            c = g(t) ? t : t.split(o),
            f = u,
            p = [f],
            d = [];
          for (n = 0, a = c.length; n < a; n++) {
            for (h = [], s = 0, l = p.length; s < l; s++)
              for (r = [(f = p[s].n)[c[n]], f["*"]], i = 2; i--; ) (e = r[i]) && (h.push(e), (d = d.concat(e.f || [])));
            p = h;
          }
          return d;
        }),
        (x.separator = function (t) {
          t ? ((t = "[" + (t = d(t).replace(/(?=[\.\^\]\[\-])/g, "\\")) + "]"), (o = new RegExp(t))) : (o = /[\.\/]/);
        }),
        (x.on = function (t, e) {
          if (typeof e != "function") return function () {};
          for (var r = g(t) ? (g(t[0]) ? t : [t]) : d(t).split(l), i = 0, n = r.length; i < n; i++)
            !(function (t) {
              for (var r, i = g(t) ? t : d(t).split(o), n = u, a = 0, s = i.length; a < s; a++)
                n = ((n = n.n).hasOwnProperty(i[a]) && n[i[a]]) || (n[i[a]] = { n: {} });
              for (n.f = n.f || [], a = 0, s = n.f.length; a < s; a++)
                if (n.f[a] == e) {
                  r = !0;
                  break;
                }
              !r && n.f.push(e);
            })(r[i]);
          return function (t) {
            +t == +t && (e.zIndex = +t);
          };
        }),
        (x.f = function (t) {
          var e = [].slice.call(arguments, 1);
          return function () {
            x.apply(null, [t, null].concat(e).concat([].slice.call(arguments, 0)));
          };
        }),
        (x.stop = function () {
          a = 1;
        }),
        (x.nt = function (t) {
          var e = g(n) ? n.join(".") : n;
          return t ? new RegExp("(?:\\.|\\/|^)" + t + "(?:\\.|\\/|$)").test(e) : e;
        }),
        (x.nts = function () {
          return g(n) ? n : n.split(o);
        }),
        (x.off = x.unbind =
          function (t, e) {
            if (t) {
              var r = g(t) ? (g(t[0]) ? t : [t]) : d(t).split(l);
              if (r.length > 1) for (var i = 0, n = r.length; i < n; i++) x.off(r[i], e);
              else {
                r = g(t) ? t : d(t).split(o);
                var a,
                  h,
                  c,
                  f,
                  p,
                  v = [u];
                for (i = 0, n = r.length; i < n; i++)
                  for (f = 0; f < v.length; f += c.length - 2) {
                    if (((c = [f, 1]), (a = v[f].n), r[i] != "*")) a[r[i]] && c.push(a[r[i]]);
                    else for (h in a) a[s](h) && c.push(a[h]);
                    v.splice.apply(v, c);
                  }
                for (i = 0, n = v.length; i < n; i++)
                  for (a = v[i]; a.n; ) {
                    if (e) {
                      if (a.f) {
                        for (f = 0, p = a.f.length; f < p; f++)
                          if (a.f[f] == e) {
                            a.f.splice(f, 1);
                            break;
                          }
                        !a.f.length && delete a.f;
                      }
                      for (h in a.n)
                        if (a.n[s](h) && a.n[h].f) {
                          var y = a.n[h].f;
                          for (f = 0, p = y.length; f < p; f++)
                            if (y[f] == e) {
                              y.splice(f, 1);
                              break;
                            }
                          !y.length && delete a.n[h].f;
                        }
                    } else for (h in (delete a.f, a.n)) a.n[s](h) && a.n[h].f && delete a.n[h].f;
                    a = a.n;
                  }
              }
            } else x._events = u = { n: {} };
          }),
        (x.once = function (t, e) {
          var r = function () {
            return x.off(t, r), e.apply(this, arguments);
          };
          return x.on(t, r);
        }),
        (x.version = "0.5.0"),
        (x.toString = function () {
          return "You are running Eve 0.5.0";
        }),
        void 0 !== t && t.exports
          ? (t.exports = x)
          : void 0 ===
              (i = function () {
                return x;
              }.apply(e, [])) || (t.exports = i);
    },
    function (t, e, r) {
      var i, n;
      (i = [r(0), r(2), r(1)]),
        void 0 ===
          (n = function (t) {
            return t;
          }.apply(e, i)) || (t.exports = n);
    },
  ]);
});